Hhertz/node_modules/matrix-bot-sdk/lib/strategies/JoinRoomStrategy.js
2025-07-31 23:47:20 +03:00

44 lines
1.6 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SimpleRetryJoinStrategy = void 0;
const __1 = require("..");
/**
* A join strategy that keeps trying to join the room on a set interval.
* @category Join strategies
*/
class SimpleRetryJoinStrategy {
constructor() {
// Note: The schedule must not have duplicate values to avoid problems in positioning.
this.schedule = [
0,
1000,
30 * 1000,
5 * 60 * 1000,
15 * 60 * 1000, // 15 minutes
];
}
joinRoom(roomIdOrAlias, userId, apiCall) {
let currentSchedule = this.schedule[0];
const doJoin = () => waitPromise(currentSchedule).then(() => apiCall(roomIdOrAlias));
const errorHandler = err => {
__1.LogService.error("SimpleRetryJoinStrategy", (0, __1.extractRequestError)(err));
const idx = this.schedule.indexOf(currentSchedule);
if (idx === this.schedule.length - 1) {
__1.LogService.warn("SimpleRetryJoinStrategy", "Failed to join room " + roomIdOrAlias);
return Promise.reject(err);
}
else {
currentSchedule = this.schedule[idx + 1];
return doJoin().catch(errorHandler);
}
};
return doJoin().catch(errorHandler);
}
}
exports.SimpleRetryJoinStrategy = SimpleRetryJoinStrategy;
function waitPromise(interval) {
return new Promise((resolve, reject) => {
setTimeout(resolve, interval);
});
}
//# sourceMappingURL=JoinRoomStrategy.js.map