| import { create } from "zustand"; |
| import type { ErrorClassification } from "@openhands/typescript-client"; |
|
|
| |
| |
| |
| |
| |
| export type ErrorMessageType = "connection" | "conversation"; |
|
|
| interface ErrorMessageState { |
| errorMessage: string | null; |
| errorType: ErrorMessageType | null; |
| |
| |
| |
| |
| |
| errorCode: string | null; |
| errorClassification: ErrorClassification | null; |
| } |
|
|
| interface ErrorMessageActions { |
| setErrorMessage: ( |
| message: string, |
| type?: ErrorMessageType, |
| code?: string | null, |
| classification?: ErrorClassification | null, |
| ) => void; |
| removeErrorMessage: () => void; |
| |
| clearConnectionError: () => void; |
| } |
|
|
| type ErrorMessageStore = ErrorMessageState & ErrorMessageActions; |
|
|
| const initialState: ErrorMessageState = { |
| errorMessage: null, |
| errorType: null, |
| errorCode: null, |
| errorClassification: null, |
| }; |
|
|
| export const useErrorMessageStore = create<ErrorMessageStore>((set) => ({ |
| ...initialState, |
|
|
| setErrorMessage: ( |
| message: string, |
| type: ErrorMessageType = "conversation", |
| code: string | null = null, |
| classification: ErrorClassification | null = null, |
| ) => |
| set(() => ({ |
| errorMessage: message, |
| errorType: type, |
| errorCode: code, |
| errorClassification: classification, |
| })), |
|
|
| removeErrorMessage: () => set(() => ({ ...initialState })), |
|
|
| clearConnectionError: () => |
| set((state) => |
| state.errorType === "connection" ? { ...initialState } : state, |
| ), |
| })); |
|
|