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
85 lines
2.1 KiB
TypeScript
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;
|
|
},
|
|
};
|