@towns-protocol/sdk 0.0.252 → 0.0.255

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.
Files changed (176) hide show
  1. package/dist/client.d.ts +2 -1
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +6 -5
  4. package/dist/client.js.map +1 -1
  5. package/dist/clientDecryptionExtensions.d.ts +2 -1
  6. package/dist/clientDecryptionExtensions.d.ts.map +1 -1
  7. package/dist/clientDecryptionExtensions.js +1 -1
  8. package/dist/clientDecryptionExtensions.js.map +1 -1
  9. package/dist/decryptionExtensions.d.ts +199 -0
  10. package/dist/decryptionExtensions.d.ts.map +1 -0
  11. package/dist/decryptionExtensions.js +678 -0
  12. package/dist/decryptionExtensions.js.map +1 -0
  13. package/dist/index.d.ts +21 -5
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +21 -5
  16. package/dist/index.js.map +1 -1
  17. package/dist/observable/combine.d.ts +4 -2
  18. package/dist/observable/combine.d.ts.map +1 -1
  19. package/dist/observable/combine.js +5 -2
  20. package/dist/observable/combine.js.map +1 -1
  21. package/dist/observable/observable.d.ts +1 -1
  22. package/dist/observable/observable.d.ts.map +1 -1
  23. package/dist/observable/observable.js +1 -4
  24. package/dist/observable/observable.js.map +1 -1
  25. package/dist/observable/observableRecord.d.ts +18 -0
  26. package/dist/observable/observableRecord.d.ts.map +1 -0
  27. package/dist/observable/observableRecord.js +71 -0
  28. package/dist/observable/observableRecord.js.map +1 -0
  29. package/dist/observable/utils.d.ts +2 -0
  30. package/dist/observable/utils.d.ts.map +1 -0
  31. package/dist/observable/utils.js +12 -0
  32. package/dist/observable/utils.js.map +1 -0
  33. package/dist/stream.d.ts +1 -1
  34. package/dist/stream.d.ts.map +1 -1
  35. package/dist/streamEvents.d.ts +2 -1
  36. package/dist/streamEvents.d.ts.map +1 -1
  37. package/dist/streamStateView.d.ts +1 -1
  38. package/dist/streamStateView.d.ts.map +1 -1
  39. package/dist/streamStateView.js +9 -9
  40. package/dist/streamStateView.js.map +1 -1
  41. package/dist/streamStateView_ChannelMetadata.d.ts +10 -10
  42. package/dist/streamStateView_ChannelMetadata.d.ts.map +1 -1
  43. package/dist/streamStateView_ChannelMetadata.js +43 -23
  44. package/dist/streamStateView_ChannelMetadata.js.map +1 -1
  45. package/dist/streamStateView_DMChannel.d.ts +7 -4
  46. package/dist/streamStateView_DMChannel.d.ts.map +1 -1
  47. package/dist/streamStateView_DMChannel.js +18 -8
  48. package/dist/streamStateView_DMChannel.js.map +1 -1
  49. package/dist/streamStateView_GDMChannel.d.ts +5 -2
  50. package/dist/streamStateView_GDMChannel.d.ts.map +1 -1
  51. package/dist/streamStateView_GDMChannel.js +12 -5
  52. package/dist/streamStateView_GDMChannel.js.map +1 -1
  53. package/dist/streamStateView_Members.d.ts +5 -2
  54. package/dist/streamStateView_Members.d.ts.map +1 -1
  55. package/dist/streamStateView_Members.js +11 -1
  56. package/dist/streamStateView_Members.js.map +1 -1
  57. package/dist/streamStateView_Members_Solicitations.d.ts +1 -1
  58. package/dist/streamStateView_Members_Solicitations.d.ts.map +1 -1
  59. package/dist/streamStateView_Space.d.ts +5 -8
  60. package/dist/streamStateView_Space.d.ts.map +1 -1
  61. package/dist/streamStateView_Space.js +26 -23
  62. package/dist/streamStateView_Space.js.map +1 -1
  63. package/dist/streamStateView_User.d.ts +11 -18
  64. package/dist/streamStateView_User.d.ts.map +1 -1
  65. package/dist/streamStateView_User.js +35 -20
  66. package/dist/streamStateView_User.js.map +1 -1
  67. package/dist/streamStateView_UserInbox.d.ts +4 -1
  68. package/dist/streamStateView_UserInbox.d.ts.map +1 -1
  69. package/dist/streamStateView_UserInbox.js +6 -1
  70. package/dist/streamStateView_UserInbox.js.map +1 -1
  71. package/dist/streamStateView_UserMetadata.d.ts +4 -1
  72. package/dist/streamStateView_UserMetadata.d.ts.map +1 -1
  73. package/dist/streamStateView_UserMetadata.js +6 -1
  74. package/dist/streamStateView_UserMetadata.js.map +1 -1
  75. package/dist/streamStateView_UserSettings.d.ts +4 -3
  76. package/dist/streamStateView_UserSettings.d.ts.map +1 -1
  77. package/dist/streamStateView_UserSettings.js +11 -12
  78. package/dist/streamStateView_UserSettings.js.map +1 -1
  79. package/dist/sync-agent/entitlements/entitlements.d.ts +1 -1
  80. package/dist/sync-agent/river-connection/models/transactionalClient.d.ts +2 -1
  81. package/dist/sync-agent/river-connection/models/transactionalClient.d.ts.map +1 -1
  82. package/dist/sync-agent/river-connection/models/transactionalClient.js.map +1 -1
  83. package/dist/sync-agent/river-connection/riverConnection.d.ts +2 -1
  84. package/dist/sync-agent/river-connection/riverConnection.d.ts.map +1 -1
  85. package/dist/sync-agent/river-connection/riverConnection.js.map +1 -1
  86. package/dist/sync-agent/spaces/models/space.js +1 -1
  87. package/dist/sync-agent/spaces/models/space.js.map +1 -1
  88. package/dist/sync-agent/timeline/models/timeline-types.d.ts +1 -2
  89. package/dist/sync-agent/timeline/models/timeline-types.d.ts.map +1 -1
  90. package/dist/sync-agent/timeline/models/timeline-types.js +1 -2
  91. package/dist/sync-agent/timeline/models/timeline-types.js.map +1 -1
  92. package/dist/sync-agent/user/models/userMemberships.d.ts.map +1 -1
  93. package/dist/sync-agent/user/models/userMemberships.js +3 -1
  94. package/dist/sync-agent/user/models/userMemberships.js.map +1 -1
  95. package/dist/syncedStream.js +1 -1
  96. package/dist/syncedStream.js.map +1 -1
  97. package/dist/tests/multi/channelSpaceSettings.test.js +23 -23
  98. package/dist/tests/multi/channelSpaceSettings.test.js.map +1 -1
  99. package/dist/tests/multi_ne/client.test.js +2 -1
  100. package/dist/tests/multi_ne/client.test.js.map +1 -1
  101. package/dist/tests/multi_ne/space.test.js +5 -7
  102. package/dist/tests/multi_ne/space.test.js.map +1 -1
  103. package/dist/tests/multi_ne/streamStateView_User.test.js +3 -3
  104. package/dist/tests/multi_ne/streamStateView_User.test.js.map +1 -1
  105. package/dist/tests/testUtils.d.ts +1 -1
  106. package/dist/tests/testUtils.d.ts.map +1 -1
  107. package/dist/tests/unit/decryptionExtensions.test.d.ts +2 -0
  108. package/dist/tests/unit/decryptionExtensions.test.d.ts.map +1 -0
  109. package/dist/tests/unit/decryptionExtensions.test.js +353 -0
  110. package/dist/tests/unit/decryptionExtensions.test.js.map +1 -0
  111. package/dist/tests/unit/observable/combine.test.js +23 -23
  112. package/dist/tests/unit/observable/combine.test.js.map +1 -1
  113. package/dist/types.d.ts +1 -1
  114. package/dist/types.d.ts.map +1 -1
  115. package/dist/views/streams/channelStreams.d.ts +8 -0
  116. package/dist/views/streams/channelStreams.d.ts.map +1 -0
  117. package/dist/views/streams/channelStreams.js +9 -0
  118. package/dist/views/streams/channelStreams.js.map +1 -0
  119. package/dist/views/streams/dmStreams.d.ts +13 -0
  120. package/dist/views/streams/dmStreams.d.ts.map +1 -0
  121. package/dist/views/streams/dmStreams.js +33 -0
  122. package/dist/views/streams/dmStreams.js.map +1 -0
  123. package/dist/views/streams/gdmStreams.d.ts +16 -0
  124. package/dist/views/streams/gdmStreams.d.ts.map +1 -0
  125. package/dist/views/streams/gdmStreams.js +40 -0
  126. package/dist/views/streams/gdmStreams.js.map +1 -0
  127. package/dist/views/streams/spaceStreams.d.ts +17 -0
  128. package/dist/views/streams/spaceStreams.d.ts.map +1 -0
  129. package/dist/views/streams/spaceStreams.js +52 -0
  130. package/dist/views/streams/spaceStreams.js.map +1 -0
  131. package/dist/views/streams/streamMemberIds.d.ts +8 -0
  132. package/dist/views/streams/streamMemberIds.d.ts.map +1 -0
  133. package/dist/views/streams/streamMemberIds.js +34 -0
  134. package/dist/views/streams/streamMemberIds.js.map +1 -0
  135. package/dist/views/streams/streamStatus.d.ts +3 -2
  136. package/dist/views/streams/streamStatus.d.ts.map +1 -1
  137. package/dist/views/streams/streamStatus.js +11 -9
  138. package/dist/views/streams/streamStatus.js.map +1 -1
  139. package/dist/views/streams/timelineEvents.d.ts +1 -1
  140. package/dist/views/streams/timelines.d.ts +1 -1
  141. package/dist/views/streams/unreadMarkersTransform.d.ts +1 -1
  142. package/dist/views/streams/unreadMarkersTransform.d.ts.map +1 -1
  143. package/dist/views/streams/unreadMarkersTransform.js.map +1 -1
  144. package/dist/views/streams/userInboxStreams.d.ts +8 -0
  145. package/dist/views/streams/userInboxStreams.d.ts.map +1 -0
  146. package/dist/views/streams/userInboxStreams.js +11 -0
  147. package/dist/views/streams/userInboxStreams.js.map +1 -0
  148. package/dist/views/streams/userMetadataStreams.d.ts +8 -0
  149. package/dist/views/streams/userMetadataStreams.d.ts.map +1 -0
  150. package/dist/views/streams/userMetadataStreams.js +12 -0
  151. package/dist/views/streams/userMetadataStreams.js.map +1 -0
  152. package/dist/views/streams/userSettingsStreams.d.ts +6 -5
  153. package/dist/views/streams/userSettingsStreams.d.ts.map +1 -1
  154. package/dist/views/streams/userSettingsStreams.js +29 -17
  155. package/dist/views/streams/userSettingsStreams.js.map +1 -1
  156. package/dist/views/streams/userStreamsView.d.ts +26 -0
  157. package/dist/views/streams/userStreamsView.d.ts.map +1 -0
  158. package/dist/views/streams/userStreamsView.js +106 -0
  159. package/dist/views/streams/userStreamsView.js.map +1 -0
  160. package/dist/views/streamsView.d.ts +28 -2
  161. package/dist/views/streamsView.d.ts.map +1 -1
  162. package/dist/views/streamsView.js +71 -10
  163. package/dist/views/streamsView.js.map +1 -1
  164. package/dist/views/transforms/dmsAndGdmsTransform.d.ts +24 -0
  165. package/dist/views/transforms/dmsAndGdmsTransform.d.ts.map +1 -0
  166. package/dist/views/transforms/dmsAndGdmsTransform.js +63 -0
  167. package/dist/views/transforms/dmsAndGdmsTransform.js.map +1 -0
  168. package/dist/views/transforms/membershipsTransform.d.ts +4 -0
  169. package/dist/views/transforms/membershipsTransform.d.ts.map +1 -0
  170. package/dist/views/transforms/membershipsTransform.js +16 -0
  171. package/dist/views/transforms/membershipsTransform.js.map +1 -0
  172. package/dist/views/transforms/spaceIdsTransform.d.ts +3 -0
  173. package/dist/views/transforms/spaceIdsTransform.d.ts.map +1 -0
  174. package/dist/views/transforms/spaceIdsTransform.js +14 -0
  175. package/dist/views/transforms/spaceIdsTransform.js.map +1 -0
  176. package/package.json +9 -9
