feat(errors): add centralized exception handling
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
*/
|
||||
import { setup, assign } from "xstate";
|
||||
|
||||
import { ExceptionHandler } from "@/core/errors";
|
||||
import type { AuthProvider } from "@/lib/auth/auth_platform";
|
||||
|
||||
import { AuthState, initialState } from "./auth-state";
|
||||
@@ -23,6 +24,9 @@ export type { AuthState } from "./auth-state";
|
||||
export { initialState } from "./auth-state";
|
||||
export type { AuthEvent } from "./auth-events";
|
||||
|
||||
const toAuthErrorMessage = (error: unknown): string =>
|
||||
ExceptionHandler.message(error);
|
||||
|
||||
// ============================================================
|
||||
// Machine
|
||||
//
|
||||
@@ -119,8 +123,7 @@ export const authMachine = setup({
|
||||
onError: {
|
||||
target: "idle",
|
||||
actions: assign({
|
||||
errorMessage: ({ event }) =>
|
||||
event.error instanceof Error ? event.error.message : String(event.error),
|
||||
errorMessage: ({ event }) => toAuthErrorMessage(event.error),
|
||||
hasInitialized: true,
|
||||
}),
|
||||
},
|
||||
@@ -145,8 +148,7 @@ export const authMachine = setup({
|
||||
onError: {
|
||||
target: "idle",
|
||||
actions: assign({
|
||||
errorMessage: ({ event }) =>
|
||||
event.error instanceof Error ? event.error.message : String(event.error),
|
||||
errorMessage: ({ event }) => toAuthErrorMessage(event.error),
|
||||
hasInitialized: true,
|
||||
}),
|
||||
},
|
||||
@@ -174,8 +176,7 @@ export const authMachine = setup({
|
||||
onError: {
|
||||
target: "idle",
|
||||
actions: assign({
|
||||
errorMessage: ({ event }) =>
|
||||
event.error instanceof Error ? event.error.message : String(event.error),
|
||||
errorMessage: ({ event }) => toAuthErrorMessage(event.error),
|
||||
hasInitialized: true,
|
||||
}),
|
||||
},
|
||||
@@ -208,8 +209,7 @@ export const authMachine = setup({
|
||||
onError: {
|
||||
target: "idle",
|
||||
actions: assign({
|
||||
errorMessage: ({ event }) =>
|
||||
event.error instanceof Error ? event.error.message : String(event.error),
|
||||
errorMessage: ({ event }) => toAuthErrorMessage(event.error),
|
||||
hasInitialized: true,
|
||||
}),
|
||||
},
|
||||
@@ -231,8 +231,7 @@ export const authMachine = setup({
|
||||
onError: {
|
||||
target: "idle",
|
||||
actions: assign({
|
||||
errorMessage: ({ event }) =>
|
||||
event.error instanceof Error ? event.error.message : String(event.error),
|
||||
errorMessage: ({ event }) => toAuthErrorMessage(event.error),
|
||||
}),
|
||||
},
|
||||
},
|
||||
@@ -254,8 +253,7 @@ export const authMachine = setup({
|
||||
actions: assign(({ event }) => ({
|
||||
...initialState,
|
||||
hasInitialized: true,
|
||||
errorMessage:
|
||||
event.error instanceof Error ? event.error.message : String(event.error),
|
||||
errorMessage: toAuthErrorMessage(event.error),
|
||||
})),
|
||||
},
|
||||
},
|
||||
@@ -281,8 +279,7 @@ export const authMachine = setup({
|
||||
onError: {
|
||||
target: "idle",
|
||||
actions: assign({
|
||||
errorMessage: ({ event }) =>
|
||||
event.error instanceof Error ? event.error.message : String(event.error),
|
||||
errorMessage: ({ event }) => toAuthErrorMessage(event.error),
|
||||
hasInitialized: true,
|
||||
}),
|
||||
},
|
||||
@@ -309,8 +306,7 @@ export const authMachine = setup({
|
||||
onError: {
|
||||
target: "idle",
|
||||
actions: assign({
|
||||
errorMessage: ({ event }) =>
|
||||
event.error instanceof Error ? event.error.message : String(event.error),
|
||||
errorMessage: ({ event }) => toAuthErrorMessage(event.error),
|
||||
hasInitialized: true,
|
||||
}),
|
||||
},
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { fromCallback, fromPromise } from "xstate";
|
||||
|
||||
import { ExceptionHandler } from "@/core/errors";
|
||||
import { MessageQueue } from "@/core/net/message-queue";
|
||||
import type { ChatSendResponse } from "@/data/dto/chat";
|
||||
import { getChatRepository } from "@/data/repositories/chat_repository";
|
||||
@@ -131,8 +132,7 @@ function createMessageQueueActor(
|
||||
const output = await sendMessageViaHttp(content);
|
||||
sendBack({ type: "ChatQueuedHttpDone", output });
|
||||
} catch (error) {
|
||||
const errorMessage =
|
||||
error instanceof Error ? error.message : "Message send failed";
|
||||
const errorMessage = ExceptionHandler.message(error);
|
||||
log.error("[chat-machine] message queue send failed", {
|
||||
error,
|
||||
});
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { ExceptionHandler } from "@/core/errors";
|
||||
import { PaymentPlan, type PaymentPlansResponse } from "@/data/dto/payment";
|
||||
|
||||
import type { PaymentState } from "./payment-state";
|
||||
@@ -7,7 +8,7 @@ export const PAYMENT_TIMEOUT_ERROR_MESSAGE =
|
||||
"Payment timed out. Please try again.";
|
||||
|
||||
export function toPaymentErrorMessage(error: unknown): string {
|
||||
return error instanceof Error ? error.message : String(error);
|
||||
return ExceptionHandler.message(error);
|
||||
}
|
||||
|
||||
export function hasOrderPollingTimedOut(
|
||||
|
||||
Reference in New Issue
Block a user