mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Adding TokenListController to Metamask-Controller (#11515)
This commit is contained in:
parent
b21b139653
commit
d33b841fb8
@ -51,6 +51,7 @@ export default class PreferencesController {
|
|||||||
useNonceField: false,
|
useNonceField: false,
|
||||||
usePhishDetect: true,
|
usePhishDetect: true,
|
||||||
dismissSeedBackUpReminder: false,
|
dismissSeedBackUpReminder: false,
|
||||||
|
useStaticTokenList: false,
|
||||||
|
|
||||||
// WARNING: Do not use feature flags for security-sensitive things.
|
// WARNING: Do not use feature flags for security-sensitive things.
|
||||||
// Feature flag toggling is available in the global namespace
|
// Feature flag toggling is available in the global namespace
|
||||||
@ -138,6 +139,16 @@ export default class PreferencesController {
|
|||||||
this.store.updateState({ usePhishDetect: val });
|
this.store.updateState({ usePhishDetect: val });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setter for the `useStaticTokenList` property
|
||||||
|
*
|
||||||
|
* @param {boolean} val - Whether or not the user prefers to use the static token list or dynamic token list from the API
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
setUseStaticTokenList(val) {
|
||||||
|
this.store.updateState({ useStaticTokenList: val });
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Setter for the `firstTimeFlowType` property
|
* Setter for the `firstTimeFlowType` property
|
||||||
*
|
*
|
||||||
|
@ -869,4 +869,22 @@ describe('preferences controller', function () {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
describe('setUseStaticTokenList', function () {
|
||||||
|
it('should default to false', function () {
|
||||||
|
const state = preferencesController.store.getState();
|
||||||
|
assert.equal(state.useStaticTokenList, false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should set the useStaticTokenList property in state', function () {
|
||||||
|
assert.equal(
|
||||||
|
preferencesController.store.getState().useStaticTokenList,
|
||||||
|
false,
|
||||||
|
);
|
||||||
|
preferencesController.setUseStaticTokenList(true);
|
||||||
|
assert.equal(
|
||||||
|
preferencesController.store.getState().useStaticTokenList,
|
||||||
|
true,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@ -25,6 +25,7 @@ import {
|
|||||||
PhishingController,
|
PhishingController,
|
||||||
NotificationController,
|
NotificationController,
|
||||||
GasFeeController,
|
GasFeeController,
|
||||||
|
TokenListController,
|
||||||
} from '@metamask/controllers';
|
} from '@metamask/controllers';
|
||||||
import { TRANSACTION_STATUSES } from '../../shared/constants/transaction';
|
import { TRANSACTION_STATUSES } from '../../shared/constants/transaction';
|
||||||
import { MAINNET_CHAIN_ID } from '../../shared/constants/network';
|
import { MAINNET_CHAIN_ID } from '../../shared/constants/network';
|
||||||
@ -32,6 +33,7 @@ import { UI_NOTIFICATIONS } from '../../shared/notifications';
|
|||||||
import { toChecksumHexAddress } from '../../shared/modules/hexstring-utils';
|
import { toChecksumHexAddress } from '../../shared/modules/hexstring-utils';
|
||||||
import { MILLISECOND } from '../../shared/constants/time';
|
import { MILLISECOND } from '../../shared/constants/time';
|
||||||
|
|
||||||
|
import { hexToDecimal } from '../../ui/helpers/utils/conversions.util';
|
||||||
import ComposableObservableStore from './lib/ComposableObservableStore';
|
import ComposableObservableStore from './lib/ComposableObservableStore';
|
||||||
import AccountTracker from './lib/account-tracker';
|
import AccountTracker from './lib/account-tracker';
|
||||||
import createLoggerMiddleware from './lib/createLoggerMiddleware';
|
import createLoggerMiddleware from './lib/createLoggerMiddleware';
|
||||||
@ -219,6 +221,31 @@ export default class MetamaskController extends EventEmitter {
|
|||||||
state: initState.CurrencyController,
|
state: initState.CurrencyController,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const tokenListMessenger = controllerMessenger.getRestricted({
|
||||||
|
name: 'TokenListController',
|
||||||
|
});
|
||||||
|
this.tokenListController = new TokenListController({
|
||||||
|
chainId: hexToDecimal(this.networkController.getCurrentChainId()),
|
||||||
|
useStaticTokenList: this.preferencesController.store.getState()
|
||||||
|
.useStaticTokenList,
|
||||||
|
onNetworkStateChange: (cb) =>
|
||||||
|
this.networkController.store.subscribe((networkState) => {
|
||||||
|
const modifiedNetworkState = {
|
||||||
|
...networkState,
|
||||||
|
provider: {
|
||||||
|
...networkState.provider,
|
||||||
|
chainId: hexToDecimal(networkState.provider.chainId),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
return cb(modifiedNetworkState);
|
||||||
|
}),
|
||||||
|
onPreferencesStateChange: this.preferencesController.store.subscribe.bind(
|
||||||
|
this.preferencesController.store,
|
||||||
|
),
|
||||||
|
messenger: tokenListMessenger,
|
||||||
|
state: initState.tokenListController,
|
||||||
|
});
|
||||||
|
|
||||||
this.phishingController = new PhishingController();
|
this.phishingController = new PhishingController();
|
||||||
|
|
||||||
this.notificationController = new NotificationController(
|
this.notificationController = new NotificationController(
|
||||||
@ -275,11 +302,13 @@ export default class MetamaskController extends EventEmitter {
|
|||||||
this.incomingTransactionsController.start();
|
this.incomingTransactionsController.start();
|
||||||
this.tokenRatesController.start();
|
this.tokenRatesController.start();
|
||||||
this.currencyRateController.start();
|
this.currencyRateController.start();
|
||||||
|
this.tokenListController.start();
|
||||||
} else {
|
} else {
|
||||||
this.accountTracker.stop();
|
this.accountTracker.stop();
|
||||||
this.incomingTransactionsController.stop();
|
this.incomingTransactionsController.stop();
|
||||||
this.tokenRatesController.stop();
|
this.tokenRatesController.stop();
|
||||||
this.currencyRateController.stop();
|
this.currencyRateController.stop();
|
||||||
|
this.tokenListController.stop();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -498,6 +527,7 @@ export default class MetamaskController extends EventEmitter {
|
|||||||
ThreeBoxController: this.threeBoxController.store,
|
ThreeBoxController: this.threeBoxController.store,
|
||||||
NotificationController: this.notificationController,
|
NotificationController: this.notificationController,
|
||||||
GasFeeController: this.gasFeeController,
|
GasFeeController: this.gasFeeController,
|
||||||
|
TokenListController: this.tokenListController,
|
||||||
});
|
});
|
||||||
|
|
||||||
this.memStore = new ComposableObservableStore({
|
this.memStore = new ComposableObservableStore({
|
||||||
@ -530,6 +560,7 @@ export default class MetamaskController extends EventEmitter {
|
|||||||
ApprovalController: this.approvalController,
|
ApprovalController: this.approvalController,
|
||||||
NotificationController: this.notificationController,
|
NotificationController: this.notificationController,
|
||||||
GasFeeController: this.gasFeeController,
|
GasFeeController: this.gasFeeController,
|
||||||
|
TokenListController: this.tokenListController,
|
||||||
},
|
},
|
||||||
controllerMessenger,
|
controllerMessenger,
|
||||||
});
|
});
|
||||||
@ -723,6 +754,10 @@ export default class MetamaskController extends EventEmitter {
|
|||||||
setUseBlockie: this.setUseBlockie.bind(this),
|
setUseBlockie: this.setUseBlockie.bind(this),
|
||||||
setUseNonceField: this.setUseNonceField.bind(this),
|
setUseNonceField: this.setUseNonceField.bind(this),
|
||||||
setUsePhishDetect: this.setUsePhishDetect.bind(this),
|
setUsePhishDetect: this.setUsePhishDetect.bind(this),
|
||||||
|
setUseStaticTokenList: nodeify(
|
||||||
|
this.preferencesController.setUseStaticTokenList,
|
||||||
|
this.preferencesController,
|
||||||
|
),
|
||||||
setIpfsGateway: this.setIpfsGateway.bind(this),
|
setIpfsGateway: this.setIpfsGateway.bind(this),
|
||||||
setParticipateInMetaMetrics: this.setParticipateInMetaMetrics.bind(this),
|
setParticipateInMetaMetrics: this.setParticipateInMetaMetrics.bind(this),
|
||||||
setFirstTimeFlowType: this.setFirstTimeFlowType.bind(this),
|
setFirstTimeFlowType: this.setFirstTimeFlowType.bind(this),
|
||||||
|
@ -2046,6 +2046,19 @@ export function setUsePhishDetect(val) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function setUseStaticTokenList(val) {
|
||||||
|
return (dispatch) => {
|
||||||
|
dispatch(showLoadingIndication());
|
||||||
|
log.debug(`background.setUseStaticTokenList`);
|
||||||
|
background.setUseStaticTokenList(val, (err) => {
|
||||||
|
dispatch(hideLoadingIndication());
|
||||||
|
if (err) {
|
||||||
|
dispatch(displayWarning(err.message));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export function setIpfsGateway(val) {
|
export function setIpfsGateway(val) {
|
||||||
return (dispatch) => {
|
return (dispatch) => {
|
||||||
dispatch(showLoadingIndication());
|
dispatch(showLoadingIndication());
|
||||||
|
Loading…
Reference in New Issue
Block a user