Files
family_budget/frontend/src/services/familyService.ts
Arrelin 5bcabb2736 revert 30b1c97043
revert Merge pull request 'try to do better' (#18) from refactor/frontend-code-quality into master

Reviewed-on: http://192.168.31.100:3847/Arrelin/family_budget/pulls/18
2026-01-29 12:38:21 +00:00

85 lines
2.1 KiB
TypeScript

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;
},
};