mirror of
https://github.com/status-im/MyCrypto.git
synced 2025-02-13 11:36:45 +00:00
* Initial work on refactoring node definitions to reduce number of places theyre defined, amount of copy pasting. * Use makeAutoNodeNAme instead of manually appending _auto * Add getNetVersion to list of unsupported methods * PR feedback * Rework web template node selector to be a network selector. Refactor some types to help with that. Better handle removing custom nodes. * Remove color dropdown. * Fix selecting custom networks. Show notification if change network intent fails. * Use selectors for current node / network instead of intuiting from nodeSelection * Add id key to all networks, simplify add and remove custom node and network functions. * Fix a lot of uses of network.name to use network.id instead. * Dont allow network chainid conflicts * Fix web3 network by chainid * Add testnet badge to network selector * Change nomenclature from change(Node|Network)(Intent)? to change(Node|Network)(Requested|Succeeded) * tscheck * Better code for chainid collision * Remove console logs * Fix tests * Network selector becomes self contained component used both by web header and electron nav. * Dont select node again * Additional title text * tscheck * Custom node behavior in Electron * Close panel too * Convert node label data into selector function * tscheck * Parens & space
30 lines
1.1 KiB
TypeScript
30 lines
1.1 KiB
TypeScript
import { select, takeEvery, put } from 'redux-saga/effects';
|
|
import { getCustomNodeConfigs, getCustomNetworkConfigs } from 'selectors/config';
|
|
import { removeCustomNetwork, TypeKeys } from 'actions/config';
|
|
import { SagaIterator } from 'redux-saga';
|
|
import { AppState } from 'reducers';
|
|
|
|
// If there are any orphaned custom networks, prune them
|
|
export function* pruneCustomNetworks(): SagaIterator {
|
|
const customNodes: AppState['config']['nodes']['customNodes'] = yield select(
|
|
getCustomNodeConfigs
|
|
);
|
|
const customNetworks: AppState['config']['networks']['customNetworks'] = yield select(
|
|
getCustomNetworkConfigs
|
|
);
|
|
|
|
//construct lookup table of networks
|
|
const linkedNetworks: { [key: string]: boolean } = Object.values(customNodes).reduce(
|
|
(networkMap, currentNode) => ({ ...networkMap, [currentNode.network]: true }),
|
|
{}
|
|
);
|
|
|
|
for (const customNetwork of Object.values(customNetworks)) {
|
|
if (!linkedNetworks[customNetwork.id]) {
|
|
yield put(removeCustomNetwork(customNetwork.id));
|
|
}
|
|
}
|
|
}
|
|
|
|
export const network = [takeEvery(TypeKeys.CONFIG_REMOVE_CUSTOM_NODE, pruneCustomNetworks)];
|