mirror of
https://github.com/lux-tel/session-desktop.git
synced 2026-10-30 20:33:24 +00:00
44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
/* eslint-disable more/no-then */
|
|
|
|
// innerHandleSwarmContentMessage is only needed because of code duplication in handleDecryptedEnvelope...
|
|
import { innerHandleSwarmContentMessage } from './contentMessage';
|
|
|
|
import { DURATION } from '../session/constants';
|
|
import { sleepFor } from '../session/utils/Promise';
|
|
import type { SwarmDecodedEnvelope } from './types';
|
|
|
|
export async function handleSwarmContentDecryptedWithTimeout({
|
|
decodedEnvelope,
|
|
}: {
|
|
decodedEnvelope: SwarmDecodedEnvelope;
|
|
}) {
|
|
let taskDone = false;
|
|
return Promise.race([
|
|
(async () => {
|
|
await sleepFor(1 * DURATION.MINUTES); // 1 minute expiry per message seems more than enough
|
|
if (taskDone) {
|
|
return;
|
|
}
|
|
window.log.error(
|
|
'handleSwarmContentDecryptedWithTimeout timer expired for envelope ',
|
|
decodedEnvelope.id
|
|
);
|
|
})(),
|
|
(async () => {
|
|
try {
|
|
await innerHandleSwarmContentMessage({
|
|
decodedEnvelope,
|
|
});
|
|
} catch (e) {
|
|
window.log.error(
|
|
'handleSwarmContentDecryptedWithTimeout task failed with ',
|
|
e.message,
|
|
decodedEnvelope.id
|
|
);
|
|
} finally {
|
|
taskDone = true;
|
|
}
|
|
})(),
|
|
]);
|
|
}
|