mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-13 05:07:12 +01:00
2ccc1977bf
The PhishingController has been updated to v2. This release should dramatically reduce network traffic and double the update speed of the phishing list. This was accomplished by combining both of our phishing configurations into one list (the "stalelist"), then creating a separate list of the changes just the past few days (the "hotlist"). Now users will download a smaller list more frequently (every 30 minutes rather than every hour), whereas the full list is only updated every 4 days. The combined configuration means that we no longer know which list was responsible for each block. The phishing warning page has been updated to dynamically look this information up, to ensure users are still directed to the correct place to dispute a block. This update to the phishing warning page also includes the recent redesign.
39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
import { cloneDeep } from 'lodash';
|
|
import { hasProperty, isObject } from '@metamask/utils';
|
|
|
|
export const version = 80;
|
|
|
|
/**
|
|
* The`@metamask/phishing-controller` state was updated in v2.0.0.
|
|
*
|
|
* @param originalVersionedData - Versioned MetaMask extension state, exactly what we persist to dist.
|
|
* @param originalVersionedData.meta - State metadata.
|
|
* @param originalVersionedData.meta.version - The current state version.
|
|
* @param originalVersionedData.data - The persisted MetaMask state, keyed by controller.
|
|
* @returns Updated versioned MetaMask extension state.
|
|
*/
|
|
export async function migrate(originalVersionedData: {
|
|
meta: { version: number };
|
|
data: Record<string, unknown>;
|
|
}) {
|
|
const versionedData = cloneDeep(originalVersionedData);
|
|
versionedData.meta.version = version;
|
|
versionedData.data = transformState(versionedData.data);
|
|
return versionedData;
|
|
}
|
|
|
|
function transformState(state: Record<string, unknown>) {
|
|
if (
|
|
!hasProperty(state, 'PhishingController') ||
|
|
!isObject(state.PhishingController)
|
|
) {
|
|
return state;
|
|
}
|
|
const { PhishingController } = state;
|
|
|
|
delete PhishingController.phishing;
|
|
delete PhishingController.lastFetched;
|
|
|
|
return state;
|
|
}
|