@river-build/sdk
Version:
For more details, visit the following resources:
56 lines • 2.47 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 { isGDMChannelStreamId } from '../../id';
import { check } from '@river-build/dlog';
import { Gdm } from './models/gdm';
let Gdms = class Gdms extends PersistedObservable {
riverConnection;
userMemberships;
gdms = {};
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 });
}
getGdm(streamId) {
check(isGDMChannelStreamId(streamId), 'Invalid streamId');
if (!this.gdms[streamId]) {
this.gdms[streamId] = new Gdm(streamId, this.riverConnection, this.store);
}
return this.gdms[streamId];
}
onUserMembershipsChanged(value) {
if (value.status === 'loading') {
return;
}
const streamIds = Object.values(value.data.memberships)
.filter((m) => isGDMChannelStreamId(m.streamId) && m.op === MembershipOp.SO_JOIN)
.map((m) => m.streamId);
this.setData({ streamIds });
for (const streamId of streamIds) {
if (!this.gdms[streamId]) {
this.gdms[streamId] = new Gdm(streamId, this.riverConnection, this.store);
}
}
}
async createGDM(...args) {
return this.riverConnection.call((client) => client.createGDMChannel(...args));
}
};
Gdms = __decorate([
persistedObservable({ tableName: 'gdms' })
], Gdms);
export { Gdms };
//# sourceMappingURL=gdms.js.map