import { __ } from '@wordpress/i18n'; import { ajaxService } from './ajax.service'; import { ExpertInviteRequestDto, SignupRequestDto } from './api.service.types'; class ApiService { inviteOwner(locationId: number, expertId: number, payload: ExpertInviteRequestDto): Promise { return ajaxService.post('ttsbs_invite_location_owner', { location_id: locationId, expert_id: expertId, first_name: payload.firstName, email: payload.email, }); } chooseLocation(locationId: string): Promise<{ redirect_url: string }> { return ajaxService.post('ttsbs_save_preferred_location', { location_id: locationId }); } getLocationAuthLink(locationId: number): Promise<{ authLink: string }> { return ajaxService.post('ttsbs_get_location_auth_link', { location_id: locationId }); } getUserAuthLink(): Promise<{ authLink: string }> { return ajaxService.post('ttsbs_get_user_auth_link', {}); } getServiceCategories(forceRefresh: boolean): Promise<{ categories: unknown[] }> { return ajaxService.post('ttsbs_get_service_categories', { force_refresh: forceRefresh }); } logout(): Promise<{ redirect_url: string }> { return ajaxService.post('ttsbs_logout', {}); } login(email: string, password: string): Promise { return ajaxService.post('ttsbs_login', { email, password, }); } signup(payload: SignupRequestDto): Promise { return ajaxService.post('ttsbs_signup', payload); } getErrorMessage(error: any): string | string[] { if (error?.message) { return error.message; } return __('Request failed. Please try again.', 'timetailor-salon-booking'); } } export const apiService = new ApiService();