From 820865ac795cd7b8d1dbf1a86c184572720977f8 Mon Sep 17 00:00:00 2001 From: SrJuggernaut Date: Tue, 6 Feb 2024 20:14:59 -0600 Subject: [PATCH] feat: useManageErrors hook --- src/hooks/useManageError.ts | 41 +++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/hooks/useManageError.ts diff --git a/src/hooks/useManageError.ts b/src/hooks/useManageError.ts new file mode 100644 index 0000000..6ab32be --- /dev/null +++ b/src/hooks/useManageError.ts @@ -0,0 +1,41 @@ +import { addAlert } from '@/state/feedbackSlice' +import { nanoid } from '@reduxjs/toolkit' +import { AppwriteException } from 'appwrite' +import { useAppDispatch } from './useAppDispatch' + +type ManageError = (error: unknown, errorTitle: string, defaultMessage?: string, severity?: 'error') => void + +type UseManageError = () => { + manageError: ManageError +} + +const useManageError: UseManageError = () => { + const dispatch = useAppDispatch() + const manageError: ManageError = (error, errorTitle, defaultMessage, severity): void => { + if (error instanceof AppwriteException) { + dispatch(addAlert({ + id: nanoid(), + title: errorTitle, + message: error.message ?? defaultMessage, + severity: severity ?? 'error' + })) + } else if (error instanceof Error) { + dispatch(addAlert({ + id: nanoid(), + title: errorTitle, + message: error.message ?? defaultMessage, + severity: severity ?? 'error' + })) + } else { + dispatch(addAlert({ + id: nanoid(), + title: errorTitle, + message: 'Error desconocido', + severity: severity ?? 'error' + })) + } + } + return { manageError } +} + +export default useManageError