import { baseApi } from '../../../services/api/baseApi'; import type { UserProfile, AccountSummary } from '../../../types/app'; import { demoUser, demoAccounts } from '../../../constants/mockData'; import { resolveWithMock } from '../../../services/api/serviceHelpers'; export const profileApi = baseApi.injectEndpoints({ endpoints: (builder) => ({ getProfile: builder.query({ queryFn: () => resolveWithMock({ mockData: demoUser, request: async () => demoUser, }), providesTags: ['Profile'], }), updateProfile: builder.mutation>({ queryFn: (updates) => { const updated = { ...demoUser, ...updates }; return resolveWithMock({ mockData: updated, request: async () => updated, }); }, invalidatesTags: ['Profile'], }), getLinkedAccounts: builder.query({ queryFn: () => resolveWithMock({ mockData: demoAccounts, request: async () => demoAccounts, }), providesTags: ['Accounts'], }), addLinkedAccount: builder.mutation>({ queryFn: (accountData) => { const newAccount = { id: `acc_${Math.random().toString(36).substr(2, 9)}`, type: 'Savings', accountHolder: demoUser.firstName + ' ' + demoUser.lastName, branch: 'Mumbai Main', maskedNumber: `XXXX ${accountData.maskedNumber?.slice(-4) || '9999'}`, availableBalance: 0, currentBalance: 0, currency: 'INR', ...accountData, } as AccountSummary; return resolveWithMock({ mockData: newAccount, request: async () => newAccount, }); }, invalidatesTags: ['Accounts'], }), removeLinkedAccount: builder.mutation({ queryFn: () => resolveWithMock({ mockData: undefined as any, request: async () => undefined as any, }), invalidatesTags: ['Accounts'], }), }), }); export const { useGetProfileQuery, useUpdateProfileMutation, useGetLinkedAccountsQuery, useAddLinkedAccountMutation, useRemoveLinkedAccountMutation, } = profileApi;