Send viewed receipt when you start listening to an audio message
This commit is contained in:
parent
caf544b3a1
commit
75f0cd50be
19 changed files with 483 additions and 109 deletions
50
ts/jobs/helpers/commonShouldJobContinue.ts
Normal file
50
ts/jobs/helpers/commonShouldJobContinue.ts
Normal file
|
@ -0,0 +1,50 @@
|
|||
// Copyright 2021 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { LoggerType } from '../../logging/log';
|
||||
import { waitForOnline } from '../../util/waitForOnline';
|
||||
import { sleep } from '../../util/sleep';
|
||||
import { exponentialBackoffSleepTime } from '../../util/exponentialBackoff';
|
||||
import { isDone as isDeviceLinked } from '../../util/registration';
|
||||
|
||||
export async function commonShouldJobContinue({
|
||||
attempt,
|
||||
log,
|
||||
maxRetryTime,
|
||||
timestamp,
|
||||
}: Readonly<{
|
||||
attempt: number;
|
||||
log: LoggerType;
|
||||
maxRetryTime: number;
|
||||
timestamp: number;
|
||||
}>): Promise<boolean> {
|
||||
const maxJobAge = timestamp + maxRetryTime;
|
||||
const timeRemaining = maxJobAge - Date.now();
|
||||
|
||||
if (timeRemaining <= 0) {
|
||||
log.info("giving up because it's been too long");
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
await waitForOnline(window.navigator, window, { timeout: timeRemaining });
|
||||
} catch (err: unknown) {
|
||||
log.info("didn't come online in time, giving up");
|
||||
return false;
|
||||
}
|
||||
|
||||
await new Promise<void>(resolve => {
|
||||
window.storage.onready(resolve);
|
||||
});
|
||||
|
||||
if (!isDeviceLinked()) {
|
||||
log.info("skipping this job because we're unlinked");
|
||||
return false;
|
||||
}
|
||||
|
||||
const sleepTime = exponentialBackoffSleepTime(attempt);
|
||||
log.info(`sleeping for ${sleepTime}`);
|
||||
await sleep(sleepTime);
|
||||
|
||||
return true;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue