@towns-protocol/sdk 0.0.257 → 0.0.260

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 (159) hide show
  1. package/dist/client-v2.d.ts +56 -0
  2. package/dist/client-v2.d.ts.map +1 -0
  3. package/dist/client-v2.js +182 -0
  4. package/dist/client-v2.js.map +1 -0
  5. package/dist/client.d.ts +9 -0
  6. package/dist/client.d.ts.map +1 -1
  7. package/dist/client.js +55 -29
  8. package/dist/client.js.map +1 -1
  9. package/dist/clientDecryptionExtensions.js +1 -1
  10. package/dist/clientDecryptionExtensions.js.map +1 -1
  11. package/dist/id.d.ts +4 -4
  12. package/dist/id.d.ts.map +1 -1
  13. package/dist/id.js +6 -16
  14. package/dist/id.js.map +1 -1
  15. package/dist/index.d.ts +12 -2
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +12 -2
  18. package/dist/index.js.map +1 -1
  19. package/dist/notificationsClient.d.ts +51 -0
  20. package/dist/notificationsClient.d.ts.map +1 -0
  21. package/dist/notificationsClient.js +308 -0
  22. package/dist/notificationsClient.js.map +1 -0
  23. package/dist/persistenceStore.d.ts.map +1 -1
  24. package/dist/persistenceStore.js +6 -1
  25. package/dist/persistenceStore.js.map +1 -1
  26. package/dist/riverConfig.d.ts +1 -1
  27. package/dist/riverConfig.d.ts.map +1 -1
  28. package/dist/riverConfig.js +1 -0
  29. package/dist/riverConfig.js.map +1 -1
  30. package/dist/rpcInterceptors.js +1 -1
  31. package/dist/rpcInterceptors.js.map +1 -1
  32. package/dist/streamEvents.d.ts +8 -1
  33. package/dist/streamEvents.d.ts.map +1 -1
  34. package/dist/streamStateView.d.ts +1 -1
  35. package/dist/streamStateView.d.ts.map +1 -1
  36. package/dist/streamStateView.js +3 -3
  37. package/dist/streamStateView.js.map +1 -1
  38. package/dist/streamStateView_Members.d.ts +1 -0
  39. package/dist/streamStateView_Members.d.ts.map +1 -1
  40. package/dist/streamStateView_Members.js +3 -0
  41. package/dist/streamStateView_Members.js.map +1 -1
  42. package/dist/sync-agent/spaces/models/channel.d.ts +26 -0
  43. package/dist/sync-agent/spaces/models/channel.d.ts.map +1 -1
  44. package/dist/sync-agent/spaces/models/channel.js +46 -0
  45. package/dist/sync-agent/spaces/models/channel.js.map +1 -1
  46. package/dist/sync-agent/timeline/timeline.d.ts +1 -1
  47. package/dist/sync-agent/timeline/timeline.d.ts.map +1 -1
  48. package/dist/syncedStreamsExtension.d.ts.map +1 -1
  49. package/dist/syncedStreamsExtension.js +13 -8
  50. package/dist/syncedStreamsExtension.js.map +1 -1
  51. package/dist/syncedStreamsLoop.d.ts +2 -0
  52. package/dist/syncedStreamsLoop.d.ts.map +1 -1
  53. package/dist/syncedStreamsLoop.js +22 -0
  54. package/dist/syncedStreamsLoop.js.map +1 -1
  55. package/dist/tags.d.ts +5 -0
  56. package/dist/tags.d.ts.map +1 -1
  57. package/dist/tags.js +18 -1
  58. package/dist/tags.js.map +1 -1
  59. package/dist/tests/multi/appRegistryService.test.js +22 -1
  60. package/dist/tests/multi/appRegistryService.test.js.map +1 -1
  61. package/dist/tests/multi/botEntitlements.test.d.ts +5 -0
  62. package/dist/tests/multi/botEntitlements.test.d.ts.map +1 -0
  63. package/dist/tests/multi/botEntitlements.test.js +167 -0
  64. package/dist/tests/multi/botEntitlements.test.js.map +1 -0
  65. package/dist/tests/multi/botMembership.test.d.ts +5 -0
  66. package/dist/tests/multi/botMembership.test.d.ts.map +1 -0
  67. package/dist/tests/multi/botMembership.test.js +276 -0
  68. package/dist/tests/multi/botMembership.test.js.map +1 -0
  69. package/dist/tests/multi/botStreamCreation.test.d.ts +5 -0
  70. package/dist/tests/multi/botStreamCreation.test.d.ts.map +1 -0
  71. package/dist/tests/multi/botStreamCreation.test.js +60 -0
  72. package/dist/tests/multi/botStreamCreation.test.js.map +1 -0
  73. package/dist/tests/multi/mediaWithEntitlements.test.js +3 -3
  74. package/dist/tests/multi/mediaWithEntitlements.test.js.map +1 -1
  75. package/dist/tests/multi/sync-agent/syncAgents.test.js +6 -3
  76. package/dist/tests/multi/sync-agent/syncAgents.test.js.map +1 -1
  77. package/dist/tests/multi/sync-agent/timeline.test.js +1 -1
  78. package/dist/tests/multi/sync-agent/timeline.test.js.map +1 -1
  79. package/dist/tests/multi/transactions.test.js +1 -1
  80. package/dist/tests/multi/transactions.test.js.map +1 -1
  81. package/dist/tests/multi/transactions_SpaceReview.test.js +1 -1
  82. package/dist/tests/multi/transactions_SpaceReview.test.js.map +1 -1
  83. package/dist/tests/multi/transactions_Tip.test.js +2 -2
  84. package/dist/tests/multi/transactions_Tip.test.js.map +1 -1
  85. package/dist/tests/multi_ne/channels.test.js +1 -1
  86. package/dist/tests/multi_ne/channels.test.js.map +1 -1
  87. package/dist/tests/multi_ne/client.test.js +1 -1
  88. package/dist/tests/multi_ne/client.test.js.map +1 -1
  89. package/dist/tests/multi_ne/clientDecryptionExtensions.test.js +1 -1
  90. package/dist/tests/multi_ne/clientDecryptionExtensions.test.js.map +1 -1
  91. package/dist/tests/multi_ne/media.test.js +24 -24
  92. package/dist/tests/multi_ne/media.test.js.map +1 -1
  93. package/dist/tests/multi_ne/sign.test.js +4 -4
  94. package/dist/tests/multi_ne/sign.test.js.map +1 -1
  95. package/dist/tests/multi_ne/streamRpcClientGetSince.test.js +1 -1
  96. package/dist/tests/multi_ne/streamRpcClientGetSince.test.js.map +1 -1
  97. package/dist/tests/multi_ne/syncedStream.test.js +1 -1
  98. package/dist/tests/multi_ne/syncedStream.test.js.map +1 -1
  99. package/dist/tests/multi_ne/userSettings.test.js +1 -1
  100. package/dist/tests/multi_ne/userSettings.test.js.map +1 -1
  101. package/dist/tests/testDriver_testUtils.js +1 -1
  102. package/dist/tests/testDriver_testUtils.js.map +1 -1
  103. package/dist/tests/testUtils.d.ts +1 -1
  104. package/dist/tests/testUtils.d.ts.map +1 -1
  105. package/dist/tests/testUtils.js +3 -3
  106. package/dist/tests/testUtils.js.map +1 -1
  107. package/dist/tests/unit/helpers/ConversationBuilder.d.ts +1 -1
  108. package/dist/tests/unit/helpers/ConversationBuilder.d.ts.map +1 -1
  109. package/dist/tests/unit/helpers/ConversationBuilder.js +2 -3
  110. package/dist/tests/unit/helpers/ConversationBuilder.js.map +1 -1
  111. package/dist/utils.d.ts +8 -0
  112. package/dist/utils.d.ts.map +1 -1
  113. package/dist/utils.js +27 -1
  114. package/dist/utils.js.map +1 -1
  115. package/dist/views/{streams/timelineEvents.d.ts → models/timelineEvent.d.ts} +2 -2
  116. package/dist/views/models/timelineEvent.d.ts.map +1 -0
  117. package/dist/views/{streams/timelineEvents.js → models/timelineEvent.js} +2 -3
  118. package/dist/views/models/timelineEvent.js.map +1 -0
  119. package/dist/{sync-agent/timeline/models/timeline-types.d.ts → views/models/timelineTypes.d.ts} +8 -2
  120. package/dist/views/models/timelineTypes.d.ts.map +1 -0
  121. package/dist/{sync-agent/timeline/models/timeline-types.js → views/models/timelineTypes.js} +31 -2
  122. package/dist/views/models/timelineTypes.js.map +1 -0
  123. package/dist/views/streams/spaceMentionsTransform.d.ts +1 -1
  124. package/dist/views/streams/spaceMentionsTransform.d.ts.map +1 -1
  125. package/dist/views/streams/spaceMentionsTransform.js +1 -1
  126. package/dist/views/streams/spaceMentionsTransform.js.map +1 -1
  127. package/dist/views/streams/timelines.d.ts +1 -1
  128. package/dist/views/streams/timelines.d.ts.map +1 -1
  129. package/dist/views/streams/timelines.js +3 -3
  130. package/dist/views/streams/timelines.js.map +1 -1
  131. package/dist/views/streams/timelinesModel.d.ts +1 -7
  132. package/dist/views/streams/timelinesModel.d.ts.map +1 -1
  133. package/dist/views/streams/timelinesModel.js +3 -33
  134. package/dist/views/streams/timelinesModel.js.map +1 -1
  135. package/dist/views/streams/unreadMarkersTransform.js +1 -1
  136. package/dist/views/streams/unreadMarkersTransform.js.map +1 -1
  137. package/dist/views/streamsView.d.ts +1 -1
  138. package/dist/views/streamsView.d.ts.map +1 -1
  139. package/dist/views/transforms/blockedUserIdsTransform.js +1 -1
  140. package/dist/views/transforms/blockedUserIdsTransform.js.map +1 -1
  141. package/dist/views/transforms/dmsAndGdmsTransform.d.ts +1 -1
  142. package/dist/views/transforms/dmsAndGdmsTransform.d.ts.map +1 -1
  143. package/dist/views/transforms/dmsAndGdmsTransform.js +2 -2
  144. package/dist/views/transforms/dmsAndGdmsTransform.js.map +1 -1
  145. package/dist/views/transforms/dmsAndGdmsUnreadIdsTransform.js +1 -1
  146. package/dist/views/transforms/dmsAndGdmsUnreadIdsTransform.js.map +1 -1
  147. package/dist/views/transforms/membershipsTransform.d.ts +1 -1
  148. package/dist/views/transforms/membershipsTransform.d.ts.map +1 -1
  149. package/dist/views/transforms/membershipsTransform.js +2 -2
  150. package/dist/views/transforms/membershipsTransform.js.map +1 -1
  151. package/dist/views/transforms/spaceIdsTransform.d.ts +1 -1
  152. package/dist/views/transforms/spaceIdsTransform.d.ts.map +1 -1
  153. package/dist/views/transforms/spaceIdsTransform.js +2 -2
  154. package/dist/views/transforms/spaceIdsTransform.js.map +1 -1
  155. package/package.json +11 -14
  156. package/dist/sync-agent/timeline/models/timeline-types.d.ts.map +0 -1
  157. package/dist/sync-agent/timeline/models/timeline-types.js.map +0 -1
  158. package/dist/views/streams/timelineEvents.d.ts.map +0 -1
  159. package/dist/views/streams/timelineEvents.js.map +0 -1
