diff options
Diffstat (limited to 'packages/taler-wallet-webextension/src/context')
-rw-r--r-- | packages/taler-wallet-webextension/src/context/alert.ts | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/packages/taler-wallet-webextension/src/context/alert.ts b/packages/taler-wallet-webextension/src/context/alert.ts index e67d94671..8527f30f6 100644 --- a/packages/taler-wallet-webextension/src/context/alert.ts +++ b/packages/taler-wallet-webextension/src/context/alert.ts @@ -48,7 +48,14 @@ type Type = { alerts: Alert[]; pushAlert: (n: Alert) => void; removeAlert: (n: Alert) => void; + /** + * + * @param h + * @returns + * @deprecated use safely + */ pushAlertOnError: <T>(h: (p: T) => Promise<void>) => SafeHandler<T>; + safely: <T>(h: (p: T) => Promise<void>, error: TranslatedString) => SafeHandler<T>; }; const initial: Type = { @@ -56,6 +63,9 @@ const initial: Type = { pushAlertOnError: () => { throw Error("alert context not initialized"); }, + safely: () => { + throw Error("alert context not initialized"); + }, pushAlert: () => { null; }, @@ -100,8 +110,18 @@ export const AlertProvider = ({ children }: Props): VNode => { }); } + function safely<T>( + handler: (p: T) => Promise<void>, + message: TranslatedString + ): SafeHandler<T> { + return withSafe(handler, (e) => { + const a = alertFromError(message, e); + pushAlert(a); + }); + } + return h(Context.Provider, { - value: { alerts, pushAlert, removeAlert, pushAlertOnError }, + value: { alerts, pushAlert, removeAlert, pushAlertOnError, safely }, children, }); }; |