UNPKG

decap-cms-core

Version:

Decap CMS core application, see decap-cms package for the main distribution.

32 lines 800 B
import { WAIT_UNTIL_ACTION } from '../redux/middleware/waitUntilAction'; export function waitUntil({ predicate, run }) { return { type: WAIT_UNTIL_ACTION, predicate, run }; } export async function waitUntilWithTimeout(dispatch, waitActionArgs, timeout = 30000) { let waitDone = false; const waitPromise = new Promise(resolve => { dispatch(waitUntil(waitActionArgs(resolve))); }); const timeoutPromise = new Promise(resolve => { setTimeout(() => { if (waitDone) { resolve(); } else { console.warn('Wait Action timed out'); resolve(null); } }, timeout); }); const result = await Promise.race([waitPromise.then(result => { waitDone = true; return result; }).catch(null), timeoutPromise]); return result; }