ConvoyPanel/resources/scripts/util/useFlash.ts
2023-11-06 04:12:03 +00:00

29 lines
894 B
TypeScript

import { ApplicationStore } from '@/state'
import { FlashStore } from '@/state/flashes'
import { Actions, useStoreActions } from 'easy-peasy'
interface KeyedFlashStore {
addError: (message: string, title?: string) => void
clearFlashes: () => void
clearAndAddHttpError: (error?: Error | string | null) => void
}
const useFlash = (): Actions<FlashStore> => {
return useStoreActions(
(actions: Actions<ApplicationStore>) => actions.flashes
)
}
const useFlashKey = (key: string): KeyedFlashStore => {
const { addFlash, clearFlashes, clearAndAddHttpError } = useFlash()
return {
addError: (message, title) =>
addFlash({ key, message, title, type: 'error' }),
clearFlashes: () => clearFlashes(key),
clearAndAddHttpError: error => clearAndAddHttpError({ key, error }),
}
}
export { useFlashKey }
export default useFlash