feat: toast package (#1073)

This commit is contained in:
Mo
2022-06-07 13:19:45 -05:00
committed by GitHub
parent de94fb69cf
commit 6d0b6e9018
27 changed files with 524 additions and 23 deletions

View File

@@ -0,0 +1,35 @@
import { addToast, dismissToast, updateToast } from './toastStore'
import { ToastOptions } from './types'
type InitialToastOptions = Omit<ToastOptions, 'message'> & {
message: (timeRemainingInSeconds: number) => string
}
export const addTimedToast = (
initialOptions: InitialToastOptions,
callback: () => void,
timeInSeconds: number,
): [string, number] => {
let timeRemainingInSeconds = timeInSeconds
const intervalId = window.setInterval(() => {
timeRemainingInSeconds--
if (timeRemainingInSeconds > 0) {
updateToast(toastId, {
message: initialOptions.message(timeRemainingInSeconds),
})
} else {
dismissToast(toastId)
clearInterval(intervalId)
callback()
}
}, 1000)
const toastId = addToast({
...initialOptions,
message: initialOptions.message(timeRemainingInSeconds),
autoClose: false,
})
return [toastId, intervalId]
}