@towns-labs/sdk 2.0.10 → 2.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +3 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +45 -1
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/dist/streamStateView_User.d.ts.map +1 -1
- package/dist/streamStateView_User.js +1 -0
- package/dist/streamStateView_User.js.map +1 -1
- package/dist/streamStateView_UserInbox.d.ts.map +1 -1
- package/dist/streamStateView_UserInbox.js +1 -0
- package/dist/streamStateView_UserInbox.js.map +1 -1
- package/dist/streamStateView_UserMetadata.d.ts.map +1 -1
- package/dist/streamStateView_UserMetadata.js +1 -0
- package/dist/streamStateView_UserMetadata.js.map +1 -1
- package/dist/streamStateView_UserSettings.d.ts.map +1 -1
- package/dist/streamStateView_UserSettings.js +9 -1
- package/dist/streamStateView_UserSettings.js.map +1 -1
- package/dist/sync-agent/dms/dms.d.ts +5 -5
- package/dist/sync-agent/dms/dms.d.ts.map +1 -1
- package/dist/sync-agent/dms/dms.js +12 -27
- package/dist/sync-agent/dms/dms.js.map +1 -1
- package/dist/sync-agent/dms/models/dm.d.ts +4 -5
- package/dist/sync-agent/dms/models/dm.d.ts.map +1 -1
- package/dist/sync-agent/dms/models/dm.js +28 -34
- package/dist/sync-agent/dms/models/dm.js.map +1 -1
- package/dist/sync-agent/gdms/gdms.d.ts +5 -6
- package/dist/sync-agent/gdms/gdms.d.ts.map +1 -1
- package/dist/sync-agent/gdms/gdms.js +12 -27
- package/dist/sync-agent/gdms/gdms.js.map +1 -1
- package/dist/sync-agent/gdms/models/gdm.d.ts +7 -5
- package/dist/sync-agent/gdms/models/gdm.d.ts.map +1 -1
- package/dist/sync-agent/gdms/models/gdm.js +29 -34
- package/dist/sync-agent/gdms/models/gdm.js.map +1 -1
- package/dist/sync-agent/members/members.d.ts +6 -18
- package/dist/sync-agent/members/members.d.ts.map +1 -1
- package/dist/sync-agent/members/members.js +25 -124
- package/dist/sync-agent/members/members.js.map +1 -1
- package/dist/sync-agent/members/models/member.d.ts +3 -45
- package/dist/sync-agent/members/models/member.d.ts.map +1 -1
- package/dist/sync-agent/members/models/member.js +15 -114
- package/dist/sync-agent/members/models/member.js.map +1 -1
- package/dist/sync-agent/members/models/myself.d.ts +1 -11
- package/dist/sync-agent/members/models/myself.d.ts.map +1 -1
- package/dist/sync-agent/members/models/myself.js +1 -84
- package/dist/sync-agent/members/models/myself.js.map +1 -1
- package/dist/sync-agent/river-connection/riverConnection.d.ts +5 -11
- package/dist/sync-agent/river-connection/riverConnection.d.ts.map +1 -1
- package/dist/sync-agent/river-connection/riverConnection.js +27 -29
- package/dist/sync-agent/river-connection/riverConnection.js.map +1 -1
- package/dist/sync-agent/spaces/models/channel.d.ts +7 -26
- package/dist/sync-agent/spaces/models/channel.d.ts.map +1 -1
- package/dist/sync-agent/spaces/models/channel.js +24 -37
- package/dist/sync-agent/spaces/models/channel.js.map +1 -1
- package/dist/sync-agent/spaces/models/space.d.ts +4 -5
- package/dist/sync-agent/spaces/models/space.d.ts.map +1 -1
- package/dist/sync-agent/spaces/models/space.js +27 -37
- package/dist/sync-agent/spaces/models/space.js.map +1 -1
- package/dist/sync-agent/spaces/spaces.d.ts +8 -11
- package/dist/sync-agent/spaces/spaces.d.ts.map +1 -1
- package/dist/sync-agent/spaces/spaces.js +13 -28
- package/dist/sync-agent/spaces/spaces.js.map +1 -1
- package/dist/sync-agent/syncAgent.d.ts +13 -18
- package/dist/sync-agent/syncAgent.d.ts.map +1 -1
- package/dist/sync-agent/syncAgent.js +5 -14
- package/dist/sync-agent/syncAgent.js.map +1 -1
- package/dist/sync-agent/user/models/userInbox.d.ts +4 -17
- package/dist/sync-agent/user/models/userInbox.d.ts.map +1 -1
- package/dist/sync-agent/user/models/userInbox.js +14 -61
- package/dist/sync-agent/user/models/userInbox.js.map +1 -1
- package/dist/sync-agent/user/models/userMemberships.d.ts +6 -22
- package/dist/sync-agent/user/models/userMemberships.d.ts.map +1 -1
- package/dist/sync-agent/user/models/userMemberships.js +16 -68
- package/dist/sync-agent/user/models/userMemberships.js.map +1 -1
- package/dist/sync-agent/user/models/userMetadata.d.ts +4 -17
- package/dist/sync-agent/user/models/userMetadata.d.ts.map +1 -1
- package/dist/sync-agent/user/models/userMetadata.js +14 -61
- package/dist/sync-agent/user/models/userMetadata.js.map +1 -1
- package/dist/sync-agent/user/models/userSettings.d.ts +5 -8
- package/dist/sync-agent/user/models/userSettings.d.ts.map +1 -1
- package/dist/sync-agent/user/models/userSettings.js +15 -42
- package/dist/sync-agent/user/models/userSettings.js.map +1 -1
- package/dist/sync-agent/user/user.d.ts +2 -6
- package/dist/sync-agent/user/user.d.ts.map +1 -1
- package/dist/sync-agent/user/user.js +9 -20
- package/dist/sync-agent/user/user.js.map +1 -1
- package/dist/tests/multi_ne/sync-agent/member.test.d.ts +2 -0
- package/dist/tests/multi_ne/sync-agent/member.test.d.ts.map +1 -0
- package/dist/tests/multi_ne/sync-agent/member.test.js +20 -0
- package/dist/tests/multi_ne/sync-agent/member.test.js.map +1 -0
- package/dist/tests/multi_ne/sync-agent/members.test.d.ts +2 -0
- package/dist/tests/multi_ne/sync-agent/members.test.d.ts.map +1 -0
- package/dist/tests/multi_ne/sync-agent/members.test.js +35 -0
- package/dist/tests/multi_ne/sync-agent/members.test.js.map +1 -0
- package/dist/tests/multi_ne/sync-agent/riverConnection.test.d.ts +5 -0
- package/dist/tests/multi_ne/sync-agent/riverConnection.test.d.ts.map +1 -0
- package/dist/tests/multi_ne/sync-agent/riverConnection.test.js +39 -0
- package/dist/tests/multi_ne/sync-agent/riverConnection.test.js.map +1 -0
- package/dist/tests/multi_ne/sync-agent/spaces.test.d.ts +2 -0
- package/dist/tests/multi_ne/sync-agent/spaces.test.d.ts.map +1 -0
- package/dist/tests/multi_ne/sync-agent/spaces.test.js +33 -0
- package/dist/tests/multi_ne/sync-agent/spaces.test.js.map +1 -0
- package/dist/tests/multi_ne/sync-agent/streams.test.d.ts +2 -0
- package/dist/tests/multi_ne/sync-agent/streams.test.d.ts.map +1 -0
- package/dist/tests/multi_ne/sync-agent/streams.test.js +27 -0
- package/dist/tests/multi_ne/sync-agent/streams.test.js.map +1 -0
- package/dist/tests/multi_ne/sync-agent/syncAgent.test.d.ts +2 -0
- package/dist/tests/multi_ne/sync-agent/syncAgent.test.d.ts.map +1 -0
- package/dist/tests/multi_ne/sync-agent/syncAgent.test.js +58 -0
- package/dist/tests/multi_ne/sync-agent/syncAgent.test.js.map +1 -0
- package/dist/tests/multi_ne/sync-agent/syncAgents.test.d.ts +2 -0
- package/dist/tests/multi_ne/sync-agent/syncAgents.test.d.ts.map +1 -0
- package/dist/tests/multi_ne/sync-agent/syncAgents.test.js +153 -0
- package/dist/tests/multi_ne/sync-agent/syncAgents.test.js.map +1 -0
- package/dist/tests/multi_ne/sync-agent/timeline.test.d.ts +2 -0
- package/dist/tests/multi_ne/sync-agent/timeline.test.d.ts.map +1 -0
- package/dist/tests/multi_ne/sync-agent/timeline.test.js +206 -0
- package/dist/tests/multi_ne/sync-agent/timeline.test.js.map +1 -0
- package/dist/tests/multi_ne/sync-agent/user.test.d.ts +5 -0
- package/dist/tests/multi_ne/sync-agent/user.test.d.ts.map +1 -0
- package/dist/tests/multi_ne/sync-agent/user.test.js +48 -0
- package/dist/tests/multi_ne/sync-agent/user.test.js.map +1 -0
- package/dist/views/models/timelineEvent.d.ts.map +1 -1
- package/dist/views/models/timelineEvent.js +153 -1
- package/dist/views/models/timelineEvent.js.map +1 -1
- package/dist/views/models/timelineTypes.d.ts +48 -1
- package/dist/views/models/timelineTypes.d.ts.map +1 -1
- package/dist/views/models/timelineTypes.js +3 -0
- package/dist/views/models/timelineTypes.js.map +1 -1
- package/dist/views/streams/userInboxStreams.d.ts +3 -0
- package/dist/views/streams/userInboxStreams.d.ts.map +1 -1
- package/dist/views/streams/userInboxStreams.js +15 -4
- package/dist/views/streams/userInboxStreams.js.map +1 -1
- package/dist/views/streams/userMetadataStreams.d.ts +3 -0
- package/dist/views/streams/userMetadataStreams.d.ts.map +1 -1
- package/dist/views/streams/userMetadataStreams.js +15 -4
- package/dist/views/streams/userMetadataStreams.js.map +1 -1
- package/dist/views/streams/userSettingsStreams.d.ts +3 -0
- package/dist/views/streams/userSettingsStreams.d.ts.map +1 -1
- package/dist/views/streams/userSettingsStreams.js +17 -6
- package/dist/views/streams/userSettingsStreams.js.map +1 -1
- package/dist/views/streams/userStreamsView.d.ts +3 -0
- package/dist/views/streams/userStreamsView.d.ts.map +1 -1
- package/dist/views/streams/userStreamsView.js +21 -10
- package/dist/views/streams/userStreamsView.js.map +1 -1
- package/package.json +10 -9
- package/dist/sync-agent/db.d.ts +0 -18
- package/dist/sync-agent/db.d.ts.map +0 -1
- package/dist/sync-agent/db.js +0 -34
- package/dist/sync-agent/db.js.map +0 -1
- package/dist/sync-agent/river-connection/models/transactionalClient.d.ts +0 -11
- package/dist/sync-agent/river-connection/models/transactionalClient.d.ts.map +0 -1
- package/dist/sync-agent/river-connection/models/transactionalClient.js +0 -14
- package/dist/sync-agent/river-connection/models/transactionalClient.js.map +0 -1
|
@@ -1,25 +1,17 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
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;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
import { LoadPriority } from '../../store/store';
|
|
8
|
-
import { PersistedObservable, persistedObservable, } from '../../observable/persistedObservable';
|
|
9
1
|
import { MembershipOp } from '@towns-labs/proto';
|
|
10
2
|
import { isGDMChannelStreamId } from '../../id';
|
|
11
3
|
import { check } from '@towns-labs/utils';
|
|
12
4
|
import { Gdm } from './models/gdm';
|
|
13
|
-
|
|
5
|
+
import { isDefined } from '../../check';
|
|
6
|
+
import { Observable } from '../../observable/observable';
|
|
7
|
+
export class Gdms extends Observable {
|
|
14
8
|
riverConnection;
|
|
15
9
|
userMemberships;
|
|
16
10
|
gdms = {};
|
|
17
|
-
constructor(
|
|
18
|
-
super({ id: '0', streamIds: []
|
|
11
|
+
constructor(riverConnection, userMemberships) {
|
|
12
|
+
super({ id: '0', streamIds: [], initialized: false });
|
|
19
13
|
this.riverConnection = riverConnection;
|
|
20
14
|
this.userMemberships = userMemberships;
|
|
21
|
-
}
|
|
22
|
-
onLoaded() {
|
|
23
15
|
this.userMemberships.subscribe((value) => {
|
|
24
16
|
this.onUserMembershipsChanged(value);
|
|
25
17
|
}, { fireImediately: true });
|
|
@@ -27,30 +19,23 @@ let Gdms = class Gdms extends PersistedObservable {
|
|
|
27
19
|
getGdm(streamId) {
|
|
28
20
|
check(isGDMChannelStreamId(streamId), 'Invalid streamId');
|
|
29
21
|
if (!this.gdms[streamId]) {
|
|
30
|
-
this.gdms[streamId] = new Gdm(streamId, this.riverConnection
|
|
22
|
+
this.gdms[streamId] = new Gdm(streamId, this.riverConnection);
|
|
31
23
|
}
|
|
32
24
|
return this.gdms[streamId];
|
|
33
25
|
}
|
|
34
26
|
onUserMembershipsChanged(value) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
.filter((m) => isGDMChannelStreamId(m.streamId) && m.op === MembershipOp.SO_JOIN)
|
|
40
|
-
.map((m) => m.streamId);
|
|
41
|
-
this.setData({ streamIds });
|
|
27
|
+
const streamIds = Object.entries(value.streamMemberships)
|
|
28
|
+
.filter(([key, m]) => isDefined(m) && isGDMChannelStreamId(key) && m.op === MembershipOp.SO_JOIN)
|
|
29
|
+
.map(([key]) => key);
|
|
30
|
+
this.setValue({ ...this.value, streamIds, initialized: value.initialized });
|
|
42
31
|
for (const streamId of streamIds) {
|
|
43
32
|
if (!this.gdms[streamId]) {
|
|
44
|
-
this.gdms[streamId] = new Gdm(streamId, this.riverConnection
|
|
33
|
+
this.gdms[streamId] = new Gdm(streamId, this.riverConnection);
|
|
45
34
|
}
|
|
46
35
|
}
|
|
47
36
|
}
|
|
48
37
|
async createGDM(...args) {
|
|
49
38
|
return this.riverConnection.call((client) => client.createGDMChannel(...args));
|
|
50
39
|
}
|
|
51
|
-
}
|
|
52
|
-
Gdms = __decorate([
|
|
53
|
-
persistedObservable({ tableName: 'gdms' })
|
|
54
|
-
], Gdms);
|
|
55
|
-
export { Gdms };
|
|
40
|
+
}
|
|
56
41
|
//# sourceMappingURL=gdms.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gdms.js","sourceRoot":"","sources":["../../../src/sync-agent/gdms/gdms.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gdms.js","sourceRoot":"","sources":["../../../src/sync-agent/gdms/gdms.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEzC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAQxD,MAAM,OAAO,IAAK,SAAQ,UAAqB;IAI/B;IACA;IAJJ,IAAI,GAAwB,EAAE,CAAA;IAEtC,YACY,eAAgC,EAChC,eAAgC;QAExC,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAA;QAH7C,oBAAe,GAAf,eAAe,CAAiB;QAChC,oBAAe,GAAf,eAAe,CAAiB;QAIxC,IAAI,CAAC,eAAe,CAAC,SAAS,CAC1B,CAAC,KAAK,EAAE,EAAE;YACN,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAA;QACxC,CAAC,EACD,EAAE,cAAc,EAAE,IAAI,EAAE,CAC3B,CAAA;IACL,CAAC;IAED,MAAM,CAAC,QAAgB;QACnB,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC,CAAA;QACzD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;QACjE,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC9B,CAAC;IAEO,wBAAwB,CAAC,KAAsB;QACnD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC;aACpD,MAAM,CACH,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CACT,SAAS,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,OAAO,CACjF;aACA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAA;QAExB,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAA;QAE3E,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;YACjE,CAAC;QACL,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAG,IAA4C;QAC3D,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IAClF,CAAC;CACJ"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Identifiable, Store } from '../../../store/store';
|
|
1
|
+
import { Identifiable } from '../../../store/store';
|
|
3
2
|
import { RiverConnection } from '../../river-connection/riverConnection';
|
|
4
3
|
import { Members } from '../../members/members';
|
|
5
4
|
import type { ChannelMessage_Post_Attachment, ChannelMessage_Post_Mention, ChannelProperties, PlainMessage } from '@towns-labs/proto';
|
|
6
5
|
import { MessageTimeline } from '../../timeline/timeline';
|
|
7
6
|
import { type Address } from '@towns-labs/web3';
|
|
8
7
|
import { ethers } from 'ethers';
|
|
8
|
+
import { Observable } from '../../../observable/observable';
|
|
9
9
|
export interface GdmModel extends Identifiable {
|
|
10
10
|
/** The id of the DM. */
|
|
11
11
|
id: string;
|
|
@@ -16,12 +16,11 @@ export interface GdmModel extends Identifiable {
|
|
|
16
16
|
/** The metadata of the DM. @see {@link ChannelProperties} */
|
|
17
17
|
metadata?: ChannelProperties;
|
|
18
18
|
}
|
|
19
|
-
export declare class Gdm extends
|
|
19
|
+
export declare class Gdm extends Observable<GdmModel> {
|
|
20
20
|
private riverConnection;
|
|
21
21
|
timeline: MessageTimeline;
|
|
22
22
|
members: Members;
|
|
23
|
-
constructor(id: string, riverConnection: RiverConnection
|
|
24
|
-
protected onLoaded(): void;
|
|
23
|
+
constructor(id: string, riverConnection: RiverConnection);
|
|
25
24
|
sendMessage(message: string, options?: {
|
|
26
25
|
threadId?: string;
|
|
27
26
|
replyId?: string;
|
|
@@ -32,6 +31,9 @@ export declare class Gdm extends PersistedObservable<GdmModel> {
|
|
|
32
31
|
}): Promise<{
|
|
33
32
|
eventId: string;
|
|
34
33
|
}>;
|
|
34
|
+
leave(): Promise<{
|
|
35
|
+
eventId: string;
|
|
36
|
+
}>;
|
|
35
37
|
pin(eventId: string): Promise<{
|
|
36
38
|
eventId: string;
|
|
37
39
|
newEvents: import("@towns-labs/proto").EventRef[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gdm.d.ts","sourceRoot":"","sources":["../../../../src/sync-agent/gdms/models/gdm.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"gdm.d.ts","sourceRoot":"","sources":["../../../../src/sync-agent/gdms/models/gdm.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,KAAK,EACR,8BAA8B,EAC9B,2BAA2B,EAC3B,iBAAiB,EACjB,YAAY,EACf,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAE3D,MAAM,WAAW,QAAS,SAAQ,YAAY;IAC1C,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,kDAAkD;IAClD,WAAW,EAAE,OAAO,CAAA;IACpB,kDAAkD;IAClD,QAAQ,EAAE,OAAO,CAAA;IACjB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,iBAAiB,CAAA;CAC/B;AAED,qBAAa,GAAI,SAAQ,UAAU,CAAC,QAAQ,CAAC;IAKrC,OAAO,CAAC,eAAe;IAJ3B,QAAQ,EAAE,eAAe,CAAA;IACzB,OAAO,EAAE,OAAO,CAAA;gBAEZ,EAAE,EAAE,MAAM,EACF,eAAe,EAAE,eAAe;IAwBtC,WAAW,CACb,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,QAAQ,CAAC,EAAE,YAAY,CAAC,2BAA2B,CAAC,EAAE,CAAA;QACtD,WAAW,CAAC,EAAE,YAAY,CAAC,8BAA8B,CAAC,EAAE,CAAA;QAC5D,oEAAoE;QACpE,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAC5B,GACF,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAwBzB,KAAK;;;IAQL,GAAG,CAAC,OAAO,EAAE,MAAM;;;;IAQnB,KAAK,CAAC,OAAO,EAAE,MAAM;;;;IAQrB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;IAWvD;;;OAGG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;;;IAoB7C;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM;;;IAQjC;;;;OAIG;IACG,OAAO,CACT,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAC/E,OAAO,EAAE,MAAM,CAAC,MAAM;IAK1B,OAAO,CAAC,mBAAmB,CAc1B;IAED,OAAO,CAAC,kBAAkB,CAIzB;IAED,OAAO,CAAC,gBAAgB,CAIvB;CACJ"}
|
|
@@ -1,30 +1,21 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
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;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
1
|
import { check } from '@towns-labs/utils';
|
|
8
2
|
import { isDefined } from '../../../check';
|
|
9
|
-
import { PersistedObservable, persistedObservable } from '../../../observable/persistedObservable';
|
|
10
|
-
import { LoadPriority } from '../../../store/store';
|
|
11
3
|
import { Members } from '../../members/members';
|
|
12
4
|
import { MessageTimeline } from '../../timeline/timeline';
|
|
13
|
-
|
|
5
|
+
import { Observable } from '../../../observable/observable';
|
|
6
|
+
export class Gdm extends Observable {
|
|
14
7
|
riverConnection;
|
|
15
8
|
timeline;
|
|
16
9
|
members;
|
|
17
|
-
constructor(id, riverConnection
|
|
18
|
-
super({ id, isJoined: false, initialized: false }
|
|
10
|
+
constructor(id, riverConnection) {
|
|
11
|
+
super({ id, isJoined: false, initialized: false });
|
|
19
12
|
this.riverConnection = riverConnection;
|
|
20
13
|
this.timeline = new MessageTimeline(id, riverConnection.userId, riverConnection);
|
|
21
|
-
this.members = new Members(id, riverConnection
|
|
22
|
-
}
|
|
23
|
-
onLoaded() {
|
|
14
|
+
this.members = new Members(id, riverConnection);
|
|
24
15
|
this.riverConnection.registerView((client) => {
|
|
25
|
-
if (client.streams.has(this.
|
|
26
|
-
client.streams.get(this.
|
|
27
|
-
this.onStreamInitialized(this.
|
|
16
|
+
if (client.streams.has(this.value.id) &&
|
|
17
|
+
client.streams.get(this.value.id)?.view.isInitialized) {
|
|
18
|
+
this.onStreamInitialized(this.value.id);
|
|
28
19
|
}
|
|
29
20
|
client.on('streamInitialized', this.onStreamInitialized);
|
|
30
21
|
client.on('streamNewUserJoined', this.onStreamUserJoined);
|
|
@@ -37,7 +28,7 @@ let Gdm = class Gdm extends PersistedObservable {
|
|
|
37
28
|
});
|
|
38
29
|
}
|
|
39
30
|
async sendMessage(message, options) {
|
|
40
|
-
const channelId = this.
|
|
31
|
+
const channelId = this.value.id;
|
|
41
32
|
const result = await this.riverConnection.withStream(channelId).call((client) => {
|
|
42
33
|
return client.sendChannelMessage_Text(channelId, {
|
|
43
34
|
threadId: options?.threadId,
|
|
@@ -55,22 +46,29 @@ let Gdm = class Gdm extends PersistedObservable {
|
|
|
55
46
|
});
|
|
56
47
|
return result;
|
|
57
48
|
}
|
|
49
|
+
async leave() {
|
|
50
|
+
const channelId = this.value.id;
|
|
51
|
+
const result = await this.riverConnection.withStream(channelId).call((client) => {
|
|
52
|
+
return client.leaveStream(channelId);
|
|
53
|
+
});
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
58
56
|
async pin(eventId) {
|
|
59
|
-
const channelId = this.
|
|
57
|
+
const channelId = this.value.id;
|
|
60
58
|
const result = await this.riverConnection
|
|
61
59
|
.withStream(channelId)
|
|
62
60
|
.call((client) => client.pin(channelId, eventId));
|
|
63
61
|
return result;
|
|
64
62
|
}
|
|
65
63
|
async unpin(eventId) {
|
|
66
|
-
const channelId = this.
|
|
64
|
+
const channelId = this.value.id;
|
|
67
65
|
const result = await this.riverConnection
|
|
68
66
|
.withStream(channelId)
|
|
69
67
|
.call((client) => client.unpin(channelId, eventId));
|
|
70
68
|
return result;
|
|
71
69
|
}
|
|
72
70
|
async sendReaction(refEventId, reaction) {
|
|
73
|
-
const channelId = this.
|
|
71
|
+
const channelId = this.value.id;
|
|
74
72
|
const eventId = await this.riverConnection.call((client) => client.sendChannelMessage_Reaction(channelId, {
|
|
75
73
|
reaction,
|
|
76
74
|
refEventId,
|
|
@@ -82,7 +80,7 @@ let Gdm = class Gdm extends PersistedObservable {
|
|
|
82
80
|
* @param reason - The reason for the redaction
|
|
83
81
|
*/
|
|
84
82
|
async redact(eventId, reason) {
|
|
85
|
-
const channelId = this.
|
|
83
|
+
const channelId = this.value.id;
|
|
86
84
|
const result = await this.riverConnection.withStream(channelId).call((client, stream) => {
|
|
87
85
|
const event = stream.view.timeline.find((x) => x.eventId === eventId);
|
|
88
86
|
if (!event) {
|
|
@@ -102,7 +100,7 @@ let Gdm = class Gdm extends PersistedObservable {
|
|
|
102
100
|
* @param eventId - The event id of the message to redact
|
|
103
101
|
*/
|
|
104
102
|
async adminRedact(eventId) {
|
|
105
|
-
const channelId = this.
|
|
103
|
+
const channelId = this.value.id;
|
|
106
104
|
const result = await this.riverConnection
|
|
107
105
|
.withStream(channelId)
|
|
108
106
|
.call((client) => client.redactMessage(channelId, eventId));
|
|
@@ -117,12 +115,13 @@ let Gdm = class Gdm extends PersistedObservable {
|
|
|
117
115
|
throw new Error('sendTip is not implemented for GDMs');
|
|
118
116
|
}
|
|
119
117
|
onStreamInitialized = (streamId) => {
|
|
120
|
-
if (this.
|
|
118
|
+
if (this.value.id === streamId) {
|
|
121
119
|
const stream = this.riverConnection.client?.stream(streamId);
|
|
122
120
|
check(isDefined(stream), 'stream is not defined');
|
|
123
121
|
const view = stream.view.gdmChannelContent;
|
|
124
122
|
const hasJoined = stream.view.getMembers().isMemberJoined(this.riverConnection.userId);
|
|
125
|
-
this.
|
|
123
|
+
this.setValue({
|
|
124
|
+
...this.value,
|
|
126
125
|
initialized: true,
|
|
127
126
|
isJoined: hasJoined,
|
|
128
127
|
metadata: view.channelProperties,
|
|
@@ -131,18 +130,14 @@ let Gdm = class Gdm extends PersistedObservable {
|
|
|
131
130
|
}
|
|
132
131
|
};
|
|
133
132
|
onStreamUserJoined = (streamId, userId) => {
|
|
134
|
-
if (streamId === this.
|
|
135
|
-
this.
|
|
133
|
+
if (streamId === this.value.id && userId === this.riverConnection.userId) {
|
|
134
|
+
this.setValue({ ...this.value, isJoined: true });
|
|
136
135
|
}
|
|
137
136
|
};
|
|
138
137
|
onStreamUserLeft = (streamId, userId) => {
|
|
139
|
-
if (streamId === this.
|
|
140
|
-
this.
|
|
138
|
+
if (streamId === this.value.id && userId === this.riverConnection.userId) {
|
|
139
|
+
this.setValue({ ...this.value, isJoined: false });
|
|
141
140
|
}
|
|
142
141
|
};
|
|
143
|
-
}
|
|
144
|
-
Gdm = __decorate([
|
|
145
|
-
persistedObservable({ tableName: 'gdm' })
|
|
146
|
-
], Gdm);
|
|
147
|
-
export { Gdm };
|
|
142
|
+
}
|
|
148
143
|
//# sourceMappingURL=gdm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gdm.js","sourceRoot":"","sources":["../../../../src/sync-agent/gdms/models/gdm.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gdm.js","sourceRoot":"","sources":["../../../../src/sync-agent/gdms/models/gdm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,20 @@
|
|
|
1
|
-
import { PersistedObservable } from '../../observable/persistedObservable';
|
|
2
|
-
import type { Store } from '../../store/store';
|
|
3
1
|
import type { RiverConnection } from '../river-connection/riverConnection';
|
|
4
2
|
import { Member } from './models/member';
|
|
5
3
|
import { Myself } from './models/myself';
|
|
4
|
+
import { Observable } from '../../observable/observable';
|
|
6
5
|
export type MembersModel = {
|
|
7
6
|
/** The id of the stream. */
|
|
8
|
-
|
|
9
|
-
/** The ids of the users in the stream. */
|
|
10
|
-
userIds: string[];
|
|
7
|
+
streamId: string;
|
|
11
8
|
/** Whether the SyncAgent has loaded this data. */
|
|
12
9
|
initialized: boolean;
|
|
10
|
+
/** The ids of the users in the stream. */
|
|
11
|
+
userIds: string[];
|
|
13
12
|
};
|
|
14
|
-
export declare class Members extends
|
|
13
|
+
export declare class Members extends Observable<MembersModel> {
|
|
15
14
|
private riverConnection;
|
|
16
15
|
private members;
|
|
17
|
-
|
|
18
|
-
constructor(streamId: string, riverConnection: RiverConnection, store: Store);
|
|
19
|
-
protected onLoaded(): void;
|
|
16
|
+
constructor(streamId: string, riverConnection: RiverConnection);
|
|
20
17
|
get myself(): Myself;
|
|
21
18
|
get(userId: string): Member;
|
|
22
|
-
isUsernameAvailable(username: string): boolean;
|
|
23
|
-
private onStreamInitialized;
|
|
24
|
-
private onMemberLeave;
|
|
25
|
-
private onMemberJoin;
|
|
26
|
-
private onMemberInvite;
|
|
27
|
-
private onStreamUsernameUpdated;
|
|
28
|
-
private onStreamDisplayNameUpdated;
|
|
29
|
-
private onStreamNftUpdated;
|
|
30
|
-
private onStreamEnsAddressUpdated;
|
|
31
19
|
}
|
|
32
20
|
//# sourceMappingURL=members.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"members.d.ts","sourceRoot":"","sources":["../../../src/sync-agent/members/members.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"members.d.ts","sourceRoot":"","sources":["../../../src/sync-agent/members/members.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAExC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAExD,MAAM,MAAM,YAAY,GAAG;IACvB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,kDAAkD;IAClD,WAAW,EAAE,OAAO,CAAA;IACpB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,EAAE,CAAA;CACpB,CAAA;AAED,qBAAa,OAAQ,SAAQ,UAAU,CAAC,YAAY,CAAC;IAM7C,OAAO,CAAC,eAAe;IAH3B,OAAO,CAAC,OAAO,CAAsC;gBAEjD,QAAQ,EAAE,MAAM,EACR,eAAe,EAAE,eAAe;IAoB5C,IAAI,MAAM,WAGT;IAED,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAY9B"}
|
|
@@ -1,143 +1,44 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
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;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
1
|
import { check } from '@towns-labs/utils';
|
|
8
|
-
import { isDefined } from '../../check';
|
|
9
|
-
import { PersistedObservable, persistedObservable } from '../../observable/persistedObservable';
|
|
10
2
|
import { Member } from './models/member';
|
|
11
3
|
import { isUserId } from '../../id';
|
|
12
4
|
import { Myself } from './models/myself';
|
|
13
|
-
import {
|
|
14
|
-
|
|
5
|
+
import { Observable } from '../../observable/observable';
|
|
6
|
+
export class Members extends Observable {
|
|
15
7
|
riverConnection;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
8
|
+
// putting these in a weak ref for now, so that they can be garbage collected when not needed
|
|
9
|
+
// aellis, not sure how this is going to play out, will need to revisit if any dynamic data is added to the member on the node
|
|
10
|
+
members = {};
|
|
11
|
+
constructor(streamId, riverConnection) {
|
|
12
|
+
super({ streamId, initialized: false, userIds: [] });
|
|
20
13
|
this.riverConnection = riverConnection;
|
|
21
|
-
this.members = {};
|
|
22
|
-
}
|
|
23
|
-
onLoaded() {
|
|
24
14
|
this.riverConnection.registerView((client) => {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
client.on('streamUserLeft', this.onMemberLeave);
|
|
33
|
-
client.on('streamUsernameUpdated', this.onStreamUsernameUpdated);
|
|
34
|
-
client.on('streamPendingUsernameUpdated', this.onStreamUsernameUpdated);
|
|
35
|
-
client.on('streamNftUpdated', this.onStreamNftUpdated);
|
|
36
|
-
client.on('streamEnsAddressUpdated', this.onStreamEnsAddressUpdated);
|
|
37
|
-
client.on('streamDisplayNameUpdated', this.onStreamDisplayNameUpdated);
|
|
15
|
+
const unsub = client.streamsView.streamMemberIds.subscribe((value) => {
|
|
16
|
+
this.setValue({
|
|
17
|
+
streamId,
|
|
18
|
+
initialized: value[streamId] !== undefined,
|
|
19
|
+
userIds: value[streamId] ?? [],
|
|
20
|
+
});
|
|
21
|
+
}, { fireImediately: true });
|
|
38
22
|
return () => {
|
|
39
|
-
|
|
40
|
-
client.off('streamNewUserJoined', this.onMemberJoin);
|
|
41
|
-
client.off('streamNewUserInvited', this.onMemberInvite);
|
|
42
|
-
client.off('streamUserLeft', this.onMemberLeave);
|
|
43
|
-
client.off('streamUsernameUpdated', this.onStreamUsernameUpdated);
|
|
44
|
-
client.off('streamPendingUsernameUpdated', this.onStreamUsernameUpdated);
|
|
45
|
-
client.off('streamNftUpdated', this.onStreamNftUpdated);
|
|
46
|
-
client.off('streamEnsAddressUpdated', this.onStreamEnsAddressUpdated);
|
|
47
|
-
client.off('streamDisplayNameUpdated', this.onStreamDisplayNameUpdated);
|
|
23
|
+
unsub();
|
|
48
24
|
};
|
|
49
25
|
});
|
|
50
26
|
}
|
|
51
27
|
get myself() {
|
|
52
|
-
if (this._myself) {
|
|
53
|
-
return this._myself;
|
|
54
|
-
}
|
|
55
28
|
const member = this.get(this.riverConnection.userId);
|
|
56
|
-
|
|
57
|
-
this._myself = my;
|
|
58
|
-
return my;
|
|
29
|
+
return new Myself(member, this.value.streamId, this.riverConnection);
|
|
59
30
|
}
|
|
60
31
|
get(userId) {
|
|
61
32
|
check(isUserId(userId), 'invalid user id');
|
|
62
|
-
// Its possible to get a member that its not in the userIds array, if the user left the stream for example
|
|
63
|
-
// We can get a member that left, to get the last snapshot of the member
|
|
64
|
-
if (!this.members[userId]) {
|
|
65
|
-
this.members[userId] = new Member(userId, this.data.id, this.riverConnection, this.store);
|
|
66
|
-
this.members[userId].onStreamInitialized(this.data.id);
|
|
67
|
-
}
|
|
68
|
-
return this.members[userId];
|
|
69
|
-
}
|
|
70
|
-
isUsernameAvailable(username) {
|
|
71
|
-
const streamId = this.data.id;
|
|
72
|
-
const streamView = this.riverConnection.client?.stream(streamId)?.view;
|
|
73
|
-
check(isDefined(streamView), 'stream not found');
|
|
74
|
-
return streamView.getMemberMetadata().usernames.cleartextUsernameAvailable(username);
|
|
75
|
-
}
|
|
76
|
-
onStreamInitialized = (streamId) => {
|
|
77
|
-
if (streamId !== this.data.id)
|
|
78
|
-
return;
|
|
79
|
-
const stream = this.riverConnection.client?.stream(streamId);
|
|
80
|
-
check(isDefined(stream), 'stream is not defined');
|
|
81
|
-
const userIds = Array.from(stream.view.getMembers().joined.values()).map((member) => member.userId);
|
|
82
|
-
for (const userId of userIds) {
|
|
83
|
-
// prefetch the member
|
|
84
|
-
this.get(userId);
|
|
85
|
-
}
|
|
86
|
-
this.setData({ initialized: true, userIds });
|
|
87
|
-
};
|
|
88
|
-
onMemberLeave = (streamId, userId) => {
|
|
89
|
-
if (streamId !== this.data.id)
|
|
90
|
-
return;
|
|
91
|
-
// We dont remove the member from the members map, because we want to keep the member object around
|
|
92
|
-
// so that we can still access the member's properties.
|
|
93
|
-
// In the next sync, the member map will be reinitialized, cleaning up the map.
|
|
94
|
-
// We remove the member from the userIds array, so that we don't try to access it later.
|
|
95
|
-
this.setData({ userIds: this.data.userIds.filter((id) => id !== userId) });
|
|
96
33
|
if (this.members[userId]) {
|
|
97
|
-
this.members[userId].
|
|
34
|
+
const member = this.members[userId].deref();
|
|
35
|
+
if (member) {
|
|
36
|
+
return member;
|
|
37
|
+
}
|
|
98
38
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
const member = this.get(userId);
|
|
105
|
-
member.onStreamMembershipUpdated(streamId, userId, MembershipOp.SO_JOIN);
|
|
106
|
-
};
|
|
107
|
-
onMemberInvite = (streamId, userId) => {
|
|
108
|
-
if (streamId !== this.data.id)
|
|
109
|
-
return;
|
|
110
|
-
this.setData({ userIds: [...this.data.userIds, userId] });
|
|
111
|
-
const member = this.get(userId);
|
|
112
|
-
member.onStreamMembershipUpdated(streamId, userId, MembershipOp.SO_INVITE);
|
|
113
|
-
};
|
|
114
|
-
onStreamUsernameUpdated = (streamId, userId) => {
|
|
115
|
-
if (streamId !== this.data.id)
|
|
116
|
-
return;
|
|
117
|
-
const member = this.get(userId);
|
|
118
|
-
member.onStreamUsernameUpdated(streamId, userId);
|
|
119
|
-
};
|
|
120
|
-
onStreamDisplayNameUpdated = (streamId, userId) => {
|
|
121
|
-
if (streamId !== this.data.id)
|
|
122
|
-
return;
|
|
123
|
-
const member = this.get(userId);
|
|
124
|
-
member.onStreamDisplayNameUpdated(streamId, userId);
|
|
125
|
-
};
|
|
126
|
-
onStreamNftUpdated = (streamId, userId) => {
|
|
127
|
-
if (streamId !== this.data.id)
|
|
128
|
-
return;
|
|
129
|
-
const member = this.get(userId);
|
|
130
|
-
member.onStreamNftUpdated(streamId, userId);
|
|
131
|
-
};
|
|
132
|
-
onStreamEnsAddressUpdated = (streamId, userId) => {
|
|
133
|
-
if (streamId !== this.data.id)
|
|
134
|
-
return;
|
|
135
|
-
const member = this.get(userId);
|
|
136
|
-
member.onStreamEnsAddressUpdated(streamId, userId);
|
|
137
|
-
};
|
|
138
|
-
};
|
|
139
|
-
Members = __decorate([
|
|
140
|
-
persistedObservable({ tableName: 'members' })
|
|
141
|
-
], Members);
|
|
142
|
-
export { Members };
|
|
39
|
+
const member = new Member(userId, this.value.streamId, this.riverConnection);
|
|
40
|
+
this.members[userId] = new WeakRef(member);
|
|
41
|
+
return member;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
143
44
|
//# sourceMappingURL=members.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"members.js","sourceRoot":"","sources":["../../../src/sync-agent/members/members.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"members.js","sourceRoot":"","sources":["../../../src/sync-agent/members/members.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEzC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAWxD,MAAM,OAAO,OAAQ,SAAQ,UAAwB;IAMrC;IALZ,6FAA6F;IAC7F,8HAA8H;IACtH,OAAO,GAAoC,EAAE,CAAA;IACrD,YACI,QAAgB,EACR,eAAgC;QAExC,KAAK,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;QAF5C,oBAAe,GAAf,eAAe,CAAiB;QAGxC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CACtD,CAAC,KAAK,EAAE,EAAE;gBACN,IAAI,CAAC,QAAQ,CAAC;oBACV,QAAQ;oBACR,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,SAAS;oBAC1C,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;iBACjC,CAAC,CAAA;YACN,CAAC,EACD,EAAE,cAAc,EAAE,IAAI,EAAE,CAC3B,CAAA;YACD,OAAO,GAAG,EAAE;gBACR,KAAK,EAAE,CAAA;YACX,CAAC,CAAA;QACL,CAAC,CAAC,CAAA;IACN,CAAC;IAED,IAAI,MAAM;QACN,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;QACpD,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;IACxE,CAAC;IAED,GAAG,CAAC,MAAc;QACd,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAA;QAC1C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAA;YAC3C,IAAI,MAAM,EAAE,CAAC;gBACT,OAAO,MAAM,CAAA;YACjB,CAAC;QACL,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;QAC5E,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;QAC1C,OAAO,MAAM,CAAA;IACjB,CAAC;CACJ"}
|
|
@@ -1,68 +1,26 @@
|
|
|
1
|
-
import { PersistedObservable } from '../../../observable/persistedObservable';
|
|
2
|
-
import type { Store } from '../../../store/store';
|
|
3
1
|
import type { RiverConnection } from '../../river-connection/riverConnection';
|
|
4
2
|
import { MembershipOp } from '@towns-labs/proto';
|
|
3
|
+
import { Observable } from '../../../observable/observable';
|
|
5
4
|
export type MemberModel = {
|
|
6
|
-
/**
|
|
7
|
-
* The store id of the member.
|
|
8
|
-
* @internal
|
|
9
|
-
*/
|
|
10
|
-
id: string;
|
|
11
5
|
/** The id of the user. */
|
|
12
6
|
userId: string;
|
|
13
7
|
/** The id of the stream where the data belongs to. */
|
|
14
8
|
streamId: string;
|
|
15
9
|
/** Whether the SyncAgent has loaded this data. */
|
|
16
10
|
initialized: boolean;
|
|
17
|
-
/** Username of the member. */
|
|
18
|
-
username: string;
|
|
19
|
-
/** Whether the username has been confirmed by the River node. */
|
|
20
|
-
isUsernameConfirmed: boolean;
|
|
21
|
-
/** Whether the username is encrypted. */
|
|
22
|
-
isUsernameEncrypted: boolean;
|
|
23
|
-
/** Display name of the member. */
|
|
24
|
-
displayName: string;
|
|
25
|
-
/** Whether the display name is encrypted. */
|
|
26
|
-
isDisplayNameEncrypted?: boolean;
|
|
27
|
-
/**
|
|
28
|
-
* ENS address of the member.
|
|
29
|
-
* Should not be trusted, as it can be spoofed.
|
|
30
|
-
* You should be validating it.
|
|
31
|
-
*/
|
|
32
|
-
ensAddress?: string;
|
|
33
11
|
/**
|
|
34
12
|
* {@link NftModel} of the member.
|
|
35
13
|
* Should not be trusted, as it can be spoofed.
|
|
36
14
|
* You should be validating it.
|
|
37
15
|
*/
|
|
38
|
-
nft?: NftModel;
|
|
39
16
|
/** {@link MembershipOp} of the member. */
|
|
40
17
|
membership?: MembershipOp;
|
|
41
18
|
/** The app address of the member. */
|
|
42
19
|
appAddress?: string;
|
|
43
20
|
};
|
|
44
|
-
export
|
|
45
|
-
/** The contract address of the NFT. */
|
|
46
|
-
contractAddress: string;
|
|
47
|
-
/** The token id of the NFT. */
|
|
48
|
-
tokenId: string;
|
|
49
|
-
/** The chain id of the NFT. */
|
|
50
|
-
chainId: number;
|
|
51
|
-
};
|
|
52
|
-
export declare class Member extends PersistedObservable<MemberModel> {
|
|
21
|
+
export declare class Member extends Observable<MemberModel> {
|
|
53
22
|
private userId;
|
|
54
23
|
protected riverConnection: RiverConnection;
|
|
55
|
-
constructor(userId: string, streamId: string, riverConnection: RiverConnection
|
|
56
|
-
onStreamInitialized(streamId: string): void;
|
|
57
|
-
onStreamUsernameUpdated(streamId: string, userId: string): void;
|
|
58
|
-
onStreamNftUpdated: (streamId: string, userId: string) => void;
|
|
59
|
-
onStreamEnsAddressUpdated: (streamId: string, userId: string) => void;
|
|
60
|
-
onStreamDisplayNameUpdated: (streamId: string, userId: string) => void;
|
|
61
|
-
onStreamMembershipUpdated: (streamId: string, userId: string, membership: MembershipOp) => void;
|
|
62
|
-
get username(): string;
|
|
63
|
-
get displayName(): string;
|
|
64
|
-
get ensAddress(): string | undefined;
|
|
65
|
-
get nft(): NftModel | undefined;
|
|
66
|
-
get membership(): MembershipOp | undefined;
|
|
24
|
+
constructor(userId: string, streamId: string, riverConnection: RiverConnection);
|
|
67
25
|
}
|
|
68
26
|
//# sourceMappingURL=member.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"member.d.ts","sourceRoot":"","sources":["../../../../src/sync-agent/members/models/member.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"member.d.ts","sourceRoot":"","sources":["../../../../src/sync-agent/members/models/member.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAE3D,MAAM,MAAM,WAAW,GAAG;IACtB,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAA;IAChB,kDAAkD;IAClD,WAAW,EAAE,OAAO,CAAA;IACpB;;;;OAIG;IACH,0CAA0C;IAC1C,UAAU,CAAC,EAAE,YAAY,CAAA;IACzB,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAGD,qBAAa,MAAO,SAAQ,UAAU,CAAC,WAAW,CAAC;IAE3C,OAAO,CAAC,MAAM;IAEd,SAAS,CAAC,eAAe,EAAE,eAAe;gBAFlC,MAAM,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EACN,eAAe,EAAE,eAAe;CAyBjD"}
|