@@ -1,43 +1,55 @@
1
- import { Observable } from '../../observable/observable';
2
- export class UserSettingsStreams extends Observable {
1
+ import { UserSettingsPayload_Snapshot_UserBlocksSchema, } from '@towns-protocol/proto';
2
+ import { create } from '@bufbuild/protobuf';
3
+ import { ObservableRecord } from '../../observable/observableRecord';
4
+ const EMPTY_USER_BLOCKS = create(UserSettingsPayload_Snapshot_UserBlocksSchema, {
5
+ blocks: [],
6
+ userId: new Uint8Array(),
7
+ });
8
+ export class UserSettingsStreamsView extends ObservableRecord {
3
9
  constructor() {
4
- super({});
10
+ super({
11
+ makeDefault: (userSettingsStreamId) => ({
12
+ streamId: userSettingsStreamId,
13
+ fullyReadMarkers: {},
14
+ userBlocks: {},
15
+ }),
16
+ });
5
17
  }
6
- setFullyReadMarkers(userStreamId, streamId, fullyReadMarkers) {
18
+ setFullyReadMarkers(userSettingsStreamId, streamId, fullyReadMarkers) {
7
19
  this.set((prev) => ({
8
20
  ...prev,
9
- [userStreamId]: {
10
- ...prev[userStreamId],
21
+ [userSettingsStreamId]: {
22
+ ...(prev[userSettingsStreamId] ?? this.makeDefault(userSettingsStreamId)),
11
23
  fullyReadMarkers: {
12
- ...(prev[userStreamId]?.fullyReadMarkers ?? {}),
24
+ ...(prev[userSettingsStreamId]?.fullyReadMarkers ?? {}),
13
25
  [streamId]: fullyReadMarkers,
14
26
  },
15
27
  },
16
28
  }));
17
29
  }
18
- setUserBlocks(userStreamId, userId, userBlocks) {
30
+ setUserBlocks(userSettingsStreamId, userId, userBlocks) {
19
31
  this.set((prev) => ({
20
32
  ...prev,
21
- [userStreamId]: {
22
- ...prev[userStreamId],
33
+ [userSettingsStreamId]: {
34
+ ...(prev[userSettingsStreamId] ?? this.makeDefault(userSettingsStreamId)),
23
35
  userBlocks: {
24
- ...(prev[userStreamId]?.userBlocks ?? {}),
36
+ ...(prev[userSettingsStreamId]?.userBlocks ?? {}),
25
37
  [userId]: userBlocks,
26
38
  },
27
39
  },
28
40
  }));
29
41
  }
30
- updateUserBlock(userStreamId, userId, userBlock) {
42
+ updateUserBlock(userSettingsStreamId, userId, userBlock) {
31
43
  this.set((prev) => ({
32
44
  ...prev,
33
- [userStreamId]: {
34
- ...prev[userStreamId],
45
+ [userSettingsStreamId]: {
46
+ ...(prev[userSettingsStreamId] ?? this.makeDefault(userSettingsStreamId)),
35
47
  userBlocks: {
36
- ...(prev[userStreamId]?.userBlocks ?? {}),
48
+ ...(prev[userSettingsStreamId]?.userBlocks ?? {}),
37
49
  [userId]: {
38
- ...(prev[userStreamId]?.userBlocks[userId] ?? {}),
50
+ ...(prev[userSettingsStreamId]?.userBlocks[userId] ?? EMPTY_USER_BLOCKS),
39
51
  blocks: [
40
- ...(prev[userStreamId]?.userBlocks[userId]?.blocks ?? []),
52
+ ...(prev[userSettingsStreamId]?.userBlocks[userId]?.blocks ?? []),
41
53
  userBlock,
42
54
  ],
43
55
  },
@@ -1 +1 @@
1
- {"version":3,"file":"userSettingsStreams.js","sourceRoot":"","sources":["../../../src/views/streams/userSettingsStreams.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAOxD,MAAM,OAAO,mBAAoB,SAAQ,UAAmD;IACxF;QACI,KAAK,CAAC,EAAE,CAAC,CAAA;IACb,CAAC;IAED,mBAAmB,CACf,YAAoB,EACpB,QAAgB,EAChB,gBAAiD;QAEjD,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAChB,GAAG,IAAI;YACP,CAAC,YAAY,CAAC,EAAE;gBACZ,GAAG,IAAI,CAAC,YAAY,CAAC;gBACrB,gBAAgB,EAAE;oBACd,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,gBAAgB,IAAI,EAAE,CAAC;oBAC/C,CAAC,QAAQ,CAAC,EAAE,gBAAgB;iBAC/B;aACJ;SACJ,CAAC,CAAC,CAAA;IACP,CAAC;IAED,aAAa,CACT,YAAoB,EACpB,MAAc,EACd,UAAmD;QAEnD,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAChB,GAAG,IAAI;YACP,CAAC,YAAY,CAAC,EAAE;gBACZ,GAAG,IAAI,CAAC,YAAY,CAAC;gBACrB,UAAU,EAAE;oBACR,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,IAAI,EAAE,CAAC;oBACzC,CAAC,MAAM,CAAC,EAAE,UAAU;iBACvB;aACJ;SACJ,CAAC,CAAC,CAAA;IACP,CAAC;IAED,eAAe,CACX,YAAoB,EACpB,MAAc,EACd,SAAwD;QAExD,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAChB,GAAG,IAAI;YACP,CAAC,YAAY,CAAC,EAAE;gBACZ,GAAG,IAAI,CAAC,YAAY,CAAC;gBACrB,UAAU,EAAE;oBACR,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,IAAI,EAAE,CAAC;oBACzC,CAAC,MAAM,CAAC,EAAE;wBACN,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;wBACjD,MAAM,EAAE;4BACJ,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;4BACzD,SAAS;yBACZ;qBACJ;iBACJ;aACJ;SACJ,CAAC,CAAC,CAAA;IACP,CAAC;CACJ"}
1
+ {"version":3,"file":"userSettingsStreams.js","sourceRoot":"","sources":["../../../src/views/streams/userSettingsStreams.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,6CAA6C,GAChD,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AAQpE,MAAM,iBAAiB,GAA4C,MAAM,CACrE,6CAA6C,EAC7C;IACI,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,IAAI,UAAU,EAAE;CAC3B,CACJ,CAAA;AAED,MAAM,OAAO,uBAAwB,SAAQ,gBAAiD;IAC1F;QACI,KAAK,CAAC;YACF,WAAW,EAAE,CAAC,oBAA4B,EAA2B,EAAE,CAAC,CAAC;gBACrE,QAAQ,EAAE,oBAAoB;gBAC9B,gBAAgB,EAAE,EAAE;gBACpB,UAAU,EAAE,EAAE;aACjB,CAAC;SACL,CAAC,CAAA;IACN,CAAC;IAED,mBAAmB,CACf,oBAA4B,EAC5B,QAAgB,EAChB,gBAAiD;QAEjD,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAChB,GAAG,IAAI;YACP,CAAC,oBAAoB,CAAC,EAAE;gBACpB,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;gBACzE,gBAAgB,EAAE;oBACd,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,gBAAgB,IAAI,EAAE,CAAC;oBACvD,CAAC,QAAQ,CAAC,EAAE,gBAAgB;iBAC/B;aACJ;SACJ,CAAC,CAAC,CAAA;IACP,CAAC;IAED,aAAa,CACT,oBAA4B,EAC5B,MAAc,EACd,UAAmD;QAEnD,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAChB,GAAG,IAAI;YACP,CAAC,oBAAoB,CAAC,EAAE;gBACpB,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;gBACzE,UAAU,EAAE;oBACR,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,UAAU,IAAI,EAAE,CAAC;oBACjD,CAAC,MAAM,CAAC,EAAE,UAAU;iBACvB;aACJ;SACJ,CAAC,CAAC,CAAA;IACP,CAAC;IAED,eAAe,CACX,oBAA4B,EAC5B,MAAc,EACd,SAAwD;QAExD,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAChB,GAAG,IAAI;YACP,CAAC,oBAAoB,CAAC,EAAE;gBACpB,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;gBACzE,UAAU,EAAE;oBACR,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,UAAU,IAAI,EAAE,CAAC;oBACjD,CAAC,MAAM,CAAC,EAAE;wBACN,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC;wBACxE,MAAM,EAAE;4BACJ,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;4BACjE,SAAS;yBACZ;qBACJ;iBACJ;aACJ;SACJ,CAAC,CAAC,CAAA;IACP,CAAC;CACJ"}
@@ -0,0 +1,26 @@
1
+ import { BlockchainTransaction_TokenTransfer, UserPayload_UserMembership } from '@towns-protocol/proto';
2
+ import { ObservableRecord } from '../../observable/observableRecord';
3
+ export interface UserStreamModel {
4
+ streamId: string;
5
+ streamMemberships: Record<string, UserPayload_UserMembership | undefined>;
6
+ tipsSent: Record<string, bigint | undefined>;
7
+ tipsReceived: Record<string, bigint | undefined>;
8
+ tipsSentCount: Record<string, bigint | undefined>;
9
+ tipsReceivedCount: Record<string, bigint | undefined>;
10
+ tokenTransfers: BlockchainTransaction_TokenTransfer[];
11
+ }
12
+ export declare class UserStreamsView extends ObservableRecord<string, UserStreamModel> {
13
+ constructor();
14
+ setMembership(userStreamId: string, streamId: string, membership: UserPayload_UserMembership): void;
15
+ setTips(userStreamId: string, tips: {
16
+ tipsSent: Record<string, bigint>;
17
+ tipsReceived: Record<string, bigint>;
18
+ tipsSentCount: Record<string, bigint>;
19
+ tipsReceivedCount: Record<string, bigint>;
20
+ }): void;
21
+ prependTokenTransfer(userStreamId: string, tokenTransfer: BlockchainTransaction_TokenTransfer): void;
22
+ appendTokenTransfer(userStreamId: string, tokenTransfer: BlockchainTransaction_TokenTransfer): void;
23
+ appendTipSent(userStreamId: string, currency: string, amount: bigint): void;
24
+ appendTipReceived(userStreamId: string, currency: string, amount: bigint): void;
25
+ }
26
+ //# sourceMappingURL=userStreamsView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userStreamsView.d.ts","sourceRoot":"","sources":["../../../src/views/streams/userStreamsView.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mCAAmC,EACnC,0BAA0B,EAC7B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AAEpE,MAAM,WAAW,eAAe;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,GAAG,SAAS,CAAC,CAAA;IACzE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IAC5C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IAChD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IACjD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IACrD,cAAc,EAAE,mCAAmC,EAAE,CAAA;CACxD;AAED,qBAAa,eAAgB,SAAQ,gBAAgB,CAAC,MAAM,EAAE,eAAe,CAAC;;IAe1E,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,0BAA0B;IAgB5F,OAAO,CACH,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE;QACF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACpC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACrC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAC5C;IAcL,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,mCAAmC;IAa7F,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,mCAAmC;IAa5F,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAoBpE,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAmB3E"}
@@ -0,0 +1,106 @@
1
+ import { ObservableRecord } from '../../observable/observableRecord';
2
+ export class UserStreamsView extends ObservableRecord {
3
+ constructor() {
4
+ super({
5
+ makeDefault: (userStreamId) => ({
6
+ streamId: userStreamId,
7
+ streamMemberships: {},
8
+ tipsSent: {},
9
+ tipsReceived: {},
10
+ tipsSentCount: {},
11
+ tipsReceivedCount: {},
12
+ tokenTransfers: [],
13
+ }),
14
+ });
15
+ }
16
+ setMembership(userStreamId, streamId, membership) {
17
+ this.set((prev) => {
18
+ const prevStream = prev[userStreamId] ?? this.makeDefault(userStreamId);
19
+ return {
20
+ ...prev,
21
+ [userStreamId]: {
22
+ ...prevStream,
23
+ streamMemberships: {
24
+ ...prevStream.streamMemberships,
25
+ [streamId]: membership,
26
+ },
27
+ },
28
+ };
29
+ });
30
+ }
31
+ setTips(userStreamId, tips) {
32
+ this.set((prev) => {
33
+ const prevStream = prev[userStreamId] ?? this.makeDefault(userStreamId);
34
+ return {
35
+ ...prev,
36
+ [userStreamId]: {
37
+ ...prevStream,
38
+ ...tips,
39
+ },
40
+ };
41
+ });
42
+ }
43
+ prependTokenTransfer(userStreamId, tokenTransfer) {
44
+ this.set((prev) => {
45
+ const prevStream = prev[userStreamId] ?? this.makeDefault(userStreamId);
46
+ return {
47
+ ...prev,
48
+ [userStreamId]: {
49
+ ...prevStream,
50
+ tokenTransfers: [tokenTransfer, ...prevStream.tokenTransfers],
51
+ },
52
+ };
53
+ });
54
+ }
55
+ appendTokenTransfer(userStreamId, tokenTransfer) {
56
+ this.set((prev) => {
57
+ const prevStream = prev[userStreamId] ?? this.makeDefault(userStreamId);
58
+ return {
59
+ ...prev,
60
+ [userStreamId]: {
61
+ ...prevStream,
62
+ tokenTransfers: [...prevStream.tokenTransfers, tokenTransfer],
63
+ },
64
+ };
65
+ });
66
+ }
67
+ appendTipSent(userStreamId, currency, amount) {
68
+ this.set((prev) => {
69
+ const prevStream = prev[userStreamId] ?? this.makeDefault(userStreamId);
70
+ return {
71
+ ...prev,
72
+ [userStreamId]: {
73
+ ...prevStream,
74
+ tipsSent: {
75
+ ...prevStream.tipsSent,
76
+ [currency]: (prevStream.tipsSent[currency] ?? 0n) + amount,
77
+ },
78
+ tipsSentCount: {
79
+ ...prevStream.tipsSentCount,
80
+ [currency]: (prevStream.tipsSentCount[currency] ?? 0n) + 1n,
81
+ },
82
+ },
83
+ };
84
+ });
85
+ }
86
+ appendTipReceived(userStreamId, currency, amount) {
87
+ this.set((prev) => {
88
+ const prevStream = prev[userStreamId] ?? this.makeDefault(userStreamId);
89
+ return {
90
+ ...prev,
91
+ [userStreamId]: {
92
+ ...prevStream,
93
+ tipsReceived: {
94
+ ...prevStream.tipsReceived,
95
+ [currency]: (prevStream.tipsReceived[currency] ?? 0n) + amount,
96
+ },
97
+ tipsReceivedCount: {
98
+ ...prevStream.tipsReceivedCount,
99
+ [currency]: (prevStream.tipsReceivedCount[currency] ?? 0n) + 1n,
100
+ },
101
+ },
102
+ };
103
+ });
104
+ }
105
+ }
106
+ //# sourceMappingURL=userStreamsView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userStreamsView.js","sourceRoot":"","sources":["../../../src/views/streams/userStreamsView.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,43 @@
1
1
  import { Observable } from '../observable/observable';
2
2
  import { StreamStatus } from './streams/streamStatus';
3
3
  import { TimelinesView, TimelinesViewDelegate } from './streams/timelines';
4
- import { UserSettingsStreams } from './streams/userSettingsStreams';
4
+ import { UserSettingsStreamModel, UserSettingsStreamsView } from './streams/userSettingsStreams';
5
5
  import { UnreadMarkersModel } from './streams/unreadMarkersTransform';
6
6
  import { MentionsModel } from './streams/spaceMentionsTransform';
7
+ import { SpaceStreamsView } from './streams/spaceStreams';
8
+ import { UserStreamModel, UserStreamsView } from './streams/userStreamsView';
9
+ import { UserMetadataStreamModel, UserMetadataStreamsView } from './streams/userMetadataStreams';
10
+ import { UserInboxStreamModel, UserInboxStreamsView } from './streams/userInboxStreams';
11
+ import { ChannelStreamsView } from './streams/channelStreams';
12
+ import { DmStreamsView } from './streams/dmStreams';
13
+ import { GdmStreamsView } from './streams/gdmStreams';
14
+ import { Membership } from '../sync-agent/timeline/models/timeline-types';
15
+ import { DmAndGdmModel } from './transforms/dmsAndGdmsTransform';
16
+ import { StreamMemberIdsView } from './streams/streamMemberIds';
7
17
  export type StreamsViewDelegate = TimelinesViewDelegate;
8
18
  export declare class StreamsView {
9
19
  readonly streamStatus: StreamStatus;
20
+ readonly streamMemberIds: StreamMemberIdsView;
21
+ readonly spaceStreams: SpaceStreamsView;
22
+ readonly channelStreams: ChannelStreamsView;
23
+ readonly dmStreams: DmStreamsView;
24
+ readonly gdmStreams: GdmStreamsView;
25
+ readonly userStreams: UserStreamsView;
26
+ readonly userInboxStreams: UserInboxStreamsView;
27
+ readonly userMetadataStreams: UserMetadataStreamsView;
28
+ readonly userSettingsStreams: UserSettingsStreamsView;
10
29
  readonly timelinesView: TimelinesView;
11
- readonly userSettingsStreams: UserSettingsStreams;
12
30
  readonly my: {
31
+ userId: Observable<string>;
32
+ userStream: Observable<UserStreamModel | undefined>;
33
+ userInboxStream: Observable<UserInboxStreamModel | undefined>;
34
+ userMetadataStream: Observable<UserMetadataStreamModel | undefined>;
35
+ userSettingsStream: Observable<UserSettingsStreamModel | undefined>;
13
36
  unreadMarkers: Observable<UnreadMarkersModel>;
14
37
  spaceMentions: Observable<MentionsModel>;
38
+ memberships: Observable<Record<string, Membership>>;
39
+ spaceIds: Observable<string[]>;
40
+ dmsAndGdms: Observable<DmAndGdmModel[]>;
15
41
  };
16
42
  constructor(userId: string, delegate: StreamsViewDelegate | undefined);
17
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"streamsView.d.ts","sourceRoot":"","sources":["../../src/views/streamsView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAE1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAA0B,MAAM,kCAAkC,CAAA;AAC7F,OAAO,EAAE,aAAa,EAA0B,MAAM,kCAAkC,CAAA;AAExF,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,CAAA;AAGvD,qBAAa,WAAW;IACpB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;IACnC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAA;IACjD,QAAQ,CAAC,EAAE,EAAE;QACT,aAAa,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAA;QAC7C,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,CAAA;KAC3C,CAAA;gBAEW,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,SAAS;CAkCxE"}
1
+ {"version":3,"file":"streamsView.d.ts","sourceRoot":"","sources":["../../src/views/streamsView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAO1E,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAChG,OAAO,EAAE,kBAAkB,EAA0B,MAAM,kCAAkC,CAAA;AAC7F,OAAO,EAAE,aAAa,EAA0B,MAAM,kCAAkC,CAAA;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC5E,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAChG,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAA;AAEzE,OAAO,EAAE,aAAa,EAAuB,MAAM,kCAAkC,CAAA;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAE/D,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,CAAA;AAGvD,qBAAa,WAAW;IACpB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;IACnC,QAAQ,CAAC,eAAe,EAAE,mBAAmB,CAAA;IAC7C,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAA;IACvC,QAAQ,CAAC,cAAc,EAAE,kBAAkB,CAAA;IAC3C,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAA;IACjC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAA;IACnC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAA;IACrC,QAAQ,CAAC,gBAAgB,EAAE,oBAAoB,CAAA;IAC/C,QAAQ,CAAC,mBAAmB,EAAE,uBAAuB,CAAA;IACrD,QAAQ,CAAC,mBAAmB,EAAE,uBAAuB,CAAA;IACrD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,QAAQ,CAAC,EAAE,EAAE;QACT,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;QAC1B,UAAU,EAAE,UAAU,CAAC,eAAe,GAAG,SAAS,CAAC,CAAA;QACnD,eAAe,EAAE,UAAU,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAA;QAC7D,kBAAkB,EAAE,UAAU,CAAC,uBAAuB,GAAG,SAAS,CAAC,CAAA;QACnE,kBAAkB,EAAE,UAAU,CAAC,uBAAuB,GAAG,SAAS,CAAC,CAAA;QACnE,aAAa,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAA;QAC7C,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,CAAA;QACxC,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;QACnD,QAAQ,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;QAC9B,UAAU,EAAE,UAAU,CAAC,aAAa,EAAE,CAAC,CAAA;KAC1C,CAAA;gBAEW,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,SAAS;CA+ExE"}
@@ -1,41 +1,102 @@
1
1
  import { Observable } from '../observable/observable';
2
- import { Combine } from '../observable/combine';
2
+ import { combine } from '../observable/combine';
3
3
  import { StreamStatus } from './streams/streamStatus';
4
4
  import { TimelinesView } from './streams/timelines';
5
- import { makeUserSettingsStreamId } from '../id';
6
- import { UserSettingsStreams } from './streams/userSettingsStreams';
5
+ import { makeUserInboxStreamId, makeUserMetadataStreamId, makeUserSettingsStreamId, makeUserStreamId, } from '../id';
6
+ import { UserSettingsStreamsView } from './streams/userSettingsStreams';
7
7
  import { unreadMarkersTransform } from './streams/unreadMarkersTransform';
8
8
  import { spaceMentionsTransform } from './streams/spaceMentionsTransform';
9
+ import { SpaceStreamsView } from './streams/spaceStreams';
10
+ import { UserStreamsView } from './streams/userStreamsView';
11
+ import { UserMetadataStreamsView } from './streams/userMetadataStreams';
12
+ import { UserInboxStreamsView } from './streams/userInboxStreams';
13
+ import { ChannelStreamsView } from './streams/channelStreams';
14
+ import { DmStreamsView } from './streams/dmStreams';
15
+ import { GdmStreamsView } from './streams/gdmStreams';
16
+ import { membershipsTransform } from './transforms/membershipsTransform';
17
+ import { spaceIdsTransform } from './transforms/spaceIdsTransform';
18
+ import { dmsAndGdmsTransform } from './transforms/dmsAndGdmsTransform';
19
+ import { StreamMemberIdsView } from './streams/streamMemberIds';
9
20
  // a view of all the streams
10
21
  export class StreamsView {
11
22
  streamStatus;
12
- timelinesView;
23
+ streamMemberIds;
24
+ spaceStreams;
25
+ channelStreams;
26
+ dmStreams;
27
+ gdmStreams;
28
+ userStreams;
29
+ userInboxStreams;
30
+ userMetadataStreams;
13
31
  userSettingsStreams;
32
+ timelinesView;
14
33
  my;
15
34
  constructor(userId, delegate) {
35
+ const myUserId = new Observable(userId);
36
+ const userStreamId = userId !== '' ? makeUserStreamId(userId) : '';
37
+ const userInboxStreamId = userId !== '' ? makeUserInboxStreamId(userId) : '';
38
+ const userMetadataStreamId = userId !== '' ? makeUserMetadataStreamId(userId) : '';
16
39
  const userSettingsStreamId = userId !== '' ? makeUserSettingsStreamId(userId) : '';
17
- this.timelinesView = new TimelinesView(userId, delegate);
18
- this.userSettingsStreams = new UserSettingsStreams();
19
40
  this.streamStatus = new StreamStatus();
41
+ this.streamMemberIds = new StreamMemberIdsView();
42
+ this.userSettingsStreams = new UserSettingsStreamsView();
43
+ this.spaceStreams = new SpaceStreamsView();
44
+ this.channelStreams = new ChannelStreamsView();
45
+ this.dmStreams = new DmStreamsView();
46
+ this.gdmStreams = new GdmStreamsView();
47
+ this.userStreams = new UserStreamsView();
48
+ this.userMetadataStreams = new UserMetadataStreamsView();
49
+ this.userInboxStreams = new UserInboxStreamsView();
50
+ this.timelinesView = new TimelinesView(userId, delegate);
51
+ // throttle the timelines for subsequent observers
20
52
  const throttledTimelinesView = this.timelinesView.throttle(15);
21
- const myRemoteFullyReadMarkers = this.userSettingsStreams.map((x) => x[userSettingsStreamId]?.fullyReadMarkers ?? {});
22
- const unreadMarkers = new Combine({
23
- userId: new Observable(userId),
53
+ // map my streams
54
+ const myUserStream = this.userStreams.map((x) => x[userStreamId]);
55
+ const myUserInboxStream = this.userInboxStreams.map((x) => x[userInboxStreamId]);
56
+ const myUserMetadataStream = this.userMetadataStreams.map((x) => x[userMetadataStreamId]);
57
+ const myUserSettingsStream = this.userSettingsStreams.map((x) => x[userSettingsStreamId]);
58
+ // grab the remote fully read markers
59
+ const myRemoteFullyReadMarkers = myUserSettingsStream.map((x) => x?.fullyReadMarkers ?? {});
60
+ // combine the userId, my remote fully read markers, and the timelines view
61
+ // to get the unread markers
62
+ const unreadMarkers = combine({
63
+ userId: myUserId,
24
64
  myRemoteFullyReadMarkers: myRemoteFullyReadMarkers.throttle(10),
25
65
  timelinesView: throttledTimelinesView,
26
66
  })
27
67
  .throttle(250)
28
68
  .map(unreadMarkersTransform);
29
- const spaceMentions = new Combine({
69
+ // grab the space mentions
70
+ const spaceMentions = combine({
30
71
  timelinesView: throttledTimelinesView,
31
72
  fullyReadMarkers: unreadMarkers,
32
73
  })
33
74
  .throttle(250)
34
75
  .map(spaceMentionsTransform);
76
+ const throttledMyUserStream = myUserStream.throttle(10);
77
+ const myMemberships = throttledMyUserStream.map(membershipsTransform);
78
+ const mySpaceIds = myMemberships.map(spaceIdsTransform);
79
+ const myDmsAndGdms = combine({
80
+ userId: myUserId,
81
+ memberships: myMemberships,
82
+ streamMemberIds: this.streamMemberIds,
83
+ dmStreams: this.dmStreams,
84
+ gdmStreams: this.gdmStreams,
85
+ })
86
+ .throttle(250)
87
+ .map(dmsAndGdmsTransform);
35
88
  ///
36
89
  this.my = {
90
+ userId: myUserId,
91
+ userStream: myUserStream,
92
+ userInboxStream: myUserInboxStream,
93
+ userMetadataStream: myUserMetadataStream,
94
+ userSettingsStream: myUserSettingsStream,
37
95
  unreadMarkers,
38
96
  spaceMentions,
97
+ memberships: myMemberships,
98
+ spaceIds: mySpaceIds,
99
+ dmsAndGdms: myDmsAndGdms,
39
100
  };
40
101
  }
41
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"streamsView.js","sourceRoot":"","sources":["../../src/views/streamsView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAyB,MAAM,qBAAqB,CAAA;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,EAAsB,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAC7F,OAAO,EAAiB,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAIxF,4BAA4B;AAC5B,MAAM,OAAO,WAAW;IACX,YAAY,CAAc;IAC1B,aAAa,CAAe;IAC5B,mBAAmB,CAAqB;IACxC,EAAE,CAGV;IAED,YAAY,MAAc,EAAE,QAAyC;QACjE,MAAM,oBAAoB,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAElF,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QACxD,IAAI,CAAC,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAA;QACpD,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAA;QAEtC,MAAM,sBAAsB,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAE9D,MAAM,wBAAwB,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CACzD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,EAAE,gBAAgB,IAAI,EAAE,CACzD,CAAA;QAED,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC;YAC9B,MAAM,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC;YAC9B,wBAAwB,EAAE,wBAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/D,aAAa,EAAE,sBAAsB;SACxC,CAAC;aACG,QAAQ,CAAC,GAAG,CAAC;aACb,GAAG,CAAC,sBAAsB,CAAC,CAAA;QAEhC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC;YAC9B,aAAa,EAAE,sBAAsB;YACrC,gBAAgB,EAAE,aAAa;SAClC,CAAC;aACG,QAAQ,CAAC,GAAG,CAAC;aACb,GAAG,CAAC,sBAAsB,CAAC,CAAA;QAEhC,GAAG;QACH,IAAI,CAAC,EAAE,GAAG;YACN,aAAa;YACb,aAAa;SAChB,CAAA;IACL,CAAC;CACJ"}
1
+ {"version":3,"file":"streamsView.js","sourceRoot":"","sources":["../../src/views/streamsView.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { ChannelProperties } from '@towns-protocol/proto';
2
+ import { Membership } from '../../sync-agent/timeline/models/timeline-types';
3
+ import { DmStreamModel } from '../streams/dmStreams';
4
+ import { GdmStreamModel } from '../streams/gdmStreams';
5
+ export interface DmAndGdmModel {
6
+ id: string;
7
+ joined: boolean;
8
+ left: boolean;
9
+ userIds: string[];
10
+ properties?: ChannelProperties;
11
+ isDecryptingProperties?: boolean;
12
+ lastEventCreatedAtEpochMs: bigint;
13
+ isGdm: boolean;
14
+ }
15
+ interface Input {
16
+ userId: string;
17
+ memberships: Record<string, Membership>;
18
+ streamMemberIds: Record<string, string[] | undefined>;
19
+ dmStreams: Record<string, DmStreamModel | undefined>;
20
+ gdmStreams: Record<string, GdmStreamModel | undefined>;
21
+ }
22
+ export declare function dmsAndGdmsTransform(value: Input, prev: Input, prevResult?: DmAndGdmModel[]): DmAndGdmModel[];
23
+ export {};
24
+ //# sourceMappingURL=dmsAndGdmsTransform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dmsAndGdmsTransform.d.ts","sourceRoot":"","sources":["../../../src/views/transforms/dmsAndGdmsTransform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,iDAAiD,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAItD,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,OAAO,CAAA;IACf,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAC9B,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,yBAAyB,EAAE,MAAM,CAAA;IACjC,KAAK,EAAE,OAAO,CAAA;CACjB;AAED,UAAU,KAAK;IACX,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IACvC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,CAAA;IACrD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC,CAAA;IACpD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC,CAAA;CACzD;AAED,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,KAAK,EACX,UAAU,CAAC,EAAE,aAAa,EAAE,GAC7B,aAAa,EAAE,CAiEjB"}
@@ -0,0 +1,63 @@
1
+ import { Membership } from '../../sync-agent/timeline/models/timeline-types';
2
+ import { isDefined } from '../../check';
3
+ import isEqual from 'lodash/isEqual';
4
+ export function dmsAndGdmsTransform(value, prev, prevResult) {
5
+ // note to self, it makes more sense to loop over memberships, and to hydrate the dm/gdms from
6
+ // local storage, then from remote data source, but for now we are copying existing behavior which is to
7
+ // loop over streams and filter out the ones that are not relevant to the user
8
+ const userId = value.userId;
9
+ const gdmStreams = Object.entries(value.gdmStreams)
10
+ .map(([streamId, gdmStream]) => {
11
+ if (!gdmStream) {
12
+ return undefined;
13
+ }
14
+ const membership = value.memberships[streamId];
15
+ const streamMemberIds = value.streamMemberIds[streamId]
16
+ ?.filter((memberUserId) => memberUserId !== userId)
17
+ .sort((a, b) => a.localeCompare(b));
18
+ return {
19
+ id: streamId,
20
+ joined: membership === Membership.Join,
21
+ left: membership === Membership.Leave,
22
+ userIds: streamMemberIds ?? [],
23
+ properties: gdmStream.metadata,
24
+ isDecryptingProperties: gdmStream.latestMetadataEventId !== gdmStream.metadataEventId,
25
+ lastEventCreatedAtEpochMs: gdmStream.lastEventCreatedAtEpochMs,
26
+ isGdm: true,
27
+ };
28
+ })
29
+ .filter(isDefined);
30
+ const dmStreams = Object.entries(value.dmStreams)
31
+ .map(([streamId, dmStream]) => {
32
+ if (!dmStream) {
33
+ return undefined;
34
+ }
35
+ const membership = value.memberships[streamId];
36
+ const streamMemberIds = value.streamMemberIds[streamId]
37
+ ?.filter((memberUserId, _index, numParticipants) => memberUserId !== userId || numParticipants.length === 1)
38
+ .sort((a, b) => a.localeCompare(b));
39
+ return {
40
+ id: streamId,
41
+ joined: membership === Membership.Join,
42
+ left: membership === Membership.Leave,
43
+ userIds: streamMemberIds ?? [],
44
+ properties: undefined,
45
+ lastEventCreatedAtEpochMs: dmStream.lastEventCreatedAtEpochMs,
46
+ isGdm: false,
47
+ };
48
+ })
49
+ .filter(isDefined);
50
+ const channels = [...dmStreams, ...gdmStreams].sort((a, b) => {
51
+ if (a.lastEventCreatedAtEpochMs === b.lastEventCreatedAtEpochMs) {
52
+ // If lastEventCreatedAtEpochMs is equal, sort by id
53
+ return a.id < b.id ? -1 : a.id > b.id ? 1 : 0;
54
+ }
55
+ // Otherwise, sort by lastEventCreatedAtEpochMs
56
+ return a.lastEventCreatedAtEpochMs > b.lastEventCreatedAtEpochMs ? -1 : 1;
57
+ });
58
+ if (prevResult && isEqual(prevResult, channels)) {
59
+ return prevResult;
60
+ }
61
+ return channels;
62
+ }
63
+ //# sourceMappingURL=dmsAndGdmsTransform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dmsAndGdmsTransform.js","sourceRoot":"","sources":["../../../src/views/transforms/dmsAndGdmsTransform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Membership } from '../../sync-agent/timeline/models/timeline-types';
2
+ import { UserStreamModel } from '../streams/userStreamsView';
3
+ export declare function membershipsTransform(userStream?: UserStreamModel, _prev?: UserStreamModel, prevResult?: Record<string, Membership>): Record<string, Membership>;
4
+ //# sourceMappingURL=membershipsTransform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"membershipsTransform.d.ts","sourceRoot":"","sources":["../../../src/views/transforms/membershipsTransform.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iDAAiD,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAI5D,wBAAgB,oBAAoB,CAChC,UAAU,CAAC,EAAE,eAAe,EAC5B,KAAK,CAAC,EAAE,eAAe,EACvB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GACxC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAkB5B"}
@@ -0,0 +1,16 @@
1
+ import { toMembership } from '../streams/timelineEvents';
2
+ import { isEqual } from 'lodash';
3
+ export function membershipsTransform(userStream, _prev, prevResult) {
4
+ const streamMemberships = userStream?.streamMemberships ?? {};
5
+ const memberships = Object.entries(streamMemberships).reduce((acc, entry) => {
6
+ if (entry[1]) {
7
+ acc[entry[0]] = toMembership(entry[1].op);
8
+ }
9
+ return acc;
10
+ }, {});
11
+ if (prevResult && isEqual(prevResult, memberships)) {
12
+ return prevResult;
13
+ }
14
+ return memberships;
15
+ }
16
+ //# sourceMappingURL=membershipsTransform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"membershipsTransform.js","sourceRoot":"","sources":["../../../src/views/transforms/membershipsTransform.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEhC,MAAM,UAAU,oBAAoB,CAChC,UAA4B,EAC5B,KAAuB,EACvB,UAAuC;IAEvC,MAAM,iBAAiB,GAAG,UAAU,EAAE,iBAAiB,IAAI,EAAE,CAAA;IAC7D,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,MAAM,CACxD,CACI,GAA+B,EAC/B,KAAuD,EACzD,EAAE;QACA,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAC7C,CAAC;QACD,OAAO,GAAG,CAAA;IACd,CAAC,EACD,EAAE,CACL,CAAA;IACD,IAAI,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;QACjD,OAAO,UAAU,CAAA;IACrB,CAAC;IACD,OAAO,WAAW,CAAA;AACtB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Membership } from '../../sync-agent/timeline/models/timeline-types';
2
+ export declare function spaceIdsTransform(memberships: Record<string, Membership>, _prev: Record<string, Membership>, prevResult?: string[]): string[];
3
+ //# sourceMappingURL=spaceIdsTransform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spaceIdsTransform.d.ts","sourceRoot":"","sources":["../../../src/views/transforms/spaceIdsTransform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iDAAiD,CAAA;AAI5E,wBAAgB,iBAAiB,CAC7B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACvC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACjC,UAAU,CAAC,EAAE,MAAM,EAAE,GACtB,MAAM,EAAE,CASV"}
@@ -0,0 +1,14 @@
1
+ import { Membership } from '../../sync-agent/timeline/models/timeline-types';
2
+ import { isSpaceStreamId } from '../../id';
3
+ import isEqual from 'lodash/isEqual';
4
+ export function spaceIdsTransform(memberships, _prev, prevResult) {
5
+ const spaceIds = Object.entries(memberships)
6
+ .filter(([id, membership]) => isSpaceStreamId(id) && membership === Membership.Join)
7
+ .map(([id]) => id)
8
+ .sort((a, b) => a.localeCompare(b));
9
+ if (prevResult && isEqual(prevResult, spaceIds)) {
10
+ return prevResult;
11
+ }
12
+ return spaceIds;
13
+ }
14
+ //# sourceMappingURL=spaceIdsTransform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spaceIdsTransform.js","sourceRoot":"","sources":["../../../src/views/transforms/spaceIdsTransform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iDAAiD,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,OAAO,MAAM,gBAAgB,CAAA;AAEpC,MAAM,UAAU,iBAAiB,CAC7B,WAAuC,EACvC,KAAiC,EACjC,UAAqB;IAErB,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;SACvC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,UAAU,KAAK,UAAU,CAAC,IAAI,CAAC;SACnF,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;SACjB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IACvC,IAAI,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC9C,OAAO,UAAU,CAAA;IACrB,CAAC;IACD,OAAO,QAAQ,CAAA;AACnB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@towns-protocol/sdk",
3
- "version": "0.0.252",
3
+ "version": "0.0.255",
4
4
  "packageManager": "yarn@3.8.0",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -30,13 +30,13 @@
30
30
  "@ethereumjs/util": "^10.0.0",
31
31
  "@noble/curves": "^1.9.1",
32
32
  "@noble/hashes": "^1.8.0",
33
- "@towns-protocol/dlog": "^0.0.252",
34
- "@towns-protocol/encryption": "^0.0.252",
35
- "@towns-protocol/generated": "^0.0.252",
36
- "@towns-protocol/proto": "^0.0.252",
37
- "@towns-protocol/rpc-connector": "^0.0.252",
38
- "@towns-protocol/sdk-crypto": "^0.0.252",
39
- "@towns-protocol/web3": "^0.0.252",
33
+ "@towns-protocol/dlog": "^0.0.255",
34
+ "@towns-protocol/encryption": "^0.0.255",
35
+ "@towns-protocol/generated": "^0.0.255",
36
+ "@towns-protocol/proto": "^0.0.255",
37
+ "@towns-protocol/rpc-connector": "^0.0.255",
38
+ "@towns-protocol/sdk-crypto": "^0.0.255",
39
+ "@towns-protocol/web3": "^0.0.255",
40
40
  "browser-or-node": "^3.0.0",
41
41
  "debug": "^4.3.4",
42
42
  "dexie": "^4.0.7",
@@ -72,5 +72,5 @@
72
72
  "files": [
73
73
  "/dist"
74
74
  ],
75
- "gitHead": "5964df7345c00dfa0c2681b4cd04140777e96dcb"
75
+ "gitHead": "7c7eedeb938c78663bc892df4f505b909361517f"
76
76
  }