Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion pos/src/lib/customer-api.ts
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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);
}
}
27 changes: 27 additions & 0 deletions pos/src/lib/error-handler.ts
Original file line number Diff line number Diff line change
@@ -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.";
};
10 changes: 5 additions & 5 deletions pos/src/lib/payment-api.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { call } from './frappe-sdk';
import { handleApiError } from './error-handler';

interface PaymentMode {
mode_of_payment: string;
Expand All @@ -19,14 +20,13 @@ export const getPaymentModes = async (): Promise<string[]> => {
try {
const response = await call.get<PaymentModeResponse>("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);
}
};
Loading