Page MenuHomePhabricator

D14122.id40986.diff
No OneTemporary

D14122.id40986.diff

diff --git a/cashtab/src/components/Common/Ticker.js b/cashtab/src/components/Common/Ticker.js
--- a/cashtab/src/components/Common/Ticker.js
+++ b/cashtab/src/components/Common/Ticker.js
@@ -64,13 +64,6 @@
tokenName: 'eToken',
tokenTicker: 'eToken',
tokenLogo: tokenLogo,
- defaultCashtabCache: {
- tokenInfoById: {},
- aliasCache: {
- aliases: [],
- cachedAliasCount: 0,
- },
- },
defaultSettings: {
fiatCurrency: 'usd',
sendModal: false,
diff --git a/cashtab/src/config/cache.js b/cashtab/src/config/cache.js
new file mode 100644
--- /dev/null
+++ b/cashtab/src/config/cache.js
@@ -0,0 +1,13 @@
+// Copyright (c) 2023 The Bitcoin developers
+// Distributed under the MIT software license, see the accompanying
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
+'use strict';
+
+export const defaultCashtabCache = {
+ tokenInfoById: {},
+ aliasCache: {
+ aliases: [],
+ cachedAliasCount: 0,
+ },
+};
diff --git a/cashtab/src/hooks/__tests__/useWallet.test.js b/cashtab/src/hooks/__tests__/useWallet.test.js
--- a/cashtab/src/hooks/__tests__/useWallet.test.js
+++ b/cashtab/src/hooks/__tests__/useWallet.test.js
@@ -1,6 +1,8 @@
import useWallet from '../useWallet';
import { renderHook, act } from '@testing-library/react-hooks';
import mockLegacyWallets from '../__mocks__/mockLegacyWallets';
+import { defaultCashtabCache } from 'config/cache';
+const assert = require('assert');
test('Migrating legacy wallet on mainnet', async () => {
const { result } = renderHook(() => useWallet());
@@ -14,3 +16,9 @@
});
expect(wallet).toStrictEqual(mockLegacyWallets.migratedLegacyAlphaMainnet);
});
+
+test('Verify default Cashtab cache is correctly initialized', async () => {
+ const { result } = renderHook(() => useWallet());
+ const cashtabCache = result.current.cashtabCache;
+ assert.deepEqual(cashtabCache, defaultCashtabCache);
+});
diff --git a/cashtab/src/hooks/useWallet.js b/cashtab/src/hooks/useWallet.js
--- a/cashtab/src/hooks/useWallet.js
+++ b/cashtab/src/hooks/useWallet.js
@@ -43,6 +43,7 @@
import * as randomBytes from 'randombytes';
import * as utxolib from '@bitgo/utxo-lib';
import { websocket as websocketConfig } from 'config/websocket';
+import { defaultCashtabCache } from 'config/cache';
const useWallet = () => {
const [chronik, setChronik] = useState(
@@ -56,9 +57,7 @@
const [chronikWebsocket, setChronikWebsocket] = useState(null);
const [contactList, setContactList] = useState([{}]);
const [cashtabSettings, setCashtabSettings] = useState(false);
- const [cashtabCache, setCashtabCache] = useState(
- currency.defaultCashtabCache,
- );
+ const [cashtabCache, setCashtabCache] = useState(defaultCashtabCache);
const [isAliasServerOnline, setIsAliasServerOnline] = useState(true);
const [fiatPrice, setFiatPrice] = useState(null);
const [apiError, setApiError] = useState(false);
@@ -280,11 +279,10 @@
cashtabCache = await localforage.getItem('cashtabCache');
cachedAliases = cashtabCache
? cashtabCache.aliasCache
- : currency.aliasSettings.defaultCashtabCache.aliasCache;
+ : defaultCashtabCache.aliasCache;
} catch (err) {
console.log(`Error in getAliasesFromLocalForage`, err);
- cachedAliases =
- currency.aliasSettings.defaultCashtabCache.aliasCache;
+ cachedAliases = defaultCashtabCache.aliasCache;
}
return cachedAliases;
};
@@ -412,7 +410,7 @@
const writeTokenInfoByIdToCache = async tokenInfoById => {
console.log(`writeTokenInfoByIdToCache`);
- const cashtabCache = currency.defaultCashtabCache;
+ const cashtabCache = defaultCashtabCache;
cashtabCache.tokenInfoById = tokenInfoById;
try {
await localforage.setItem('cashtabCache', cashtabCache);
@@ -1141,7 +1139,7 @@
// reset to default aliasCache if any unexpected issues are encountered with local storage version
if (!cachedAliases || !cachedAliases.aliases) {
console.log(`Error in getLatestAliases(): Invalid cachedAliases`);
- cashtabCache.aliasCache = currency.defaultCashtabCache.aliasCache;
+ cashtabCache.aliasCache = defaultCashtabCache.aliasCache;
setCashtabCache(cashtabCache);
// set array into local forage
@@ -1166,7 +1164,7 @@
}
// if at least one alias is invalid, reset cachedAliases to default
if (invalidAliasFound) {
- cachedAliases = currency.defaultCashtabCache.aliasCache;
+ cachedAliases = defaultCashtabCache.aliasCache;
}
// retrieve alias-server state
@@ -1324,17 +1322,14 @@
// If there is no keyvalue pair in localforage with key 'cashtabCache'
if (localCashtabCache === null) {
// Use the default
- localforage.setItem(
- 'cashtabCache',
- currency.defaultCashtabCache,
- );
- setCashtabCache(currency.defaultCashtabCache);
- return currency.defaultCashtabCache;
+ localforage.setItem('cashtabCache', defaultCashtabCache);
+ setCashtabCache(defaultCashtabCache);
+ return defaultCashtabCache;
}
} catch (err) {
console.log(`Error getting cashtabCache`, err);
- setCashtabCache(currency.defaultCashtabCache);
- return currency.defaultCashtabCache;
+ setCashtabCache(defaultCashtabCache);
+ return defaultCashtabCache;
}
// If you found an object in localforage at the cashtabCache key, make sure it's valid
if (isValidCashtabCache(localCashtabCache)) {
@@ -1346,7 +1341,7 @@
parseInvalidCashtabCacheForMigration(localCashtabCache);
localforage.setItem('cashtabCache', migratedCashtabCache);
setCashtabCache(migratedCashtabCache);
- return currency.defaultCashtabCache;
+ return defaultCashtabCache;
};
// With different currency selections possible, need unique intervals for price checks
diff --git a/cashtab/src/utils/__tests__/validation.test.js b/cashtab/src/utils/__tests__/validation.test.js
--- a/cashtab/src/utils/__tests__/validation.test.js
+++ b/cashtab/src/utils/__tests__/validation.test.js
@@ -32,7 +32,7 @@
invalidXecAirdropListMultipleInvalidValues,
invalidXecAirdropListMultipleValidValues,
} from '../__mocks__/mockXecAirdropRecipients';
-
+import { defaultCashtabCache } from 'config/cache';
import {
validXecAirdropExclusionList,
invalidXecAirdropExclusionList,
@@ -289,7 +289,7 @@
expect(isValidTokenDocumentUrl(12345)).toBe(false);
});
it(`Recognizes the default cashtabCache object as valid`, () => {
- expect(isValidCashtabCache(currency.defaultCashtabCache)).toBe(true);
+ expect(isValidCashtabCache(defaultCashtabCache)).toBe(true);
});
it(`Recognizes a valid cashtabCache object`, () => {
expect(isValidCashtabCache(validCashtabCache)).toBe(true);
diff --git a/cashtab/src/utils/validation.js b/cashtab/src/utils/validation.js
--- a/cashtab/src/utils/validation.js
+++ b/cashtab/src/utils/validation.js
@@ -3,6 +3,7 @@
import { fromSatoshisToXec } from 'utils/cashMethods';
import cashaddr from 'ecashaddrjs';
import * as bip39 from 'bip39';
+import { defaultCashtabCache } from 'config/cache';
export const isValidAliasString = inputStr => {
return /^[a-z0-9]+$/.test(inputStr);
@@ -262,10 +263,10 @@
// create a copy of the invalidCashtabCache
let migratedCashtabCache = invalidCashtabCache;
// determine if settings are invalid because it is missing a parameter
- for (let param in currency.defaultCashtabCache) {
+ for (let param in defaultCashtabCache) {
if (!Object.prototype.hasOwnProperty.call(invalidCashtabCache, param)) {
// adds the default setting for only that parameter
- migratedCashtabCache[param] = currency.defaultCashtabCache[param];
+ migratedCashtabCache[param] = defaultCashtabCache[param];
}
}
@@ -335,7 +336,7 @@
export const isValidCashtabCache = cashtabCache => {
/*
- Object must contain all keys listed in currency.defaultCashtabCache
+ Object must contain all keys listed in defaultCashtabCache
The tokenInfoById object must have keys that are valid token IDs,
and at each one an object like:
{
@@ -364,8 +365,8 @@
*/
- // Check that every key in currency.defaultCashtabCache is also in this cashtabCache
- const cashtabCacheKeys = Object.keys(currency.defaultCashtabCache);
+ // Check that every key in defaultCashtabCache is also in this cashtabCache
+ const cashtabCacheKeys = Object.keys(defaultCashtabCache);
for (let i = 0; i < cashtabCacheKeys.length; i += 1) {
const thisKey = cashtabCacheKeys[i];
if (thisKey in cashtabCache) {

File Metadata

Mime Type
text/plain
Expires
Tue, May 20, 21:23 (17 h, 50 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5865948
Default Alt Text
D14122.id40986.diff (9 KB)

Event Timeline