@protontech/drive-sdk 0.2.1 → 0.3.1

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 (165) hide show
  1. package/dist/crypto/interface.d.ts +5 -0
  2. package/dist/diagnostic/httpClient.d.ts +3 -3
  3. package/dist/diagnostic/interface.d.ts +26 -29
  4. package/dist/diagnostic/sdkDiagnostic.js +50 -24
  5. package/dist/diagnostic/sdkDiagnostic.js.map +1 -1
  6. package/dist/errors.d.ts +3 -3
  7. package/dist/errors.js +7 -7
  8. package/dist/errors.js.map +1 -1
  9. package/dist/interface/author.d.ts +1 -1
  10. package/dist/interface/events.d.ts +1 -1
  11. package/dist/interface/events.js.map +1 -1
  12. package/dist/interface/httpClient.d.ts +5 -5
  13. package/dist/interface/index.d.ts +15 -5
  14. package/dist/internal/apiService/apiService.js +12 -4
  15. package/dist/internal/apiService/apiService.js.map +1 -1
  16. package/dist/internal/apiService/errorCodes.d.ts +1 -0
  17. package/dist/internal/apiService/errorCodes.js.map +1 -1
  18. package/dist/internal/apiService/errors.d.ts +4 -3
  19. package/dist/internal/apiService/errors.js +7 -4
  20. package/dist/internal/apiService/errors.js.map +1 -1
  21. package/dist/internal/apiService/errors.test.js +2 -1
  22. package/dist/internal/apiService/errors.test.js.map +1 -1
  23. package/dist/internal/events/index.d.ts +1 -1
  24. package/dist/internal/nodes/apiService.js +3 -0
  25. package/dist/internal/nodes/apiService.js.map +1 -1
  26. package/dist/internal/nodes/apiService.test.js +18 -0
  27. package/dist/internal/nodes/apiService.test.js.map +1 -1
  28. package/dist/internal/nodes/cryptoCache.js +6 -7
  29. package/dist/internal/nodes/cryptoCache.js.map +1 -1
  30. package/dist/internal/nodes/cryptoCache.test.js +4 -7
  31. package/dist/internal/nodes/cryptoCache.test.js.map +1 -1
  32. package/dist/internal/nodes/cryptoService.js +44 -20
  33. package/dist/internal/nodes/cryptoService.js.map +1 -1
  34. package/dist/internal/nodes/nodesAccess.js +2 -2
  35. package/dist/internal/nodes/nodesAccess.js.map +1 -1
  36. package/dist/internal/nodes/nodesManagement.js +0 -2
  37. package/dist/internal/nodes/nodesManagement.js.map +1 -1
  38. package/dist/internal/shares/cryptoCache.d.ts +4 -3
  39. package/dist/internal/shares/cryptoCache.js +23 -6
  40. package/dist/internal/shares/cryptoCache.js.map +1 -1
  41. package/dist/internal/shares/cryptoCache.test.js +3 -2
  42. package/dist/internal/shares/cryptoCache.test.js.map +1 -1
  43. package/dist/internal/shares/index.js +1 -1
  44. package/dist/internal/shares/index.js.map +1 -1
  45. package/dist/internal/sharing/cryptoService.js +8 -6
  46. package/dist/internal/sharing/cryptoService.js.map +1 -1
  47. package/dist/internal/sharing/cryptoService.test.js +13 -0
  48. package/dist/internal/sharing/cryptoService.test.js.map +1 -1
  49. package/dist/internal/sharing/index.js +1 -1
  50. package/dist/internal/sharing/index.js.map +1 -1
  51. package/dist/internal/sharing/interface.d.ts +0 -4
  52. package/dist/internal/sharing/sharingAccess.d.ts +1 -0
  53. package/dist/internal/sharing/sharingAccess.js +6 -1
  54. package/dist/internal/sharing/sharingAccess.js.map +1 -1
  55. package/dist/internal/sharing/sharingAccess.test.js +3 -3
  56. package/dist/internal/sharing/sharingAccess.test.js.map +1 -1
  57. package/dist/internal/sharing/sharingManagement.d.ts +3 -1
  58. package/dist/internal/sharing/sharingManagement.js +37 -17
  59. package/dist/internal/sharing/sharingManagement.js.map +1 -1
  60. package/dist/internal/sharing/sharingManagement.test.js +61 -14
  61. package/dist/internal/sharing/sharingManagement.test.js.map +1 -1
  62. package/dist/internal/sharingPublic/apiService.d.ts +19 -0
  63. package/dist/internal/sharingPublic/apiService.js +134 -0
  64. package/dist/internal/sharingPublic/apiService.js.map +1 -0
  65. package/dist/internal/sharingPublic/cryptoCache.d.ts +19 -0
  66. package/dist/internal/sharingPublic/cryptoCache.js +72 -0
  67. package/dist/internal/sharingPublic/cryptoCache.js.map +1 -0
  68. package/dist/internal/sharingPublic/cryptoService.d.ts +23 -0
  69. package/dist/internal/sharingPublic/cryptoService.js +120 -0
  70. package/dist/internal/sharingPublic/cryptoService.js.map +1 -0
  71. package/dist/internal/sharingPublic/index.d.ts +15 -0
  72. package/dist/internal/sharingPublic/index.js +27 -0
  73. package/dist/internal/sharingPublic/index.js.map +1 -0
  74. package/dist/internal/sharingPublic/interface.d.ts +48 -0
  75. package/dist/internal/sharingPublic/interface.js +3 -0
  76. package/dist/internal/sharingPublic/interface.js.map +1 -0
  77. package/dist/internal/sharingPublic/manager.d.ts +19 -0
  78. package/dist/internal/sharingPublic/manager.js +79 -0
  79. package/dist/internal/sharingPublic/manager.js.map +1 -0
  80. package/dist/internal/sharingPublic/session/apiService.d.ts +28 -0
  81. package/dist/internal/sharingPublic/session/apiService.js +55 -0
  82. package/dist/internal/sharingPublic/session/apiService.js.map +1 -0
  83. package/dist/internal/sharingPublic/session/httpClient.d.ts +16 -0
  84. package/dist/internal/sharingPublic/session/httpClient.js +41 -0
  85. package/dist/internal/sharingPublic/session/httpClient.js.map +1 -0
  86. package/dist/internal/sharingPublic/session/index.d.ts +1 -0
  87. package/dist/internal/sharingPublic/session/index.js +6 -0
  88. package/dist/internal/sharingPublic/session/index.js.map +1 -0
  89. package/dist/internal/sharingPublic/session/interface.d.ts +18 -0
  90. package/dist/internal/sharingPublic/session/interface.js +3 -0
  91. package/dist/internal/sharingPublic/session/interface.js.map +1 -0
  92. package/dist/internal/sharingPublic/session/manager.d.ts +49 -0
  93. package/dist/internal/sharingPublic/session/manager.js +75 -0
  94. package/dist/internal/sharingPublic/session/manager.js.map +1 -0
  95. package/dist/internal/sharingPublic/session/session.d.ts +34 -0
  96. package/dist/internal/sharingPublic/session/session.js +67 -0
  97. package/dist/internal/sharingPublic/session/session.js.map +1 -0
  98. package/dist/internal/sharingPublic/session/url.d.ts +12 -0
  99. package/dist/internal/sharingPublic/session/url.js +23 -0
  100. package/dist/internal/sharingPublic/session/url.js.map +1 -0
  101. package/dist/internal/sharingPublic/session/url.test.d.ts +1 -0
  102. package/dist/internal/sharingPublic/session/url.test.js +59 -0
  103. package/dist/internal/sharingPublic/session/url.test.js.map +1 -0
  104. package/dist/internal/upload/manager.js +1 -3
  105. package/dist/internal/upload/manager.js.map +1 -1
  106. package/dist/internal/upload/manager.test.js +2 -2
  107. package/dist/internal/upload/manager.test.js.map +1 -1
  108. package/dist/protonDriveClient.d.ts +25 -10
  109. package/dist/protonDriveClient.js +44 -22
  110. package/dist/protonDriveClient.js.map +1 -1
  111. package/dist/protonDrivePublicLinkClient.d.ts +48 -0
  112. package/dist/protonDrivePublicLinkClient.js +71 -0
  113. package/dist/protonDrivePublicLinkClient.js.map +1 -0
  114. package/package.json +1 -1
  115. package/src/crypto/interface.ts +11 -0
  116. package/src/diagnostic/httpClient.ts +4 -4
  117. package/src/diagnostic/interface.ts +27 -29
  118. package/src/diagnostic/sdkDiagnostic.ts +58 -30
  119. package/src/errors.ts +5 -5
  120. package/src/interface/author.ts +1 -1
  121. package/src/interface/events.ts +1 -7
  122. package/src/interface/httpClient.ts +5 -5
  123. package/src/interface/index.ts +18 -6
  124. package/src/internal/apiService/apiService.ts +13 -4
  125. package/src/internal/apiService/errorCodes.ts +1 -0
  126. package/src/internal/apiService/errors.test.ts +2 -1
  127. package/src/internal/apiService/errors.ts +15 -4
  128. package/src/internal/events/index.ts +1 -1
  129. package/src/internal/nodes/apiService.test.ts +28 -0
  130. package/src/internal/nodes/apiService.ts +3 -0
  131. package/src/internal/nodes/cryptoCache.test.ts +4 -7
  132. package/src/internal/nodes/cryptoCache.ts +6 -7
  133. package/src/internal/nodes/cryptoService.ts +68 -34
  134. package/src/internal/nodes/interface.ts +2 -0
  135. package/src/internal/nodes/nodesAccess.ts +2 -2
  136. package/src/internal/nodes/nodesManagement.ts +0 -3
  137. package/src/internal/shares/cryptoCache.test.ts +3 -2
  138. package/src/internal/shares/cryptoCache.ts +26 -7
  139. package/src/internal/shares/index.ts +1 -1
  140. package/src/internal/sharing/cryptoService.test.ts +22 -1
  141. package/src/internal/sharing/cryptoService.ts +8 -6
  142. package/src/internal/sharing/index.ts +1 -0
  143. package/src/internal/sharing/interface.ts +0 -4
  144. package/src/internal/sharing/sharingAccess.test.ts +4 -4
  145. package/src/internal/sharing/sharingAccess.ts +6 -0
  146. package/src/internal/sharing/sharingManagement.test.ts +87 -24
  147. package/src/internal/sharing/sharingManagement.ts +56 -16
  148. package/src/internal/sharingPublic/apiService.ts +164 -0
  149. package/src/internal/sharingPublic/cryptoCache.ts +79 -0
  150. package/src/internal/sharingPublic/cryptoService.ts +162 -0
  151. package/src/internal/sharingPublic/index.ts +40 -0
  152. package/src/internal/sharingPublic/interface.ts +59 -0
  153. package/src/internal/sharingPublic/manager.ts +85 -0
  154. package/src/internal/sharingPublic/session/apiService.ts +74 -0
  155. package/src/internal/sharingPublic/session/httpClient.ts +48 -0
  156. package/src/internal/sharingPublic/session/index.ts +1 -0
  157. package/src/internal/sharingPublic/session/interface.ts +20 -0
  158. package/src/internal/sharingPublic/session/manager.ts +97 -0
  159. package/src/internal/sharingPublic/session/session.ts +78 -0
  160. package/src/internal/sharingPublic/session/url.test.ts +72 -0
  161. package/src/internal/sharingPublic/session/url.ts +23 -0
  162. package/src/internal/upload/manager.test.ts +2 -2
  163. package/src/internal/upload/manager.ts +2 -4
  164. package/src/protonDriveClient.ts +64 -27
  165. package/src/protonDrivePublicLinkClient.ts +121 -0
