diff --git a/pos/src/lib/customer-api.ts b/pos/src/lib/customer-api.ts index a168899..d578c38 100644 --- a/pos/src/lib/customer-api.ts +++ b/pos/src/lib/customer-api.ts @@ -1,5 +1,6 @@ import { DOCTYPES } from '../data/doctypes'; import { db, call } from './frappe-sdk'; +import { handleApiError } from './error-handler'; export interface Customer { name: string; @@ -103,6 +104,7 @@ export async function searchCustomers(search: string, limit = 5) { return res.message || []; } catch (error) { console.error('Customer search error:', error); - throw error; + const errorMessage = handleApiError(error); + throw new Error(errorMessage); } } \ No newline at end of file diff --git a/pos/src/lib/error-handler.ts b/pos/src/lib/error-handler.ts new file mode 100644 index 0000000..e307a72 --- /dev/null +++ b/pos/src/lib/error-handler.ts @@ -0,0 +1,27 @@ +export interface ApiError { + message?: string; + exc_type?: string; + _server_messages?: string; +} + +export const handleApiError = (error: any): string => { + console.error("API Error:", error); + if (error?.response?.data?._server_messages) { + try { + const serverMessages = JSON.parse(error.response.data._server_messages); + const parsedMessage = JSON.parse(serverMessages[0]); + return parsedMessage.message || "Something went wrong"; + } catch { + return "Server error occurred"; + } + } + + if (error?.response?.data?.message) { + return error.response.data.message; + } + + if (error?.message) { + return error.message; + } + return "Unexpected error occurred. Please try again."; +}; diff --git a/pos/src/lib/payment-api.ts b/pos/src/lib/payment-api.ts index 4317146..365672b 100644 --- a/pos/src/lib/payment-api.ts +++ b/pos/src/lib/payment-api.ts @@ -1,4 +1,5 @@ import { call } from './frappe-sdk'; +import { handleApiError } from './error-handler'; interface PaymentMode { mode_of_payment: string; @@ -19,14 +20,13 @@ export const getPaymentModes = async (): Promise => { try { const response = await call.get("ury.ury_pos.api.getModeOfPayment"); - const paymentModes = response.message.map((mode:PaymentMode) => mode.mode_of_payment); - - // Cache in session storage + const paymentModes = response.message.map((mode: PaymentMode) => mode.mode_of_payment); sessionStorage.setItem('payment_modes', JSON.stringify(paymentModes)); - + return paymentModes; } catch (error) { console.error('Failed to fetch payment modes:', error); - throw error; + const errorMessage = handleApiError(error); + throw new Error(errorMessage); } }; \ No newline at end of file