From 198083d10465542a48047dd204b46589415986c2 Mon Sep 17 00:00:00 2001 From: Brian Faust Date: Mon, 10 Aug 2020 09:05:23 +0300 Subject: [PATCH] fix(profiles): only persist and restore known wallet data (#652) --- .../src/wallets/wallet.test.ts | 10 +++++++-- .../src/wallets/wallet.ts | 21 ++++++++++++++++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/packages/platform-sdk-profiles/src/wallets/wallet.test.ts b/packages/platform-sdk-profiles/src/wallets/wallet.test.ts index 25533971dc..f145d01ff3 100644 --- a/packages/platform-sdk-profiles/src/wallets/wallet.test.ts +++ b/packages/platform-sdk-profiles/src/wallets/wallet.test.ts @@ -184,8 +184,14 @@ describe.each([123, 456, 789])("%s", (slip44) => { }); expect(actual.network).toBe("devnet"); expect(actual.publicKey).toBe("034151a3ec46b5670a682b0a63394f863587d1bc97483b1b6c70eb58e7f0aed192"); - expect(actual.data).toBeObject(); - expect(actual.data.key).toBe("value"); + expect(actual.data).toEqual({ + BALANCE: "55827093444556", + BROADCASTED_TRANSACTIONS: {}, + DELEGATES: [], + EXCHANGE_RATE: 0, + SEQUENCE: "111932", + SIGNED_TRANSACTIONS: {}, + }); expect(actual.settings).toBeObject(); expect(actual.settings.AVATAR).toBeString(); }); diff --git a/packages/platform-sdk-profiles/src/wallets/wallet.ts b/packages/platform-sdk-profiles/src/wallets/wallet.ts index df79effab8..4fa39b7719 100644 --- a/packages/platform-sdk-profiles/src/wallets/wallet.ts +++ b/packages/platform-sdk-profiles/src/wallets/wallet.ts @@ -33,6 +33,8 @@ export class Wallet { this.#dataRepository = new DataRepository(); this.#settingRepository = new SettingRepository(Object.values(WalletSetting)); this.#transactionService = new TransactionService(this); + + this.restore(); } /** @@ -189,7 +191,14 @@ export class Wallet { network: this.network().id, address: this.address(), publicKey: this.publicKey(), - data: this.data().all(), + data: { + [WalletData.Balance]: this.data().get(WalletData.Balance, BigNumber.ZERO)?.toFixed(), + [WalletData.BroadcastedTransactions]: this.data().get(WalletData.BroadcastedTransactions, []), + [WalletData.Delegates]: this.data().get(WalletData.Delegates, []), + [WalletData.ExchangeRate]: this.data().get(WalletData.ExchangeRate, 0), + [WalletData.Sequence]: this.data().get(WalletData.Sequence, BigNumber.ZERO)?.toFixed(), + [WalletData.SignedTransactions]: this.data().get(WalletData.SignedTransactions, []), + }, settings: this.settings().all(), }; } @@ -432,4 +441,14 @@ export class Wallet { return response; } + + private restore(): void { + if (this.data().has(WalletData.Balance)) { + this.data().set(WalletData.Balance, BigNumber.make(this.data().get(WalletData.Balance)!)); + } + + if (this.data().has(WalletData.Sequence)) { + this.data().set(WalletData.Sequence, BigNumber.make(this.data().get(WalletData.Sequence)!)); + } + } }