UNPKG

@vector-im/matrix-bot-sdk

Version:

TypeScript/JavaScript SDK for Matrix bots and appservices

42 lines 1.55 kB
"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 { // Note: The schedule must not have duplicate values to avoid problems in positioning. 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