import { cloneDeep, keyBy } from 'lodash'; import createId from '../../../shared/modules/random-id'; const version = 57; /** * replace 'incomingTxLastFetchedBlocksByNetwork' with 'incomingTxLastFetchedBlockByChainId' */ export default { version, async migrate(originalVersionedData) { const versionedData = cloneDeep(originalVersionedData); versionedData.meta.version = version; const state = versionedData.data; versionedData.data = transformState(state); return versionedData; }, }; function transformState(state) { if ( state?.TransactionController?.transactions && Array.isArray(state.TransactionController.transactions) && !state.TransactionController.transactions.some( (item) => typeof item !== 'object' || typeof item.txParams === 'undefined', ) ) { state.TransactionController.transactions = keyBy( state.TransactionController.transactions, // In case for some reason any of a user's transactions do not have an id // generate a new one for the transaction. (tx) => { if (typeof tx.id === 'undefined' || tx.id === null) { // This mutates the item in the array, so will result in a change to // the state. tx.id = createId(); } return tx.id; }, ); } return state; }