UNPKG

@river-build/sdk

Version:

For more details, visit the following resources:

60 lines 2.61 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; import { LoadPriority } from '../../store/store'; import { PersistedObservable, persistedObservable, } from '../../observable/persistedObservable'; import { MembershipOp } from '@river-build/proto'; import { isDMChannelStreamId, makeDMStreamId } from '../../id'; import { check } from '@river-build/dlog'; import { Dm } from './models/dm'; let Dms = class Dms extends PersistedObservable { riverConnection; userMemberships; dms = {}; constructor(store, riverConnection, userMemberships) { super({ id: '0', streamIds: [] }, store, LoadPriority.high); this.riverConnection = riverConnection; this.userMemberships = userMemberships; } onLoaded() { this.userMemberships.subscribe((value) => { this.onUserMembershipsChanged(value); }, { fireImediately: true }); } getDm(streamId) { check(isDMChannelStreamId(streamId), 'Invalid streamId'); if (!this.dms[streamId]) { this.dms[streamId] = new Dm(streamId, this.riverConnection, this.store); } return this.dms[streamId]; } getDmWithUserId(userId) { const streamId = makeDMStreamId(this.riverConnection.userId, userId); return this.getDm(streamId); } onUserMembershipsChanged(value) { if (value.status === 'loading') { return; } const streamIds = Object.values(value.data.memberships) .filter((m) => isDMChannelStreamId(m.streamId) && m.op === MembershipOp.SO_JOIN) .map((m) => m.streamId); this.setData({ streamIds }); for (const streamId of streamIds) { if (!this.dms[streamId]) { this.dms[streamId] = new Dm(streamId, this.riverConnection, this.store); } } } async createDM(...args) { return this.riverConnection.call((client) => client.createDMChannel(...args)); } }; Dms = __decorate([ persistedObservable({ tableName: 'dms' }) ], Dms); export { Dms }; //# sourceMappingURL=dms.js.map