Better invites management (#2336)

* move block users to account settings

* filter invites and add more options

* add better rate limit recovery in rateLimitedActions util function
This commit is contained in:
Ajay Bura 2025-05-24 20:07:56 +05:30 committed by GitHub
parent 0d27bde33e
commit 206ed33516
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 1088 additions and 524 deletions

View file

@ -304,6 +304,14 @@ export const rateLimitedActions = async <T, R = void>(
maxRetryCount?: number
) => {
let retryCount = 0;
let actionInterval = 0;
const sleepForMs = (ms: number) =>
new Promise((resolve) => {
setTimeout(resolve, ms);
});
const performAction = async (dataItem: T) => {
const [err] = await to<R, MatrixError>(callback(dataItem));
@ -312,10 +320,9 @@ export const rateLimitedActions = async <T, R = void>(
return;
}
const waitMS = err.getRetryAfterMs() ?? 200;
await new Promise((resolve) => {
setTimeout(resolve, waitMS);
});
const waitMS = err.getRetryAfterMs() ?? 3000;
actionInterval = waitMS + 500;
await sleepForMs(waitMS);
retryCount += 1;
await performAction(dataItem);
@ -327,5 +334,9 @@ export const rateLimitedActions = async <T, R = void>(
retryCount = 0;
// eslint-disable-next-line no-await-in-loop
await performAction(dataItem);
if (actionInterval > 0) {
// eslint-disable-next-line no-await-in-loop
await sleepForMs(actionInterval);
}
}
};