From 29cb85561b5ceff949e0a0031d9161ec49a7b783 Mon Sep 17 00:00:00 2001 From: Ry Racherbaumer Date: Fri, 6 Sep 2024 11:18:39 -0500 Subject: [PATCH] Refactor loading and processing of actions --- packages/js-sdk/src/Contacts.ts | 19 +++++++++---------- .../src/keystore/privatePreferencesStore.ts | 4 ++-- .../js-sdk/src/keystore/rpcDefinitions.ts | 2 +- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/packages/js-sdk/src/Contacts.ts b/packages/js-sdk/src/Contacts.ts index d1b95c9f..0299fa17 100644 --- a/packages/js-sdk/src/Contacts.ts +++ b/packages/js-sdk/src/Contacts.ts @@ -167,17 +167,10 @@ export class ConsentList { /* * Process actions and update internal consent list */ - processActions(actionsMap?: ActionsMap) { + processActions(actionsMap: ActionsMap) { const entries: ConsentListEntry[] = [] // actions to process - const actions = actionsMap - ? Array.from(actionsMap.values()) - : this.client.keystore.getPrivatePreferences() - - // processing all actions, reset consent list - if (!actionsMap) { - this.reset() - } + const actions = Array.from(actionsMap.values()) // update the consent list actions.forEach((action) => { @@ -259,7 +252,13 @@ export class ConsentList { .filter(([timestampNs]) => Boolean(timestampNs)) as [string, Uint8Array][] // decode messages and save them to keystore - const actionsMap = await this.decodeMessages(new Map(messageEntries)) + await this.decodeMessages(new Map(messageEntries)) + + // get all actions from keystore + const actionsMap = this.client.keystore.getPrivatePreferences() + + // reset consent list + this.reset() // process actions and update consent list return this.processActions(actionsMap) diff --git a/packages/js-sdk/src/keystore/privatePreferencesStore.ts b/packages/js-sdk/src/keystore/privatePreferencesStore.ts index d2ef4d29..bed2657e 100644 --- a/packages/js-sdk/src/keystore/privatePreferencesStore.ts +++ b/packages/js-sdk/src/keystore/privatePreferencesStore.ts @@ -112,7 +112,7 @@ export class PrivatePreferencesStore { }) } - get actions(): privatePreferences.PrivatePreferencesAction[] { + get actions(): ActionsMap { // sort actions by their keys (timestamps) in ascending order const sortedActions = new Map( [...this.actionsMap.entries()].sort( @@ -120,7 +120,7 @@ export class PrivatePreferencesStore { fromNanoString(a[0])!.getTime() - fromNanoString(b[0])!.getTime() ) ) - return Array.from(sortedActions.values()) + return sortedActions } lookup(key: string): privatePreferences.PrivatePreferencesAction | undefined { diff --git a/packages/js-sdk/src/keystore/rpcDefinitions.ts b/packages/js-sdk/src/keystore/rpcDefinitions.ts index 21d23005..630d7a71 100644 --- a/packages/js-sdk/src/keystore/rpcDefinitions.ts +++ b/packages/js-sdk/src/keystore/rpcDefinitions.ts @@ -44,7 +44,7 @@ type PrivatePreferenceKeystoreMethods = { createPrivatePreference: ( action: privatePreferences.PrivatePreferencesAction ) => Promise - getPrivatePreferences: () => privatePreferences.PrivatePreferencesAction[] + getPrivatePreferences: () => ActionsMap getPrivatePreferencesTopic: () => Promise savePrivatePreferences: (data: ActionsMap) => Promise }