@@ -0,0 +1,56 @@
1
+ import { CryptoStore, GroupEncryptionAlgorithmId, GroupEncryptionCrypto, type EncryptionDeviceInitOpts } from '@towns-protocol/encryption';
2
+ import { type StreamRpcClient } from './makeStreamRpcClient';
3
+ import { type SignerContext } from './signerContext';
4
+ import { makeRiverConfig } from './riverConfig';
5
+ import { type ParsedEvent, type ParsedStreamResponse } from './types';
6
+ import { type Envelope } from '@towns-protocol/proto';
7
+ type Client_Base = {
8
+ /** The userId of the Client. */
9
+ userId: string;
10
+ /** The signer of the Client. */
11
+ signer: SignerContext;
12
+ /** RPC client that connects to the Towns network. */
13
+ rpc: StreamRpcClient;
14
+ /** The environment of the Client. */
15
+ env: string;
16
+ /** Crypto Store */
17
+ keychain: CryptoStore;
18
+ /** Crypto Backend */
19
+ crypto: GroupEncryptionCrypto;
20
+ /** Algorithm used for group encryption. */
21
+ defaultGroupEncryptionAlgorithm: GroupEncryptionAlgorithmId;
22
+ /** Disable hash validation for streams. */
23
+ disableHashValidation: boolean;
24
+ /** Disable signature validation for streams. */
25
+ disableSignatureValidation: boolean;
26
+ /** Get a stream by streamId and unpack it */
27
+ getStream: (streamId: string) => Promise<ParsedStreamResponse>;
28
+ /** Unpack envelope using client config */
29
+ unpackEnvelope: (envelope: Envelope) => Promise<ParsedEvent>;
30
+ /** Unpack envelopes using client config */
31
+ unpackEnvelopes: (envelopes: Envelope[]) => Promise<ParsedEvent[]>;
32
+ };
33
+ export type ClientV2<extended extends Extended | undefined = Extended | undefined> = Client_Base & (extended extends Extended ? extended : unknown) & {
34
+ extend: <const client extends Extended>(fn: (client: ClientV2<extended>) => client) => ClientV2<Prettify<client> & (extended extends Extended ? extended : unknown)>;
35
+ };
36
+ type Extended = Prettify<{
37
+ [_ in keyof Client_Base]?: undefined;
38
+ } & {
39
+ [key: string]: unknown;
40
+ }>;
41
+ export type Prettify<T> = {
42
+ [K in keyof T]: T[K];
43
+ } & {};
44
+ type CreateTownsClientParams = {
45
+ env: Parameters<typeof makeRiverConfig>[0];
46
+ encryptionDevice?: EncryptionDeviceInitOpts;
47
+ };
48
+ export declare const createTownsClient: (params: ({
49
+ privateKey: string;
50
+ } | {
51
+ mnemonic: string;
52
+ } | {
53
+ bearerToken: string;
54
+ }) & CreateTownsClientParams) => Promise<ClientV2>;
55
+ export {};
56
+ //# sourceMappingURL=client-v2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-v2.d.ts","sourceRoot":"","sources":["../src/client-v2.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,WAAW,EACX,0BAA0B,EAC1B,qBAAqB,EACrB,KAAK,wBAAwB,EAIhC,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACjF,OAAO,EAGH,KAAK,aAAa,EACrB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAY/C,OAAO,EAEH,KAAK,WAAW,EAChB,KAAK,oBAAoB,EAC5B,MAAM,SAAS,CAAA;AAShB,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAExE,KAAK,WAAW,GAAG;IACf,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,gCAAgC;IAChC,MAAM,EAAE,aAAa,CAAA;IACrB,qDAAqD;IACrD,GAAG,EAAE,eAAe,CAAA;IACpB,qCAAqC;IACrC,GAAG,EAAE,MAAM,CAAA;IACX,mBAAmB;IACnB,QAAQ,EAAE,WAAW,CAAA;IACrB,qBAAqB;IACrB,MAAM,EAAE,qBAAqB,CAAA;IAC7B,2CAA2C;IAC3C,+BAA+B,EAAE,0BAA0B,CAAA;IAC3D,2CAA2C;IAC3C,qBAAqB,EAAE,OAAO,CAAA;IAC9B,gDAAgD;IAChD,0BAA0B,EAAE,OAAO,CAAA;IACnC,6CAA6C;IAC7C,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAC9D,0CAA0C;IAC1C,cAAc,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,WAAW,CAAC,CAAA;IAC5D,2CAA2C;IAC3C,eAAe,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;CACrE,CAAA;AAKD,MAAM,MAAM,QAAQ,CAAC,QAAQ,SAAS,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,IAAI,WAAW,GAC5F,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,GAAG;IAC/C,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,SAAS,QAAQ,EAClC,EAAE,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,MAAM,KACzC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAA;CACrF,CAAA;AAEL,KAAK,QAAQ,GAAG,QAAQ,CAEpB;KAAG,CAAC,IAAI,MAAM,WAAW,CAAC,CAAC,EAAE,SAAS;CAAE,GAAG;IACvC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACzB,CACJ,CAAA;AAED,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACrB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACvB,GAAG,EAAE,CAAA;AAEN,KAAK,uBAAuB,GAAG;IAC3B,GAAG,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1C,gBAAgB,CAAC,EAAE,wBAAwB,CAAA;CAC9C,CAAA;AACD,eAAO,MAAM,iBAAiB,GAC1B,QAAQ,CACF;IACI,UAAU,EAAE,MAAM,CAAA;CACrB,GACD;IACI,QAAQ,EAAE,MAAM,CAAA;CACnB,GACD;IACI,WAAW,EAAE,MAAM,CAAA;CACtB,CACN,GACG,uBAAuB,KAC5B,OAAO,CAAC,QAAQ,CAuMlB,CAAA"}
@@ -0,0 +1,182 @@
1
+ import { GroupEncryptionAlgorithmId, GroupEncryptionCrypto, } from '@towns-protocol/encryption';
2
+ import { makeStreamRpcClient } from './makeStreamRpcClient';
3
+ import { makeSignerContext, makeSignerContextFromBearerToken, } from './signerContext';
4
+ import { makeRiverConfig } from './riverConfig';
5
+ import { ethers } from 'ethers';
6
+ import { RiverRegistry } from '@towns-protocol/web3';
7
+ import { makeSessionKeys } from './decryptionExtensions';
8
+ import { makeRiverProvider } from './sync-agent/utils/providers';
9
+ import { RiverDbManager } from './riverDbManager';
10
+ import { makeUserInboxStreamId, makeUserMetadataStreamId, streamIdAsBytes, userIdFromAddress, } from './id';
11
+ import { make_UserInboxPayload_GroupEncryptionSessions, } from './types';
12
+ import { makeEvent, unpackStream, unpackEnvelope as sdk_unpackEnvelope, unpackEnvelopes as sdk_unpackEnvelopes, } from './sign';
13
+ import { bin_toHexString, check } from '@towns-protocol/dlog';
14
+ import { toJsonString } from '@bufbuild/protobuf';
15
+ import { SessionKeysSchema } from '@towns-protocol/proto';
16
+ export const createTownsClient = async (params) => {
17
+ const config = makeRiverConfig(params.env);
18
+ let signer;
19
+ if ('mnemonic' in params) {
20
+ const wallet = ethers.Wallet.fromMnemonic(params.mnemonic);
21
+ const delegateWallet = ethers.Wallet.createRandom();
22
+ signer = await makeSignerContext(wallet, delegateWallet);
23
+ }
24
+ else if ('privateKey' in params) {
25
+ const wallet = new ethers.Wallet(params.privateKey);
26
+ const delegateWallet = ethers.Wallet.createRandom();
27
+ signer = await makeSignerContext(wallet, delegateWallet);
28
+ }
29
+ else {
30
+ signer = await makeSignerContextFromBearerToken(params.bearerToken);
31
+ }
32
+ const riverProvider = makeRiverProvider(config);
33
+ const riverRegistryDapp = new RiverRegistry(config.river.chainConfig, riverProvider);
34
+ const urls = await riverRegistryDapp.getOperationalNodeUrls();
35
+ const rpc = makeStreamRpcClient(urls, () => riverRegistryDapp.getOperationalNodeUrls());
36
+ const userId = userIdFromAddress(signer.creatorAddress);
37
+ const cryptoStore = RiverDbManager.getCryptoDb(userId);
38
+ await cryptoStore.initialize();
39
+ // eslint-disable-next-line prefer-const
40
+ let crypto;
41
+ const getStream = async (streamId) => {
42
+ const { disableHashValidation, disableSignatureValidation } = client;
43
+ const stream = await client.rpc.getStream({ streamId: streamIdAsBytes(streamId) });
44
+ return unpackStream(stream.stream, {
45
+ disableHashValidation,
46
+ disableSignatureValidation,
47
+ });
48
+ };
49
+ const unpackEnvelope = async (envelope) => {
50
+ const { disableHashValidation, disableSignatureValidation } = client;
51
+ return sdk_unpackEnvelope(envelope, {
52
+ disableHashValidation,
53
+ disableSignatureValidation,
54
+ });
55
+ };
56
+ const unpackEnvelopes = async (envelopes) => {
57
+ const { disableHashValidation, disableSignatureValidation } = client;
58
+ return sdk_unpackEnvelopes(envelopes, { disableHashValidation, disableSignatureValidation });
59
+ };
60
+ const buildGroupEncryptionClient = () => {
61
+ const getMiniblockInfo = async (streamId) => {
62
+ const { streamAndCookie } = await getStream(streamId);
63
+ return {
64
+ miniblockNum: streamAndCookie.miniblocks[0].header.miniblockNum,
65
+ miniblockHash: streamAndCookie.miniblocks[0].hash,
66
+ };
67
+ };
68
+ const downloadUserDeviceInfo = async (userIds) => {
69
+ const forceDownload = userIds.length <= 10;
70
+ const promises = userIds.map(async (userId) => {
71
+ const streamId = makeUserMetadataStreamId(userId);
72
+ try {
73
+ // also always download your own keys so you always share to your most up to date devices
74
+ if (!forceDownload && userId !== userId) {
75
+ const devicesFromStore = await cryptoStore.getUserDevices(userId);
76
+ if (devicesFromStore.length > 0) {
77
+ return { userId, devices: devicesFromStore };
78
+ }
79
+ }
80
+ // return latest 10 device keys
81
+ const deviceLookback = 10;
82
+ const stream = await getStream(streamId);
83
+ const encryptionDevices = stream.snapshot.content.case === 'userMetadataContent'
84
+ ? stream.snapshot.content.value.encryptionDevices
85
+ : [];
86
+ const userDevices = encryptionDevices.slice(-deviceLookback);
87
+ await cryptoStore.saveUserDevices(userId, userDevices);
88
+ return { userId, devices: userDevices };
89
+ }
90
+ catch (e) {
91
+ return { userId, devices: [] };
92
+ }
93
+ });
94
+ return (await Promise.all(promises)).reduce((acc, current) => {
95
+ acc[current.userId] = current.devices;
96
+ return acc;
97
+ }, {});
98
+ };
99
+ const encryptAndShareGroupSessions = async (streamId, sessions, toDevices, algorithm) => {
100
+ check(sessions.length >= 0, 'no sessions to encrypt');
101
+ check(new Set(sessions.map((s) => s.streamId)).size === 1, 'sessions should all be from the same stream');
102
+ check(sessions[0].algorithm === algorithm, 'algorithm mismatch');
103
+ check(new Set(sessions.map((s) => s.algorithm)).size === 1, 'all sessions should be the same algorithm');
104
+ check(sessions[0].streamId === streamId, 'streamId mismatch');
105
+ const userDevice = crypto.getUserDevice();
106
+ const sessionIds = sessions.map((session) => session.sessionId);
107
+ const payload = makeSessionKeys(sessions);
108
+ const promises = Object.entries(toDevices).map(async ([userId, deviceKeys]) => {
109
+ try {
110
+ const ciphertext = await crypto.encryptWithDeviceKeys(toJsonString(SessionKeysSchema, payload), deviceKeys);
111
+ if (Object.keys(ciphertext).length === 0) {
112
+ return;
113
+ }
114
+ const toStreamId = makeUserInboxStreamId(userId);
115
+ const { hash: miniblockHash } = await rpc.getLastMiniblockHash({
116
+ streamId: streamIdAsBytes(toStreamId),
117
+ });
118
+ const event = await makeEvent(signer, make_UserInboxPayload_GroupEncryptionSessions({
119
+ streamId: streamIdAsBytes(toStreamId),
120
+ senderKey: userDevice.deviceKey,
121
+ sessionIds: sessionIds,
122
+ ciphertexts: ciphertext,
123
+ algorithm: algorithm,
124
+ }), miniblockHash);
125
+ const eventId = bin_toHexString(event.hash);
126
+ const { error } = await rpc.addEvent({
127
+ streamId: streamIdAsBytes(streamId),
128
+ event,
129
+ optional: false,
130
+ });
131
+ return { miniblockHash, eventId, error };
132
+ }
133
+ catch {
134
+ return undefined;
135
+ }
136
+ });
137
+ await Promise.all(promises);
138
+ };
139
+ const getDevicesInStream = async (streamId) => {
140
+ const stream = await getStream(streamId);
141
+ if (!stream) {
142
+ return {};
143
+ }
144
+ const members = stream.snapshot.members?.joined.map((x) => userIdFromAddress(x.userAddress));
145
+ return downloadUserDeviceInfo(members ?? [], true);
146
+ };
147
+ return {
148
+ getMiniblockInfo,
149
+ downloadUserDeviceInfo,
150
+ encryptAndShareGroupSessions,
151
+ getDevicesInStream,
152
+ };
153
+ };
154
+ await cryptoStore.initialize();
155
+ crypto = new GroupEncryptionCrypto(buildGroupEncryptionClient(), cryptoStore);
156
+ await crypto.init(params.encryptionDevice);
157
+ const client = {
158
+ crypto,
159
+ keychain: cryptoStore,
160
+ defaultGroupEncryptionAlgorithm: GroupEncryptionAlgorithmId.HybridGroupEncryption,
161
+ rpc,
162
+ signer,
163
+ userId,
164
+ disableHashValidation: false,
165
+ disableSignatureValidation: false,
166
+ getStream,
167
+ unpackEnvelope,
168
+ unpackEnvelopes,
169
+ env: config.environmentId,
170
+ };
171
+ function extend(base) {
172
+ return (extendFn) => {
173
+ const extended = extendFn(base);
174
+ for (const key in client)
175
+ delete extended[key];
176
+ const combined = { ...base, ...extended };
177
+ return Object.assign(combined, { extend: extend(combined) });
178
+ };
179
+ }
180
+ return Object.assign(client, { extend: extend(client) });
181
+ };
182
+ //# sourceMappingURL=client-v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-v2.js","sourceRoot":"","sources":["../src/client-v2.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -15,6 +15,8 @@ import { SyncedStream } from './syncedStream';
15
15
  import { SignerContext } from './signerContext';
