try to do better
This commit is contained in:
84
frontend/src/services/familyService.ts
Normal file
84
frontend/src/services/familyService.ts
Normal file
@@ -0,0 +1,84 @@
|
||||
import { familyApi } from '../api/client';
|
||||
import { Family, CreateFamilyRequest, CreateMyFamilyRequest, CreateMyFamilyResponse, VerifyFamilyPasswordRequest, FamilyMember } from '../types';
|
||||
import { handleApiError } from '../utils/errorHandler';
|
||||
|
||||
export const familyService = {
|
||||
async getAll(): Promise<Family[]> {
|
||||
try {
|
||||
const res = await familyApi.getAll();
|
||||
return res.data;
|
||||
} catch (error) {
|
||||
handleApiError(error);
|
||||
}
|
||||
},
|
||||
|
||||
async getById(id: number): Promise<Family> {
|
||||
try {
|
||||
const res = await familyApi.getById(id);
|
||||
return res.data;
|
||||
} catch (error) {
|
||||
handleApiError(error);
|
||||
}
|
||||
},
|
||||
|
||||
async create(data: CreateFamilyRequest): Promise<Family> {
|
||||
try {
|
||||
const res = await familyApi.create(data);
|
||||
return res.data;
|
||||
} catch (error) {
|
||||
handleApiError(error);
|
||||
}
|
||||
},
|
||||
|
||||
async createMyFamily(data: CreateMyFamilyRequest): Promise<CreateMyFamilyResponse> {
|
||||
try {
|
||||
const res = await familyApi.createMyFamily(data);
|
||||
return res.data;
|
||||
} catch (error) {
|
||||
handleApiError(error);
|
||||
}
|
||||
},
|
||||
|
||||
async update(id: number, data: { name: string }): Promise<Family> {
|
||||
try {
|
||||
const res = await familyApi.update(id, data);
|
||||
return res.data;
|
||||
} catch (error) {
|
||||
handleApiError(error);
|
||||
}
|
||||
},
|
||||
|
||||
async delete(id: number): Promise<void> {
|
||||
try {
|
||||
await familyApi.delete(id);
|
||||
} catch (error) {
|
||||
handleApiError(error);
|
||||
}
|
||||
},
|
||||
|
||||
async verifyPassword(id: number, data: VerifyFamilyPasswordRequest): Promise<boolean> {
|
||||
try {
|
||||
const res = await familyApi.verifyPassword(id, data);
|
||||
return res.data.valid;
|
||||
} catch (error) {
|
||||
handleApiError(error);
|
||||
}
|
||||
},
|
||||
|
||||
async getMembers(familyId: number): Promise<FamilyMember[]> {
|
||||
try {
|
||||
const res = await familyApi.getMembers(familyId);
|
||||
return res.data;
|
||||
} catch (error) {
|
||||
handleApiError(error);
|
||||
}
|
||||
},
|
||||
|
||||
formatMemberName(member: FamilyMember): string {
|
||||
return member.username || member.email || 'Unknown User';
|
||||
},
|
||||
|
||||
countAdmins(members: FamilyMember[]): number {
|
||||
return members.filter((m) => m.is_admin).length;
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user