retry posting message to opengroupv2

pull/1624/head
Audric Ackermann 4 years ago
parent adb9208491
commit bfa203f28b
No known key found for this signature in database
GPG Key ID: 999F434D76324AD4

@ -18,6 +18,7 @@ import { OpenGroupMessageV2 } from './OpenGroupMessageV2';
import { isOpenGroupV2Request } from '../../fileserver/FileServerApiV2';
import { getAuthToken } from './ApiAuth';
import pRetry from 'p-retry';
/**
* This function returns a base url to this room
@ -195,7 +196,8 @@ export async function openGroupV2GetRoomInfo({
* If an error happens, this function throws it
*
*/
export const postMessage = async (
const postMessageRetryable = async (
message: OpenGroupMessageV2,
room: OpenGroupRequestCommonType
) => {
@ -210,7 +212,9 @@ export const postMessage = async (
isAuthRequired: true,
endpoint: 'messages',
};
const result = await sendApiV2Request(request);
const statusCode = parseStatusCodeFromOnionRequest(result);
if (statusCode !== 200) {
@ -224,6 +228,30 @@ export const postMessage = async (
return OpenGroupMessageV2.fromJson(rawMessage);
};
export const postMessage = async (
message: OpenGroupMessageV2,
room: OpenGroupRequestCommonType
) => {
const result = await pRetry(
async () => {
return postMessageRetryable(message, room);
},
{
retries: 3, // each path can fail 3 times before being dropped, we have 3 paths at most
factor: 2,
minTimeout: 1000,
maxTimeout: 4000,
onFailedAttempt: e => {
window?.log?.warn(
`postMessageRetryable attempt #${e.attemptNumber} failed. ${e.retriesLeft} retries left...`
);
},
}
);
return result;
// errors are saved on the message itself if this pRetry fails too many times
};
export const banUser = async (
userToBan: PubKey,
roomInfos: OpenGroupRequestCommonType

Loading…
Cancel
Save