refactor: move the calldata decoder to src/shared/calldataDecoder.js (closes #759)
decodeCalldata() and tokenAmountText() move out of the TxApproval view into src/shared/calldataDecoder.js. TxApproval, TransactionDetail and the decoder tests import them from there. tokenSourcesByChainId() moves from the popup view helpers to src/shared/state.js, beside currentNetwork(), so the decoder requires nothing under src/popup/. It reads only the state singleton and the network table. Model: opus-5-5
This commit was merged in pull request #765.
This commit is contained in:
1 parent
c150b83322
commit
6d158bf1b1
14 files changed
+219
-185
No files matched your search
+28
-1
@@ -22,7 +22,7 @@
|
||||
// same thing in the editor is fast feedback in front of the build, not the
|
||||
// guarantee.
|
||||
|
||||
const { networkById } = require("./networks");
|
||||
const { networkById, networkByChainId } = require("./networks");
|
||||
const { copyChainSwitchFields } = require("./chainSwitchFields");
|
||||
const {
|
||||
DEFAULT_STATE,
|
||||
@@ -125,6 +125,32 @@ function currentNetwork() {
|
||||
return networkById(state.networkId);
|
||||
}
|
||||
|
||||
// What the wallet knows of the tokens on the network with this chain id, or
|
||||
// on the active network when no chain id is given, as the `sources` that
|
||||
// resolveTokenSymbol() and resolveTokenDecimals() take. A contract address
|
||||
// names a token on one network only, and every token balance held is the
|
||||
// active network's, so another network gets the tokens tracked on it
|
||||
// (state.networkTrackedTokens, see applyChainSwitchFields()) and no balances.
|
||||
//
|
||||
// The wallets' balances hold what Blockscout reported for each token. So the
|
||||
// wallets are returned only while "Use Blockscout" is on.
|
||||
function tokenSourcesByChainId(chainId) {
|
||||
const chainIdOrActive = chainId || currentNetwork().chainId;
|
||||
const net = networkByChainId(chainIdOrActive);
|
||||
if (net && net.id === state.networkId) {
|
||||
return {
|
||||
chainId: chainIdOrActive,
|
||||
trackedTokens: state.trackedTokens,
|
||||
wallets: state.useBlockscout ? state.wallets : [],
|
||||
};
|
||||
}
|
||||
return {
|
||||
chainId: chainIdOrActive,
|
||||
trackedTokens: (net && state.networkTrackedTokens[net.id]) || [],
|
||||
wallets: [],
|
||||
};
|
||||
}
|
||||
|
||||
// `baseline` holds the persisted fields as this page held them when its last
|
||||
// loadState() finished, or when its last successful saveState() began.
|
||||
// takeStoredNetwork(), takeStoredTrackedTokens() and
|
||||
@@ -820,5 +846,6 @@ module.exports = {
|
||||
loadState,
|
||||
currentAddress,
|
||||
currentNetwork,
|
||||
tokenSourcesByChainId,
|
||||
StateNotLoadedError,
|
||||
};
|
||||
Reference in new issue
Block a user