16
16
  import { TipEventObject } from '@towns-protocol/generated/dev/typings/ITipping';
17
17
  import { StreamsView } from './views/streamsView';
18
+ import { NotificationsClient, INotificationStore } from './notificationsClient';
19
+ import { RpcOptions } from './rpcCommon';
18
20
  export type ClientEvents = StreamEvents & DecryptionEvents;
19
21
  export type ClientOptions = {
20
22
  persistenceStoreName?: string;
@@ -27,6 +29,11 @@ export type ClientOptions = {
27
29
  useModifySync?: boolean;
28
30
  useSharedSyncer?: boolean;
29
31
  };
32
+ notifications?: {
33
+ url: string;
34
+ store?: INotificationStore;
35
+ rpcOptions?: RpcOptions;
36
+ };
30
37
  };
31
38
  type SendChannelMessageOptions = {
32
39
  beforeSendEventHook?: Promise<void>;
@@ -45,6 +52,7 @@ export declare class Client extends Client_base implements IGroupEncryptionClien
45
52
  readonly streams: SyncedStreams;
46
53
  readonly streamsView: StreamsView;
47
54
  readonly logId: string;
55
+ readonly notifications?: NotificationsClient;
48
56
  userStreamId?: string;
49
57
  userSettingsStreamId?: string;
50
58
  userMetadataStreamId?: string;
@@ -80,6 +88,7 @@ export declare class Client extends Client_base implements IGroupEncryptionClien
80
88
  initializeUser(opts?: {
81
89
  spaceId?: Uint8Array | string;
82
90
  encryptionDeviceInit?: EncryptionDeviceInitOpts;
91
+ appAddress?: Uint8Array | string;
83
92
  }): Promise<{
84
93
  initCryptoTime: number;
85
94
  initUserStreamTime: number;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAIH,sBAAsB,EACzB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACH,YAAY,EAGZ,2BAA2B,EAC3B,cAAc,EACd,mBAAmB,EACnB,gCAAgC,EAChC,iCAAiC,EACjC,8BAA8B,EAC9B,uBAAuB,EACvB,wBAAwB,EACxB,WAAW,EACX,aAAa,EACb,cAAc,EACd,4BAA4B,EAE5B,eAAe,EACf,QAAQ,EAGR,8BAA8B,EAG9B,sBAAsB,EACtB,YAAY,EACZ,OAAO,EACP,IAAI,EACJ,qBAAqB,EAIrB,cAAc,EACd,mCAAmC,EAenC,4BAA4B,EAC5B,YAAY,EACf,MAAM,uBAAuB,CAAA;AAW9B,OAAO,EAEH,WAAW,EACX,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,UAAU,EACV,oBAAoB,EACpB,KAAK,wBAAwB,EAChC,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACH,gBAAgB,EAChB,oBAAoB,EAGvB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAmB,eAAe,EAAiB,MAAM,uBAAuB,CAAA;AAIvF,OAAO,YAAY,MAAM,eAAe,CAAA;AAsBxC,OAAO,EAAa,kBAAkB,EAAgC,MAAM,QAAQ,CAAA;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAuBH,eAAe,EACf,gBAAgB,EAiBhB,eAAe,EAEf,wBAAwB,EAExB,WAAW,EACd,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAIjC,OAAO,EAIH,YAAY,EACf,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAQ/C,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEjD,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,gBAAgB,CAAA;AAE1D,MAAM,MAAM,aAAa,GAAG;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAA;IAChC,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,+BAA+B,CAAC,EAAE,0BAA0B,CAAA;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CACtE,CAAA;AAED,KAAK,yBAAyB,GAAG;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IACnC,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,WAAW,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,KAAK,gCAAgC,GAAG;IACpC,WAAW,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;2BAG4B,UAAU,YAAY,CAAC,YAAY,CAAC;AADjE,qBAAa,MACT,SAAQ,WACR,YAAW,sBAAsB;IA0CtB,IAAI,CAAC,EAAE,aAAa;IAxC/B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IAEtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAE3B,aAAa,CAAC,EAAE,qBAAqB,CAAA;IACrC,WAAW,EAAE,WAAW,CAAA;IAE/B,OAAO,CAAC,iBAAiB,CAAmD;IAC5E,OAAO,CAAC,mBAAmB,CAAmD;IAC9E,OAAO,CAAC,kBAAkB,CAA0C;IACpE,OAAO,CAAC,qBAAqB,CAA6D;IAC1F,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,oBAAoB,CAAC,CAA0B;IACvD,OAAO,CAAC,uBAAuB,CAAC,CAAwB;IACxD,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,+BAA+B,CAA4B;gBAG/D,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,WAAW,EACxB,oBAAoB,EAAE,oBAAoB,EACnC,IAAI,CAAC,EAAE,aAAa,YAAA;IAkF/B,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,IAAI,gBAAgB,IAAI,gBAAgB,CAGvC;IAED,IAAI,iBAAiB,IAAI,OAAO,CAE/B;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS;IAI/D,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY;IAc/D,OAAO,CAAC,qBAAqB;IA2BvB,cAAc,CAAC,IAAI,CAAC,EAAE;QACxB,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM,CAAA;QAC7B,oBAAoB,CAAC,EAAE,wBAAwB,CAAA;KAClD,GAAG,OAAO,CAAC;QACR,cAAc,EAAE,MAAM,CAAA;QACtB,kBAAkB,EAAE,MAAM,CAAA;QAC1B,uBAAuB,EAAE,MAAM,CAAA;QAC/B,0BAA0B,EAAE,MAAM,CAAA;QAClC,0BAA0B,EAAE,MAAM,CAAA;KACrC,CAAC;IA+CK,sBAAsB,CAAC,QAAQ,EAAE,OAAO;YAIjC,cAAc;YAWd,mBAAmB;YAWnB,sBAAsB;YAyDtB,sBAAsB;YAWtB,aAAa;YAcb,gBAAgB;YAoBhB,wBAAwB;YAqBxB,qBAAqB;YAqBrB,wBAAwB;YAsBxB,mBAAmB;IA8B3B,WAAW,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAgCpE,aAAa,CACf,OAAO,EAAE,MAAM,GAAG,UAAU,EAC5B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,GAAG,UAAU,EAChC,cAAc,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,EAC7C,eAAe,CAAC,EAAE,YAAY,CAAC,4BAA4B,CAAC,GAC7D,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAgC1B,eAAe,CACjB,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,GAC9C,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAsC1B,gBAAgB,CAClB,OAAO,EAAE,MAAM,EAAE,EACjB,iBAAiB,CAAC,EAAE,aAAa,EACjC,cAAc,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,GAC9C,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IA2C1B,iBAAiB,CACnB,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,EAC1C,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,EACxC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,UAAU,EACvB,YAAY,CAAC,EAAE,UAAU,EACzB,cAAc,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,EAC7C,kBAAkB,CAAC,EAAE,OAAO,GAC7B,OAAO,CAAC;QAAE,cAAc,EAAE,cAAc,CAAA;KAAE,CAAC;IAmExC,aAAa,CACf,OAAO,EAAE,MAAM,GAAG,UAAU,EAC5B,SAAS,EAAE,MAAM,GAAG,UAAU,EAC9B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM;iBAigDG,MAAM;gBAAU,sBAAsB;;IAj/CtD,qBAAqB,CACvB,OAAO,EAAE,MAAM,GAAG,UAAU,EAC5B,SAAS,EAAE,MAAM,GAAG,UAAU,EAC9B,QAAQ,EAAE,OAAO;iBA8+CC,MAAM;gBAAU,sBAAsB;;IA99CtD,oCAAoC,CACtC,OAAO,EAAE,MAAM,GAAG,UAAU,EAC5B,SAAS,EAAE,MAAM,GAAG,UAAU,EAC9B,uBAAuB,EAAE,OAAO;iBA29Cd,MAAM;gBAAU,sBAAsB;;IAt8CtD,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;iBAs8CtE,MAAM;gBAAU,sBAAsB;;IAj7CtD,4BAA4B,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAE,MAAM;iBAi7C3D,MAAM;gBAAU,sBAAsB;;IA15CtD,oBAAoB,CACtB,SAAS,EAAE,MAAM,GAAG,UAAU,EAC9B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC;iBAw5C/B,MAAM;gBAAU,sBAAsB;;IAl4CtD,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO;iBAk4ClC,MAAM;gBAAU,sBAAsB;;IAj2CtD,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,gBAAgB,EAAE,YAAY,CAAC,YAAY,CAAC;iBAi2CjE,MAAM;gBAAU,sBAAsB;;IAn0CtD,mBAAmB,CAAC,gBAAgB,EAAE,YAAY,CAAC,YAAY,CAAC;iBAm0ChD,MAAM;gBAAU,sBAAsB;;IA1yCtD,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAK/C,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC;iBAqyCrB,MAAM;gBAAU,sBAAsB;;IA9wCtD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAKtC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAcpD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAyB9C,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,UAAU;IAUlE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM;IAclF,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAsBtF,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;iBAorCrB,MAAM;gBAAU,sBAAsB;;IAvpCtD,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;iBAupCvB,MAAM;gBAAU,sBAAsB;;IAvoC5D,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAQ1D,aAAa,CACf,UAAU,EAAE,MAAM,GAAG,UAAU,EAC/B,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9C,OAAO,CAAC,MAAM,CAAC;IA6CZ,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;YAkB7C,UAAU;IAoBxB,OAAO,CAAC,8BAA8B;IAoBhC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;YAiB/C,YAAY;IA8CpB,UAAU,CACZ,QAAQ,EAAE,MAAM,GAAG,UAAU,EAC7B,cAAc,GAAE,OAAc,EAC9B,aAAa,CAAC,EAAE,YAAY,GAC7B,OAAO,CAAC,MAAM,CAAC;YAkBJ,WAAW;IAkEzB,OAAO,CAAC,cAAc,CAKrB;IAED,OAAO,CAAC,iBAAiB,CAKxB;IAED,OAAO,CAAC,YAAY,CAGnB;IAED,OAAO,CAAC,mBAAmB,CAc1B;IAED,SAAS;IAKH,QAAQ;IAKd,IAAI,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO;IAKrF,WAAW,CACb,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,YAAY,CAAC,2BAA2B,CAAC,EAAE,EACtD,WAAW,GAAE,YAAY,CAAC,8BAA8B,CAAC,EAAO,GACjE,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAUzB,kBAAkB,CACpB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,YAAY,CAAC,cAAc,CAAC,EACvC,IAAI,CAAC,EAAE,yBAAyB,GACjC,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;YAejB,8BAA8B;IA6GtC,uBAAuB,CACzB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,SAAS,CAAC,GAAG;QAC1D,OAAO,EAAE,YAAY,CAAC,gCAAgC,CAAC,CAAA;KAC1D,EACD,IAAI,CAAC,EAAE,yBAAyB,GACjC,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAoBzB,wBAAwB,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,SAAS,CAAC,GAAG;QAC1D,OAAO,EAAE,YAAY,CAAC,iCAAiC,CAAC,CAAA;KAC3D,EACD,IAAI,CAAC,EAAE,yBAAyB,GACjC,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAoBzB,qBAAqB,CACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,SAAS,CAAC,GAAG;QAC1D,OAAO,EAAE,YAAY,CAAC,8BAA8B,CAAC,CAAA;KACxD,EACD,IAAI,CAAC,EAAE,yBAAyB,GACjC,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAoBzB,gBAAgB,CAClB,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,MAAM,EAClB,EAAE,CAAC,EAAE,UAAU,GAChB,OAAO,CAAC;QAAE,cAAc,EAAE,cAAc,CAAA;KAAE,CAAC;IASxC,eAAe,CACjB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,UAAU,EACrB,EAAE,EAAE,UAAU,GACf,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAkB5B,2BAA2B,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,YAAY,CAAC,uBAAuB,CAAC,EAC9C,IAAI,CAAC,EAAE,yBAAyB,GACjC,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAazB,4BAA4B,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,YAAY,CAAC,wBAAwB,CAAC,GAChD,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAazB,uBAAuB,CACzB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,GAC3C,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAYzB,4BAA4B,CAC9B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,SAAS,CAAC,GAAG;QAC1D,OAAO,EAAE,YAAY,CAAC,gCAAgC,CAAC,CAAA;KAC1D,GACF,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAWzB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAa9E,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBlE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAcvF,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAcrF,UAAU,CACZ,QAAQ,EAAE,MAAM,GAAG,UAAU,EAC7B,IAAI,CAAC,EAAE;QACH,gCAAgC,CAAC,EAAE,OAAO,CAAA;QAC1C,2BAA2B,CAAC,EAAE,OAAO,CAAA;KACxC,GACF,OAAO,CAAC,MAAM,CAAC;IAsCZ,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IA8BxE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAwCvF,cAAc,CAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,GAAG,wBAAwB,EACnD,OAAO,CAAC,EAAE,YAAY,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,EACxD,IAAI,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,GAC1B,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAiCzB,kBAAkB,CACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,gCAAgC,GACxC,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IA4BzB,uBAAuB,CACzB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,GAAG,wBAAwB,EACnD,KAAK,EAAE,YAAY,CAAC,mCAAmC,CAAC,EACxD,IAAI,CAAC,EAAE,gCAAgC,GACxC,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAezB,0BAA0B,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,sBAAsB,EAC7B,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAezB,aAAa,CACf,QAAQ,EAAE,MAAM,GAAG,UAAU,EAC7B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GACrC,OAAO,CAAC;QAAE,UAAU,EAAE,eAAe,EAAE,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAkD1D,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QACxC,QAAQ,EAAE,OAAO,CAAA;QACjB,yBAAyB,EAAE,MAAM,CAAA;KACpC,CAAC;IAwDF;;;;;;;;;OASG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAiBpE,gBAAgB,CAClB,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,UAAU,CAAA;KAAE,CAAC;IAezD,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BlC,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAkCxE,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAInE,uBAAuB,CACzB,QAAQ,EAAE,MAAM,GAAG,UAAU,EAC7B,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,EAC7C,OAAO,GAAE;QACL,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,SAAS,CAAC,EAAE,UAAU,CAAA;QACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,IAAI,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;KACvB,GACP,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,sBAAsB,CAAA;KAAE,CAAC;IAsCzD,+BAA+B,CACjC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAC7B,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,EAC7C,iBAAiB,EAAE,UAAU,EAC7B,gBAAgB,EAAE,MAAM,EACxB,QAAQ,CAAC,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,UAAU,EACtB,IAAI,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,EACzB,UAAU,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC;QAAE,iBAAiB,EAAE,UAAU,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,sBAAsB,CAAA;KAAE,CAAC;IA+GxF,yCAAyC,CAC3C,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,GAC9C,OAAO,CAAC;QAAE,cAAc,EAAE,cAAc,CAAA;KAAE,CAAC;IAgBxC,0BAA0B,CAC5B,QAAQ,EAAE,MAAM,GAAG,UAAU,GAC9B,OAAO,CAAC,4BAA4B,CAAC;YAK1B,UAAU;IAyBxB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B,gBAAgB;iBAnOA,MAAM;gBAAU,sBAAsB;;IAoPtD,cAAc;IA4Bb,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE;IAOpC,qBAAqB,CAC9B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;QAAE,wBAAwB,EAAE,OAAO,CAAA;KAAE;IAU/C;;OAEG;IACU,iBAAiB,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,eAAe;IAC7B,aAAa,EAAE,aAAa,GAC7B,OAAO,CAAC,IAAI,CAAC;YAUF,sBAAsB;IAqBvB,4BAA4B,CACrC,UAAU,EAAE,MAAM,GAAG,UAAU,EAC/B,QAAQ,EAAE,sBAAsB,EAAE,EAClC,SAAS,EAAE,oBAAoB,EAC/B,SAAS,EAAE,0BAA0B;IAgElC,iBAAiB,CACpB,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,0BAA0B,GACtC,OAAO,CAAC,aAAa,CAAC;IAQnB,qBAAqB,CACvB,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,UAAU,EAAE,GACzB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAWlC,aAAa,IAAI,UAAU;IAOd,uBAAuB,CAChC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAC;QAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;KAAE,GAClE,OAAO,CAAC,YAAY,CAAC;IAWX,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpE,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGhF"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -13,7 +13,7 @@ import { makeEvent, unpackStream, unpackStreamEx } from './sign';
13
13
  import { StreamStateView } from './streamStateView';
14
14
  import { make_UserMetadataPayload_Inception, make_ChannelPayload_Inception, make_ChannelPayload_Message, make_MemberPayload_Membership2, make_SpacePayload_Inception, make_UserPayload_Inception, make_SpacePayload_ChannelUpdate, make_UserSettingsPayload_FullyReadMarkers, make_UserSettingsPayload_UserBlock, make_UserSettingsPayload_Inception, make_MediaPayload_Inception, make_MediaPayload_Chunk, make_DMChannelPayload_Inception, make_DMChannelPayload_Message, make_GDMChannelPayload_Inception, make_GDMChannelPayload_Message, make_UserInboxPayload_Ack, make_UserInboxPayload_Inception, make_UserMetadataPayload_EncryptionDevice, make_UserInboxPayload_GroupEncryptionSessions, make_GDMChannelPayload_ChannelProperties, make_UserPayload_UserMembershipAction, make_UserPayload_UserMembership, make_MemberPayload_DisplayName, make_MemberPayload_Username, getRefEventIdFromChannelMessage, make_ChannelPayload_Redaction, make_MemberPayload_EnsAddress, make_MemberPayload_Nft, make_MemberPayload_Pin, make_MemberPayload_Unpin, make_SpacePayload_UpdateChannelAutojoin, make_SpacePayload_UpdateChannelHideUserJoinLeaveEvents, make_SpacePayload_SpaceImage, make_UserMetadataPayload_ProfileImage, make_UserMetadataPayload_Bio, make_UserPayload_BlockchainTransaction, make_MemberPayload_EncryptionAlgorithm, isSolanaTransactionReceipt, } from './types';
15
15
  import debug from 'debug';
16
- import { getTime, usernameChecksum } from './utils';
16
+ import { ethereumAddressAsBytes, getTime, isEthereumAddress, stripUndefinedMetadata, usernameChecksum, } from './utils';
17
17
  import { isEncryptedContentKind, toDecryptedContent } from './encryptedContentTypes';
18
18
  import { ClientDecryptionExtensions } from './clientDecryptionExtensions';
19
19
  import { PersistenceStore, StubPersistenceStore, } from './persistenceStore';
@@ -24,6 +24,7 @@ import { SyncedStreamsExtension } from './syncedStreamsExtension';
24
24
  import { decryptAESGCM, deriveKeyAndIV, encryptAESGCM, uint8ArrayToBase64, } from '@towns-protocol/sdk-crypto';
25
25
  import { makeTags, makeTipTags, makeTransferTags } from './tags';
26
26
  import { StreamsView } from './views/streamsView';
27
+ import { NotificationsClient } from './notificationsClient';
27
28
  export class Client extends EventEmitter {
28
29
  opts;
29
30
  signerContext;
@@ -32,6 +33,7 @@ export class Client extends EventEmitter {
32
33
  streams;
33
34
  streamsView;
34
35
  logId;
36
+ notifications;
35
37
  userStreamId;
36
38
  userSettingsStreamId;
37
39
  userMetadataStreamId;
@@ -109,6 +111,10 @@ export class Client extends EventEmitter {
109
111
  initStream: (streamId, allowGetStream, persistedData) => this.initStream(streamId, allowGetStream, persistedData),
110
112
  emitClientInitStatus: (status) => this.emit('clientInitStatusUpdated', status),
111
113
  }, this.persistenceStore, this.logId);
114
+ // Initialize notifications client if options are provided
115
+ if (opts?.notifications) {
116
+ this.notifications = new NotificationsClient(signerContext, opts.notifications.url, opts.notifications.store, opts.notifications.rpcOptions);
117
+ }
112
118
  this.logCall('new Client');
113
119
  }
114
120
  get streamSyncActive() {
@@ -156,11 +162,14 @@ export class Client extends EventEmitter {
156
162
  this.syncedStreamsExtensions.setStreamIds(streamIds);
157
163
  }
158
164
  async initializeUser(opts) {
159
- const initUserMetadata = opts?.spaceId
160
- ? {
161
- spaceId: streamIdAsBytes(opts?.spaceId),
162
- }
163
- : undefined;
165
+ if (opts?.appAddress && !isEthereumAddress(opts.appAddress)) {
166
+ throw Error('appAddress must be an ethereum address');
167
+ }
168
+ const appAddress = opts?.appAddress ? ethereumAddressAsBytes(opts.appAddress) : undefined;
169
+ const spaceId = opts?.spaceId ? streamIdAsBytes(opts?.spaceId) : undefined;
170
+ const initUserMetadata = {
171
+ spaceId,
172
+ };
164
173
  const initializeUserStartTime = performance.now();
165
174
  this.logCall('initializeUser', this.userId);
166
175
  assert(this.userStreamId === undefined, 'already initialized');
@@ -168,10 +177,10 @@ export class Client extends EventEmitter {
168
177
  check(isDefined(this.decryptionExtensions), 'decryptionExtensions must be defined');
169
178
  check(isDefined(this.syncedStreamsExtensions), 'syncedStreamsExtensions must be defined');
170
179
  const [initUserStream, initUserInboxStream, initUserMetadataStream, initUserSettingsStream,] = await Promise.all([
171
- getTime(() => this.initUserStream(initUserMetadata)),
172
- getTime(() => this.initUserInboxStream(initUserMetadata)),
173
- getTime(() => this.initUserMetadataStream(initUserMetadata)),
174
- getTime(() => this.initUserSettingsStream(initUserMetadata)),
180
+ getTime(() => this.initUserStream(initUserMetadata, appAddress)),
181
+ getTime(() => this.initUserInboxStream(initUserMetadata, appAddress)),
182
+ getTime(() => this.initUserMetadataStream(initUserMetadata, appAddress)),
183
+ getTime(() => this.initUserSettingsStream(initUserMetadata, appAddress)),
175
184
  ]);
176
185
  this.initUserJoinedStreams();
177
186
  this.syncedStreamsExtensions.start();
@@ -193,25 +202,25 @@ export class Client extends EventEmitter {
193
202
  onNetworkStatusChanged(isOnline) {
194
203
  this.streams.onNetworkStatusChanged(isOnline);
195
204
  }
196
- async initUserStream(metadata) {
205
+ async initUserStream(metadata, appAddress) {
197
206
  this.userStreamId = makeUserStreamId(this.userId);
198
207
  const userStream = this.createSyncedStream(this.userStreamId);
199
208
  if (!(await userStream.initializeFromPersistence())) {
200
209
  const response = (await this.getUserStream(this.userStreamId)) ??
201
- (await this.createUserStream(this.userStreamId, metadata));
210
+ (await this.createUserStream(this.userStreamId, metadata, appAddress));
202
211
  await userStream.initializeFromResponse(response);
203
212
  }
204
213
  }
205
- async initUserInboxStream(metadata) {
214
+ async initUserInboxStream(metadata, appAddress) {
206
215
  this.userInboxStreamId = makeUserInboxStreamId(this.userId);
207
216
  const userInboxStream = this.createSyncedStream(this.userInboxStreamId);
208
217
  if (!(await userInboxStream.initializeFromPersistence())) {
209
218
  const response = (await this.getUserStream(this.userInboxStreamId)) ??
210
- (await this.createUserInboxStream(this.userInboxStreamId, metadata));
219
+ (await this.createUserInboxStream(this.userInboxStreamId, metadata, appAddress));
211
220
  await userInboxStream.initializeFromResponse(response);
212
221
  }
213
222
  }
214
- async initUserMetadataStream(metadata) {
223
+ async initUserMetadataStream(metadata, appAddress) {
215
224
  this.userMetadataStreamId = makeUserMetadataStreamId(this.userId);
216
225
  const userMetadataStream = this.createSyncedStream(this.userMetadataStreamId);
217
226
  let initUserMetadataStreamInitFromPersistenceTime = 0;
@@ -233,7 +242,7 @@ export class Client extends EventEmitter {
233
242
  else {
234
243
  const createUserMetadataStreamResponse = await getTime(() => {
235
244
  check(!!this.userMetadataStreamId, 'userMetadataStreamId must be set');
236
- return this.createUserMetadataStream(this.userMetadataStreamId, metadata);
245
+ return this.createUserMetadataStream(this.userMetadataStreamId, metadata, appAddress);
237
246
  });
238
247
  initUserMetadataStreamCreateUserMetadataStreamTime =
239
248
  createUserMetadataStreamResponse.time;
@@ -260,12 +269,12 @@ export class Client extends EventEmitter {
260
269
  };
261
270
  return times;
262
271
  }
263
- async initUserSettingsStream(metadata) {
272
+ async initUserSettingsStream(metadata, appAddress) {
264
273
  this.userSettingsStreamId = makeUserSettingsStreamId(this.userId);
265
274
  const userSettingsStream = this.createSyncedStream(this.userSettingsStreamId);
266
275
  if (!(await userSettingsStream.initializeFromPersistence())) {
267
276
  const response = (await this.getUserStream(this.userSettingsStreamId)) ??
268
- (await this.createUserSettingsStream(this.userSettingsStreamId, metadata));
277
+ (await this.createUserSettingsStream(this.userSettingsStreamId, metadata, appAddress));
269
278
  await userSettingsStream.initializeFromResponse(response);
270
279
  }
271
280
  }
@@ -281,56 +290,64 @@ export class Client extends EventEmitter {
281
290
  return undefined;
282
291
  }
283
292
  }
284
- async createUserStream(userStreamId, metadata) {
293
+ async createUserStream(userStreamId, metadata, appAddress) {
285
294
  const userEvents = [
286
295
  await makeEvent(this.signerContext, make_UserPayload_Inception({
287
296
  streamId: streamIdAsBytes(userStreamId),
297
+ appAddress,
288
298
  })),
289
299
  ];
300
+ const encoded = metadata ? stripUndefinedMetadata(metadata) : metadata;
290
301
  const response = await this.rpcClient.createStream({
291
302
  events: userEvents,
292
303
  streamId: streamIdAsBytes(userStreamId),
293
- metadata: metadata,
304
+ metadata: encoded,
294
305
  });
295
306
  return unpackStream(response.stream, this.opts?.unpackEnvelopeOpts);
296
307
  }
297
- async createUserMetadataStream(userMetadataStreamId, metadata) {
308
+ async createUserMetadataStream(userMetadataStreamId, metadata, appAddress) {
298
309
  const userDeviceKeyEvents = [
299
310
  await makeEvent(this.signerContext, make_UserMetadataPayload_Inception({
300
311
  streamId: streamIdAsBytes(userMetadataStreamId),
312
+ appAddress,
301
313
  })),
302
314
  ];
315
+ const encoded = metadata ? stripUndefinedMetadata(metadata) : metadata;
303
316
  const response = await this.rpcClient.createStream({
304
317
  events: userDeviceKeyEvents,
305
318
  streamId: streamIdAsBytes(userMetadataStreamId),
306
- metadata: metadata,
319
+ metadata: encoded,
307
320
  });
308
321
  return unpackStream(response.stream, this.opts?.unpackEnvelopeOpts);
309
322
  }
310
- async createUserInboxStream(userInboxStreamId, metadata) {
323
+ async createUserInboxStream(userInboxStreamId, metadata, appAddress) {
311
324
  const userInboxEvents = [
312
325
  await makeEvent(this.signerContext, make_UserInboxPayload_Inception({
313
326
  streamId: streamIdAsBytes(userInboxStreamId),
327
+ appAddress,
314
328
  })),
315
329
  ];
330
+ const encoded = metadata ? stripUndefinedMetadata(metadata) : metadata;
316
331
  const response = await this.rpcClient.createStream({
317
332
  events: userInboxEvents,
318
333
  streamId: streamIdAsBytes(userInboxStreamId),
319
- metadata: metadata,
334
+ metadata: encoded,
320
335
  });
321
336
  return unpackStream(response.stream, this.opts?.unpackEnvelopeOpts);
322
337
  }
323
- async createUserSettingsStream(inUserSettingsStreamId, metadata) {
338
+ async createUserSettingsStream(inUserSettingsStreamId, metadata, appAddress) {
324
339
  const userSettingsStreamId = streamIdAsBytes(inUserSettingsStreamId);
325
340
  const userSettingsEvents = [
326
341
  await makeEvent(this.signerContext, make_UserSettingsPayload_Inception({
327
342
  streamId: userSettingsStreamId,
343
+ appAddress,
328
344
  })),
329
345
  ];
346
+ const encoded = metadata ? stripUndefinedMetadata(metadata) : metadata;
330
347
  const response = await this.rpcClient.createStream({
331
348
  events: userSettingsEvents,
332
349
  streamId: userSettingsStreamId,
333
- metadata: metadata,
350
+ metadata: encoded,
334
351
  });
335
352
  return unpackStream(response.stream, this.opts?.unpackEnvelopeOpts);
336
353
  }
@@ -1228,12 +1245,13 @@ export class Client extends EventEmitter {
1228
1245
  }), { method: 'inviteUser' });
1229
1246
  }
1230
1247
  async joinUser(streamId, userId) {
1231
- await this.initStream(streamId);
1248
+ const stream = await this.initStream(streamId);
1232
1249
  check(isDefined(this.userStreamId));
1233
1250
  return this.makeEventAndAddToStream(this.userStreamId, make_UserPayload_UserMembershipAction({
1234
1251
  op: MembershipOp.SO_JOIN,
1235
- userId: addressFromUserId(userId),
1252
+ userId: bin_fromHexString(userId),
1236
1253
  streamId: streamIdAsBytes(streamId),
1254
+ streamParentId: stream.view.getContent().getStreamParentIdAsBytes(),
1237
1255
  }), { method: 'inviteUser' });
1238
1256
  }
1239
1257
  async joinStream(streamId, opts) {
@@ -1789,9 +1807,17 @@ export class Client extends EventEmitter {
1789
1807
  const toDevicesEntries = Object.entries(toDevices);
1790
1808
  const promises = toDevicesEntries.map(async ([userId, deviceKeys]) => {
1791
1809
  try {
1810
+ if (deviceKeys.length === 0) {
1811
+ // means we failed to download the device keys, we should enqueue a retry
1812
+ this.logInfo('encryptAndShareGroupSessions: no device keys to send', inStreamId, userId);
1813
+ return;
1814
+ }
1792
1815
  const ciphertext = await this.encryptWithDeviceKeys(payloadClearText, deviceKeys);
1793
1816
  if (Object.keys(ciphertext).length === 0) {
1794
- this.logError('encryptAndShareGroupSessions: no ciphertext to send', userId);
1817
+ // if you only have one device this is a valid state
1818
+ if (userId !== this.userId) {
1819
+ this.logError('encryptAndShareGroupSessions: no ciphertext to send', userId);
1820
+ }
1795
1821
  return;
1796
1822
  }
1797
1823
  const toStreamId = makeUserInboxStreamId(userId);