Initial commit
This commit is contained in:
71
flutter_app/lib/services/family_service.dart
Normal file
71
flutter_app/lib/services/family_service.dart
Normal file
@@ -0,0 +1,71 @@
|
||||
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);
|
||||
}
|
||||
Reference in New Issue
Block a user