Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F14864915
D14122.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
9 KB
Subscribers
None
D14122.id.diff
View Options
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
Details
Attached
Mime Type
text/plain
Expires
Tue, May 20, 23:09 (4 h, 52 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5865948
Default Alt Text
D14122.id.diff (9 KB)
Attached To
D14122: [Cashtab] Move caching config out of Ticker
Event Timeline
Log In to Comment