diff --git a/src/utils/promiseTimeout.tsx b/src/utils/promiseTimeout.tsx index bfceeb780..21c1dea03 100644 --- a/src/utils/promiseTimeout.tsx +++ b/src/utils/promiseTimeout.tsx @@ -7,6 +7,8 @@ * @format */ +import {StatusMessageType} from '../reducers/application'; + export default function promiseTimeout( ms: number, promise: Promise, @@ -23,3 +25,23 @@ export default function promiseTimeout( // Returns a race between our timeout and the passed in promise return Promise.race([promise, timeout]); } + +export function showStatusUpdatesForPromise( + promise: Promise, + message: string, + sender: string, + addStatusMessage: (payload: StatusMessageType) => void, + removeStatusMessage: (payload: StatusMessageType) => void, +): Promise { + const statusMsg = {msg: message, sender}; + addStatusMessage(statusMsg); + return promise + .then(result => { + removeStatusMessage(statusMsg); + return result; + }) + .catch(e => { + removeStatusMessage(statusMsg); + throw e; + }); +}