@river-build/sdk
Version:
For more details, visit the following resources:
60 lines • 2.61 kB
JavaScript
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