@secrecy/lib 1.73.2-fix-save-in-cloud-sharing.1 → 1.73.2

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.
@@ -18,6 +18,7 @@ export class BaseClient {
18
18
  client;
19
19
  secrecyUrls;
20
20
  sessionId;
21
+ #me = null;
21
22
  constructor(opts) {
22
23
  this.sessionId = opts.session;
23
24
  this.secrecyUrls = {
@@ -52,7 +53,19 @@ export class BaseClient {
52
53
  });
53
54
  }
54
55
  async me() {
55
- return await this.client.user.self.query({});
56
+ if (this.#me === null ||
57
+ this.sessionId !== this.#me.sessionId ||
58
+ Date.now() - this.#me.fetchedAt > 5 * 60 * 1000) {
59
+ const data = await this.client.user.self.query({
60
+ // t: Date.now(), // TODO needed or what?
61
+ });
62
+ this.#me = {
63
+ data,
64
+ sessionId: this.sessionId,
65
+ fetchedAt: Date.now(),
66
+ };
67
+ }
68
+ return this.#me.data;
56
69
  }
57
70
  static async getUser(userId, opts) {
58
71
  const user = await getPublicUser(this.getBaseClient(opts), userId);
@@ -29,7 +29,9 @@ export class SecrecyCloudClient {
29
29
  const node = await apiNodeFullToInternalFull(addDataToHistory, this.#keys);
30
30
  const data = node.history.find((d) => d.id === dataId);
31
31
  if (data !== undefined) {
32
- const users = node.users.filter(([u]) => u.id !== this.#client.app.userId);
32
+ // TODO sad to have to make this extra request
33
+ const me = await this.#client.me();
34
+ const users = node.users.filter(([u]) => u.id !== me.id);
33
35
  const userIds = users.map(([user]) => user.id);
34
36
  const userKeys = await this.#client.app.userPublicKey(userIds);
35
37
  const shares = users.map(([user]) => {
@@ -295,8 +297,7 @@ export class SecrecyCloudClient {
295
297
  nameKey: encryptedNameKey,
296
298
  });
297
299
  const folder = await apiNodeToExternalNodeFull(createdFolder, this.#keys);
298
- const users = folder.parent?.users?.filter(([u]) => u.id !== this.#client.app.userId) ??
299
- [];
300
+ const users = folder.parent?.users?.filter(([u]) => u.id !== folder.owner.id) ?? [];
300
301
  if (users.length > 0) {
301
302
  await this.shareNode(users.map(([user, permissions]) => ({
302
303
  userId: user.id,
@@ -618,12 +619,10 @@ export class SecrecyCloudClient {
618
619
  nameKey: encryptedNameKey,
619
620
  });
620
621
  const node = await apiNodeToExternalNodeFull(saveInCloud, this.#keys);
621
- const me = node.parent?.users.find(([u]) => u.id === this.#client.app.userId);
622
- console.log('SAVE IN CLOUD', { me, node });
622
+ const me = node.parent?.users.find(([u]) => u.id === node.owner.id);
623
623
  // TODO: ??
624
624
  if (me !== undefined && ['delete', 'write'].includes(me[1].rights)) {
625
- const others = node.parent?.users.filter(([u]) => u.id !== this.#client.app.userId) ??
626
- [];
625
+ const others = node.parent?.users.filter(([u]) => u.id !== node.owner.id) ?? [];
627
626
  if (others.length > 0) {
628
627
  await this.shareNode(others.map(([user, permissions]) => ({
629
628
  userId: user.id,
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@secrecy/lib",
3
3
  "author": "Anonymize <anonymize@gmail.com>",
4
4
  "description": "Anonymize Secrecy Library",
5
- "version": "1.73.2-fix-save-in-cloud-sharing.1",
5
+ "version": "1.73.2",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "https://github.com/anonymize-org/lib.git"