@@ -16,19 +16,22 @@ const cryptoService_1 = require("./cryptoService");
16
16
  class SharingManagement {
17
17
  logger;
18
18
  apiService;
19
+ cache;
19
20
  cryptoService;
20
21
  account;
21
22
  sharesService;
22
23
  nodesService;
23
- constructor(logger, apiService, cryptoService, account, sharesService, nodesService) {
24
+ constructor(logger, apiService, cache, cryptoService, account, sharesService, nodesService) {
24
25
  this.logger = logger;
25
26
  this.apiService = apiService;
27
+ this.cache = cache;
26
28
  this.cryptoService = cryptoService;
27
29
  this.account = account;
28
30
  this.sharesService = sharesService;
29
31
  this.nodesService = nodesService;
30
32
  this.logger = logger;
31
33
  this.apiService = apiService;
34
+ this.cache = cache;
32
35
  this.cryptoService = cryptoService;
33
36
  this.account = account;
34
37
  this.sharesService = sharesService;
@@ -101,18 +104,23 @@ class SharingManagement {
101
104
  settings.publicLink.expiration < new Date()) {
102
105
  throw new errors_1.ValidationError((0, ttag_1.c)('Error').t `Expiration date cannot be in the past`);
103
106
  }
107
+ let contextShareAddress;
104
108
  let currentSharing = await this.getInternalSharingInfo(nodeUid);
105
- if (!currentSharing) {
109
+ if (currentSharing) {
110
+ contextShareAddress = await this.nodesService.getRootNodeEmailKey(nodeUid);
111
+ }
112
+ else {
106
113
  const node = await this.nodesService.getNode(nodeUid);
107
- const share = await this.createShare(nodeUid);
114
+ const result = await this.createShare(nodeUid);
108
115
  currentSharing = {
109
- share,
116
+ share: result.share,
110
117
  nodeName: node.name.ok ? node.name.value : node.name.error.name,
111
118
  protonInvitations: [],
112
119
  nonProtonInvitations: [],
113
120
  members: [],
114
121
  publicLink: undefined,
115
122
  };
123
+ contextShareAddress = result.contextShareAddress;
116
124
  }
117
125
  const emailOptions = {
118
126
  message: settings.emailOptions?.message,
@@ -143,7 +151,7 @@ class SharingManagement {
143
151
  continue;
144
152
  }
145
153
  this.logger.info(`Inviting user ${email} with role ${role} to node ${nodeUid}`);
146
- const invitation = await this.inviteProtonUser(currentSharing.share, email, role, emailOptions);
154
+ const invitation = await this.inviteProtonUser(contextShareAddress, currentSharing.share, email, role, emailOptions);
147
155
  currentSharing.protonInvitations.push(invitation);
148
156
  }
149
157
  for (const user of nonProtonUsers) {
@@ -171,7 +179,7 @@ class SharingManagement {
171
179
  continue;
172
180
  }
173
181
  this.logger.info(`Inviting external user ${email} with role ${role} to node ${nodeUid}`);
174
- const invitation = await this.inviteExternalUser(currentSharing.share, email, role, emailOptions);
182
+ const invitation = await this.inviteExternalUser(contextShareAddress, currentSharing.share, email, role, emailOptions);
175
183
  currentSharing.nonProtonInvitations.push(invitation);
176
184
  }
177
185
  if (settings.publicLink) {
@@ -182,7 +190,7 @@ class SharingManagement {
182
190
  }
183
191
  else {
184
192
  this.logger.info(`Sharing via public link with role ${options.role} to node ${nodeUid}`);
185
- currentSharing.publicLink = await this.shareViaLink(currentSharing.share, options);
193
+ currentSharing.publicLink = await this.shareViaLink(contextShareAddress, currentSharing.share, options);
186
194
  }
187
195
  }
188
196
  return {
@@ -302,19 +310,33 @@ class SharingManagement {
302
310
  base64NameKeyPacket: keys.base64NameKeyPacket,
303
311
  });
304
312
  await this.nodesService.notifyNodeChanged(nodeUid);
305
- return {
313
+ if (await this.cache.hasSharedByMeNodeUidsLoaded()) {
314
+ await this.cache.addSharedByMeNodeUid(nodeUid);
315
+ }
316
+ const share = {
306
317
  volumeId,
307
318
  shareId,
308
319
  creatorEmail: email,
309
320
  passphraseSessionKey: keys.shareKey.decrypted.passphraseSessionKey,
310
321
  };
322
+ const contextShareAddress = {
323
+ email,
324
+ addressId,
325
+ addressKey,
326
+ };
327
+ return {
328
+ share,
329
+ contextShareAddress,
330
+ };
311
331
  }
312
332
  async deleteShare(shareId, nodeUid) {
313
333
  await this.apiService.deleteShare(shareId);
314
334
  await this.nodesService.notifyNodeChanged(nodeUid);
335
+ if (await this.cache.hasSharedByMeNodeUidsLoaded()) {
336
+ await this.cache.removeSharedByMeNodeUid(nodeUid);
337
+ }
315
338
  }
316
- async inviteProtonUser(share, inviteeEmail, role, emailOptions) {
317
- const inviter = await this.sharesService.getContextShareMemberEmailKey(share.shareId);
339
+ async inviteProtonUser(inviter, share, inviteeEmail, role, emailOptions) {
318
340
  const invitationCrypto = await this.cryptoService.encryptInvitation(share.passphraseSessionKey, inviter.addressKey, inviteeEmail);
319
341
  const encryptedInvitation = await this.apiService.inviteProtonUser(share.shareId, {
320
342
  addedByEmail: inviter.email,
@@ -348,8 +370,7 @@ class SharingManagement {
348
370
  async deleteInvitation(invitationUid) {
349
371
  await this.apiService.deleteInvitation(invitationUid);
350
372
  }
351
- async inviteExternalUser(share, inviteeEmail, role, emailOptions) {
352
- const inviter = await this.sharesService.getContextShareMemberEmailKey(share.shareId);
373
+ async inviteExternalUser(inviter, share, inviteeEmail, role, emailOptions) {
353
374
  const invitationCrypto = await this.cryptoService.encryptExternalInvitation(share.passphraseSessionKey, inviter.addressKey, inviteeEmail);
354
375
  const encryptedInvitation = await this.apiService.inviteExternalUser(share.shareId, {
355
376
  inviterAddressId: inviter.addressId,
@@ -381,13 +402,12 @@ class SharingManagement {
381
402
  async updateMember(memberUid, role) {
382
403
  await this.apiService.updateMember(memberUid, { role });
383
404
  }
384
- async shareViaLink(share, options) {
385
- const { email: creatorEmail } = await this.sharesService.getContextShareMemberEmailKey(share.shareId);
405
+ async shareViaLink(inviter, share, options) {
386
406
  const generatedPassword = await this.cryptoService.generatePublicLinkPassword();
387
407
  const password = options.customPassword ? `${generatedPassword}${options.customPassword}` : generatedPassword;
388
- const { crypto, srp } = await this.cryptoService.encryptPublicLink(creatorEmail, share.passphraseSessionKey, password);
408
+ const { crypto, srp } = await this.cryptoService.encryptPublicLink(inviter.email, share.passphraseSessionKey, password);
389
409
  const publicLink = await this.apiService.createPublicLink(share.shareId, {
390
- creatorEmail,
410
+ creatorEmail: inviter.email,
391
411
  role: options.role,
392
412
  includesCustomPassword: !!options.customPassword,
393
413
  expirationTime: options.expiration ? Math.floor(options.expiration.getTime() / 1000) : undefined,
@@ -402,7 +422,7 @@ class SharingManagement {
402
422
  customPassword: options.customPassword,
403
423
  expirationTime: options.expiration,
404
424
  numberOfInitializedDownloads: 0,
405
- creatorEmail,
425
+ creatorEmail: inviter.email,
406
426
  };
407
427
  }
408
428
  async updateSharedLink(share, publicLink, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"sharingManagement.js","sourceRoot":"","sources":["../../../src/internal/sharing/sharingManagement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sharingManagement.js","sourceRoot":"","sources":["../../../src/internal/sharing/sharingManagement.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ const interface_1 = require("../../interface");
5
5
  const sharingManagement_1 = require("./sharingManagement");
6
6
  describe('SharingManagement', () => {
7
7
  let apiService;
8
+ let cache;
8
9
  let cryptoService;
9
10
  let accountService;
10
11
  let sharesService;
@@ -44,10 +45,14 @@ describe('SharingManagement', () => {
44
45
  updatePublicLink: jest.fn(),
45
46
  };
46
47
  // @ts-expect-error No need to implement all methods for mocking
48
+ cache = {
49
+ hasSharedByMeNodeUidsLoaded: jest.fn().mockResolvedValue(true),
50
+ addSharedByMeNodeUid: jest.fn(),
51
+ removeSharedByMeNodeUid: jest.fn(),
52
+ };
53
+ // @ts-expect-error No need to implement all methods for mocking
47
54
  cryptoService = {
48
- generateShareKeys: jest
49
- .fn()
50
- .mockResolvedValue({
55
+ generateShareKeys: jest.fn().mockResolvedValue({
51
56
  shareKey: { encrypted: 'encrypted-key', decrypted: { passphraseSessionKey: 'pass-session-key' } },
52
57
  }),
53
58
  decryptShare: jest.fn().mockImplementation((share) => share),
@@ -57,7 +62,7 @@ describe('SharingManagement', () => {
57
62
  encryptInvitation: jest.fn().mockImplementation(() => { }),
58
63
  encryptExternalInvitation: jest.fn().mockImplementation((invitation) => ({
59
64
  ...invitation,
60
- base64ExternalInvitationSignature: 'extenral-signature',
65
+ base64ExternalInvitationSignature: 'external-signature',
61
66
  })),
62
67
  decryptPublicLink: jest.fn().mockImplementation((publicLink) => publicLink),
63
68
  generatePublicLinkPassword: jest.fn().mockResolvedValue('generatedPassword'),
@@ -72,17 +77,12 @@ describe('SharingManagement', () => {
72
77
  };
73
78
  // @ts-expect-error No need to implement all methods for mocking
74
79
  sharesService = {
75
- loadEncryptedShare: jest
76
- .fn()
77
- .mockResolvedValue({
80
+ loadEncryptedShare: jest.fn().mockResolvedValue({
78
81
  id: 'shareId',
79
82
  addressId: 'addressId',
80
83
  creatorEmail: 'address@example.com',
81
84
  passphraseSessionKey: 'sharePassphraseSessionKey',
82
85
  }),
83
- getContextShareMemberEmailKey: jest
84
- .fn()
85
- .mockResolvedValue({ email: 'volume-email', addressId: 'addressId', addressKey: 'volume-key' }),
86
86
  };
87
87
  // @ts-expect-error No need to implement all methods for mocking
88
88
  nodesService = {
@@ -94,7 +94,7 @@ describe('SharingManagement', () => {
94
94
  getRootNodeEmailKey: jest.fn().mockResolvedValue({ email: 'volume-email', addressKey: 'volume-key' }),
95
95
  notifyNodeChanged: jest.fn(),
96
96
  };
97
- sharingManagement = new sharingManagement_1.SharingManagement((0, logger_1.getMockLogger)(), apiService, cryptoService, accountService, sharesService, nodesService);
97
+ sharingManagement = new sharingManagement_1.SharingManagement((0, logger_1.getMockLogger)(), apiService, cache, cryptoService, accountService, sharesService, nodesService);
98
98
  });
99
99
  describe('getSharingInfo', () => {
100
100
  it('should return empty sharing info for unshared node', async () => {
@@ -159,9 +159,7 @@ describe('SharingManagement', () => {
159
159
  describe('shareNode with share creation', () => {
160
160
  const nodeUid = 'volumeId~nodeUid';
161
161
  it('should create share if no exists', async () => {
162
- nodesService.getNode = jest
163
- .fn()
164
- .mockImplementation((nodeUid) => ({
162
+ nodesService.getNode = jest.fn().mockImplementation((nodeUid) => ({
165
163
  nodeUid,
166
164
  parentUid: 'parentUid',
167
165
  name: { ok: true, value: 'name' },
@@ -184,6 +182,7 @@ describe('SharingManagement', () => {
184
182
  expect(apiService.updateInvitation).not.toHaveBeenCalled();
185
183
  expect(apiService.inviteProtonUser).toHaveBeenCalled();
186
184
  expect(nodesService.notifyNodeChanged).toHaveBeenCalledWith(nodeUid);
185
+ expect(cache.addSharedByMeNodeUid).toHaveBeenCalledWith(nodeUid);
187
186
  });
188
187
  });
189
188
  describe('shareNode with share re-use', () => {
@@ -240,6 +239,7 @@ describe('SharingManagement', () => {
240
239
  });
241
240
  expect(apiService.updateInvitation).not.toHaveBeenCalled();
242
241
  expect(apiService.inviteProtonUser).toHaveBeenCalled();
242
+ expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
243
243
  });
244
244
  it('should share node with proton email with specific role', async () => {
245
245
  const sharingInfo = await sharingManagement.shareNode(nodeUid, {
@@ -261,6 +261,7 @@ describe('SharingManagement', () => {
261
261
  });
262
262
  expect(apiService.updateInvitation).not.toHaveBeenCalled();
263
263
  expect(apiService.inviteProtonUser).toHaveBeenCalled();
264
+ expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
264
265
  });
265
266
  it('should update existing role', async () => {
266
267
  const sharingInfo = await sharingManagement.shareNode(nodeUid, {
@@ -279,6 +280,7 @@ describe('SharingManagement', () => {
279
280
  });
280
281
  expect(apiService.updateInvitation).toHaveBeenCalled();
281
282
  expect(apiService.inviteProtonUser).not.toHaveBeenCalled();
283
+ expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
282
284
  });
283
285
  it('should be no-op if no change', async () => {
284
286
  const sharingInfo = await sharingManagement.shareNode(nodeUid, {
@@ -292,6 +294,18 @@ describe('SharingManagement', () => {
292
294
  });
293
295
  expect(apiService.updateInvitation).not.toHaveBeenCalled();
294
296
  expect(apiService.inviteProtonUser).not.toHaveBeenCalled();
297
+ expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
298
+ });
299
+ it('should use address from the root node context share', async () => {
300
+ nodesService.getRootNodeEmailKey = jest
301
+ .fn()
302
+ .mockResolvedValue({ email: 'my-volume-email', addressKey: 'my-volume-key' });
303
+ await sharingManagement.shareNode(nodeUid, { users: ['email'] });
304
+ expect(apiService.inviteProtonUser).toHaveBeenCalledWith('shareId', {
305
+ addedByEmail: 'my-volume-email',
306
+ inviteeEmail: 'email',
307
+ role: 'viewer',
308
+ }, expect.anything());
295
309
  });
296
310
  });
297
311
  describe('external invitations', () => {
@@ -317,6 +331,7 @@ describe('SharingManagement', () => {
317
331
  });
318
332
  expect(apiService.updateExternalInvitation).not.toHaveBeenCalled();
319
333
  expect(apiService.inviteExternalUser).toHaveBeenCalled();
334
+ expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
320
335
  });
321
336
  it('should share node with external email with specific role', async () => {
322
337
  const sharingInfo = await sharingManagement.shareNode(nodeUid, {
@@ -339,6 +354,7 @@ describe('SharingManagement', () => {
339
354
  });
340
355
  expect(apiService.updateExternalInvitation).not.toHaveBeenCalled();
341
356
  expect(apiService.inviteExternalUser).toHaveBeenCalled();
357
+ expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
342
358
  });
343
359
  it('should update existing role', async () => {
344
360
  const sharingInfo = await sharingManagement.shareNode(nodeUid, {
@@ -357,6 +373,7 @@ describe('SharingManagement', () => {
357
373
  });
358
374
  expect(apiService.updateExternalInvitation).toHaveBeenCalled();
359
375
  expect(apiService.inviteExternalUser).not.toHaveBeenCalled();
376
+ expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
360
377
  });
361
378
  it('should be no-op if no change', async () => {
362
379
  const sharingInfo = await sharingManagement.shareNode(nodeUid, {
@@ -370,6 +387,21 @@ describe('SharingManagement', () => {
370
387
  });
371
388
  expect(apiService.updateExternalInvitation).not.toHaveBeenCalled();
372
389
  expect(apiService.inviteExternalUser).not.toHaveBeenCalled();
390
+ expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
391
+ });
392
+ it('should use address from the root node context share', async () => {
393
+ nodesService.getRootNodeEmailKey = jest.fn().mockResolvedValue({
394
+ email: 'my-volume-email',
395
+ addressId: 'my-volume-addressId',
396
+ addressKey: 'my-volume-key',
397
+ });
398
+ await sharingManagement.shareNode(nodeUid, { users: ['email'] });
399
+ expect(apiService.inviteExternalUser).toHaveBeenCalledWith('shareId', {
400
+ inviterAddressId: 'my-volume-addressId',
401
+ inviteeEmail: 'email',
402
+ role: 'viewer',
403
+ base64Signature: 'external-signature',
404
+ }, expect.anything());
373
405
  });
374
406
  });
375
407
  describe('mix of internal and external invitations', () => {
@@ -408,6 +440,7 @@ describe('SharingManagement', () => {
408
440
  expect(apiService.inviteExternalUser).toHaveBeenCalledWith('shareId', expect.objectContaining({
409
441
  inviteeEmail: 'email2',
410
442
  }), expect.anything());
443
+ expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
411
444
  });
412
445
  });
413
446
  describe('members', () => {
@@ -429,6 +462,7 @@ describe('SharingManagement', () => {
429
462
  expect(apiService.updateMember).toHaveBeenCalled();
430
463
  expect(apiService.updateInvitation).not.toHaveBeenCalled();
431
464
  expect(apiService.inviteProtonUser).not.toHaveBeenCalled();
465
+ expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
432
466
  });
433
467
  it('should be no-op if no change via proton user', async () => {
434
468
  const sharingInfo = await sharingManagement.shareNode(nodeUid, {
@@ -443,6 +477,7 @@ describe('SharingManagement', () => {
443
477
  expect(apiService.updateMember).not.toHaveBeenCalled();
444
478
  expect(apiService.updateInvitation).not.toHaveBeenCalled();
445
479
  expect(apiService.inviteProtonUser).not.toHaveBeenCalled();
480
+ expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
446
481
  });
447
482
  it('should update member via non-proton user', async () => {
448
483
  const sharingInfo = await sharingManagement.shareNode(nodeUid, {
@@ -462,6 +497,7 @@ describe('SharingManagement', () => {
462
497
  expect(apiService.updateMember).toHaveBeenCalled();
463
498
  expect(apiService.updateInvitation).not.toHaveBeenCalled();
464
499
  expect(apiService.inviteProtonUser).not.toHaveBeenCalled();
500
+ expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
465
501
  });
466
502
  it('should be no-op if no change via non-proton user', async () => {
467
503
  const sharingInfo = await sharingManagement.shareNode(nodeUid, {
@@ -476,6 +512,7 @@ describe('SharingManagement', () => {
476
512
  expect(apiService.updateMember).not.toHaveBeenCalled();
477
513
  expect(apiService.updateInvitation).not.toHaveBeenCalled();
478
514
  expect(apiService.inviteProtonUser).not.toHaveBeenCalled();
515
+ expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
479
516
  });
480
517
  });
481
518
  describe('public link', () => {
@@ -513,6 +550,7 @@ describe('SharingManagement', () => {
513
550
  crypto: 'publicLinkCrypto',
514
551
  srp: 'publicLinkSrp',
515
552
  }));
553
+ expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
516
554
  });
517
555
  it('should share node with custom password and expiration', async () => {
518
556
  jest.useFakeTimers();
@@ -548,6 +586,7 @@ describe('SharingManagement', () => {
548
586
  crypto: 'publicLinkCrypto',
549
587
  srp: 'publicLinkSrp',
550
588
  }));
589
+ expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
551
590
  });
552
591
  it('should update public link with custom password and expiration', async () => {
553
592
  jest.useFakeTimers();
@@ -591,6 +630,7 @@ describe('SharingManagement', () => {
591
630
  crypto: 'publicLinkCrypto',
592
631
  srp: 'publicLinkSrp',
593
632
  }));
633
+ expect(cache.addSharedByMeNodeUid).not.toHaveBeenCalled();
594
634
  });
595
635
  it('should not allow updating legacy public link', async () => {
596
636
  apiService.getPublicLink = jest.fn().mockResolvedValue({
@@ -678,6 +718,7 @@ describe('SharingManagement', () => {
678
718
  expect(apiService.deleteExternalInvitation).not.toHaveBeenCalled();
679
719
  expect(apiService.removeMember).not.toHaveBeenCalled();
680
720
  expect(apiService.removePublicLink).not.toHaveBeenCalled();
721
+ expect(cache.removeSharedByMeNodeUid).not.toHaveBeenCalled();
681
722
  });
682
723
  it('should delete external invitation', async () => {
683
724
  const sharingInfo = await sharingManagement.unshareNode(nodeUid, { users: ['external-email'] });
@@ -692,6 +733,7 @@ describe('SharingManagement', () => {
692
733
  expect(apiService.deleteExternalInvitation).toHaveBeenCalled();
693
734
  expect(apiService.removeMember).not.toHaveBeenCalled();
694
735
  expect(apiService.removePublicLink).not.toHaveBeenCalled();
736
+ expect(cache.removeSharedByMeNodeUid).not.toHaveBeenCalled();
695
737
  });
696
738
  it('should remove member', async () => {
697
739
  const sharingInfo = await sharingManagement.unshareNode(nodeUid, { users: ['member-email'] });
@@ -706,6 +748,7 @@ describe('SharingManagement', () => {
706
748
  expect(apiService.deleteExternalInvitation).not.toHaveBeenCalled();
707
749
  expect(apiService.removeMember).toHaveBeenCalled();
708
750
  expect(apiService.removePublicLink).not.toHaveBeenCalled();
751
+ expect(cache.removeSharedByMeNodeUid).not.toHaveBeenCalled();
709
752
  });
710
753
  it('should be no-op if not shared with email', async () => {
711
754
  const sharingInfo = await sharingManagement.unshareNode(nodeUid, { users: ['non-existing-email'] });
@@ -720,6 +763,7 @@ describe('SharingManagement', () => {
720
763
  expect(apiService.deleteExternalInvitation).not.toHaveBeenCalled();
721
764
  expect(apiService.removeMember).not.toHaveBeenCalled();
722
765
  expect(apiService.removePublicLink).not.toHaveBeenCalled();
766
+ expect(cache.removeSharedByMeNodeUid).not.toHaveBeenCalled();
723
767
  });
724
768
  it('should remove public link', async () => {
725
769
  const sharingInfo = await sharingManagement.unshareNode(nodeUid, { publicLink: 'remove' });
@@ -734,6 +778,7 @@ describe('SharingManagement', () => {
734
778
  expect(apiService.deleteExternalInvitation).not.toHaveBeenCalled();
735
779
  expect(apiService.removeMember).not.toHaveBeenCalled();
736
780
  expect(apiService.removePublicLink).toHaveBeenCalled();
781
+ expect(cache.removeSharedByMeNodeUid).not.toHaveBeenCalled();
737
782
  });
738
783
  it('should remove share if all is removed', async () => {
739
784
  const sharingInfo = await sharingManagement.unshareNode(nodeUid);
@@ -744,6 +789,7 @@ describe('SharingManagement', () => {
744
789
  expect(apiService.removeMember).not.toHaveBeenCalled();
745
790
  expect(apiService.removePublicLink).not.toHaveBeenCalled();
746
791
  expect(nodesService.notifyNodeChanged).toHaveBeenCalled();
792
+ expect(cache.removeSharedByMeNodeUid).toHaveBeenCalledWith(nodeUid);
747
793
  });
748
794
  it('should remove share if everything is manually removed', async () => {
749
795
  const sharingInfo = await sharingManagement.unshareNode(nodeUid, {
@@ -756,6 +802,7 @@ describe('SharingManagement', () => {
756
802
  expect(apiService.deleteExternalInvitation).toHaveBeenCalled();
757
803
  expect(apiService.removeMember).toHaveBeenCalled();
758
804
  expect(apiService.removePublicLink).toHaveBeenCalled();
805
+ expect(cache.removeSharedByMeNodeUid).toHaveBeenCalledWith(nodeUid);
759
806
  });
760
807
  });
761
808
  describe('resendInvitationEmail', () => {