feat: useManageErrors hook

This commit is contained in:
2024-02-06 20:14:59 -06:00
parent 345f79e53a
commit 820865ac79
+41
View File
@@ -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