UNPKG

raiden-ts

Version:

Raiden Light Client Typescript/Javascript SDK

38 lines 1.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.matrixLeaveUnknownRoomsEpic = void 0; const rxjs_1 = require("rxjs"); const operators_1 = require("rxjs/operators"); const rx_1 = require("../../utils/rx"); /** * Leave any (new or invited) room * * @param action$ - Observable of RaidenActions * @param state$ - Observable of RaidenStates * @param deps - RaidenEpicDeps members * @param deps.log - Logger instance * @param deps.matrix$ - MatrixClient async subject * @param deps.config$ - Config observable * @returns Empty observable (whole side-effect on matrix instance) */ function matrixLeaveUnknownRoomsEpic({}, state$, { log, matrix$, config$ }) { return matrix$.pipe( // when matrix finishes initialization, register to matrix Room events (0, rx_1.withMergeFrom)((matrix) => (0, rxjs_1.fromEvent)(matrix, 'Room')), (0, operators_1.withLatestFrom)(config$), // this room may become known later for some reason, so wait a little (0, operators_1.delayWhen)(([, { httpTimeout }]) => (0, rxjs_1.timer)(Math.round((0.5 + 0.5 * Math.random()) * httpTimeout))), (0, rx_1.completeWith)(state$), // filter for leave events to us (0, operators_1.filter)(([[, room]]) => { const myMembership = room.getMyMembership(); if (!myMembership || myMembership === 'leave') return false; // room already gone while waiting return true; }), (0, operators_1.mergeMap)(async ([[matrix, room]]) => { log.warn('Unknown room in matrix, leaving', room.roomId); return matrix .leave(room.roomId) .catch((err) => log.error('Error leaving unknown room, ignoring', err)); }), (0, operators_1.ignoreElements)()); } exports.matrixLeaveUnknownRoomsEpic = matrixLeaveUnknownRoomsEpic; //# sourceMappingURL=rooms.js.map