// next version number
/*

removes invalid chaids from preferences and networkController for custom rpcs

*/

import { cloneDeep } from 'lodash';

const version = 30;

export default {
  version,

  async migrate(originalVersionedData) {
    const versionedData = cloneDeep(originalVersionedData);
    versionedData.meta.version = version;
    const state = versionedData.data;
    const newState = transformState(state);
    versionedData.data = newState;
    return versionedData;
  },
};

function transformState(state) {
  const newState = state;
  if (state.PreferencesController) {
    const { frequentRpcListDetail } = newState.PreferencesController;
    if (frequentRpcListDetail) {
      frequentRpcListDetail.forEach((rpc, index) => {
        // eslint-disable-next-line radix
        if (Boolean(rpc.chainId) && Number.isNaN(parseInt(rpc.chainId))) {
          delete frequentRpcListDetail[index].chainId;
        }
      });
      newState.PreferencesController.frequentRpcListDetail =
        frequentRpcListDetail;
    }
  }
  if (state.NetworkController) {
    if (
      newState.NetworkController.network &&
      // eslint-disable-next-line radix
      Number.isNaN(parseInt(newState.NetworkController.network))
    ) {
      delete newState.NetworkController.network;
    }

    if (
      newState.NetworkController.provider &&
      newState.NetworkController.provider.chainId &&
      // eslint-disable-next-line radix
      Number.isNaN(parseInt(newState.NetworkController.provider.chainId))
    ) {
      delete newState.NetworkController.provider.chainId;
    }
  }

  return newState;
}