// Copyright 2019 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import createTaskWithTimeout from '../textsecure/TaskWithTimeout'; import { MINUTE } from '../util/durations'; import { explodePromise } from '../util/explodePromise'; // Matching Whisper.events.trigger API // eslint-disable-next-line @typescript-eslint/no-explicit-any export function trigger(name: string, ...rest: Array): void { window.Whisper.events.trigger(name, ...rest); } export const waitForEvent = ( eventName: string, timeout: number = 2 * MINUTE ): Promise => createTaskWithTimeout( (event: string): Promise => { const { promise, resolve } = explodePromise(); window.Whisper.events.once(event, () => resolve()); return promise; }, `waitForEvent:${eventName}`, { timeout } )(eventName);