Files
bini-google-tv/flutter_app/lib/services/family_service.dart
2026-01-24 19:41:19 +09:00

72 lines
2.1 KiB
Dart

import "../config/api_config.dart";
import "../models/family_member.dart";
import "api_client.dart";
import "mock_data.dart";
class FamilyService {
final ApiClient _client;
FamilyService(this._client);
Future<List<FamilyMember>> fetchFamilyMembers() async {
if (ApiConfig.useMockData) {
return List<FamilyMember>.from(MockDataStore.familyMembers);
}
final data = await _client.getList(ApiConfig.family);
return data
.map((item) => FamilyMember.fromJson(item as Map<String, dynamic>))
.toList();
}
Future<FamilyMember> createFamilyMember(FamilyMember member) async {
if (ApiConfig.useMockData) {
final created = FamilyMember(
id: "family-${DateTime.now().millisecondsSinceEpoch}",
name: member.name,
emoji: member.emoji,
color: member.color,
order: member.order,
);
MockDataStore.familyMembers.add(created);
return created;
}
final data = await _client.post(ApiConfig.family, member.toJson());
return FamilyMember.fromJson(data);
}
Future<FamilyMember> updateFamilyMember(FamilyMember member) async {
if (ApiConfig.useMockData) {
final index = MockDataStore.familyMembers.indexWhere(
(item) => item.id == member.id,
);
if (index != -1) {
MockDataStore.familyMembers[index] = member;
}
return member;
}
final data = await _client.put(
"${ApiConfig.family}/${member.id}",
member.toJson(),
);
return FamilyMember.fromJson(data);
}
Future<void> deleteFamilyMember(String id) async {
if (ApiConfig.useMockData) {
MockDataStore.familyMembers.removeWhere((item) => item.id == id);
return;
}
await _client.delete("${ApiConfig.family}/$id");
}
Future<List<FamilyMember>> fetchMembers() => fetchFamilyMembers();
Future<FamilyMember> createMember(FamilyMember member) =>
createFamilyMember(member);
Future<FamilyMember> updateMember(FamilyMember member) =>
updateFamilyMember(member);
Future<void> deleteMember(String id) => deleteFamilyMember(id);
}