diff --git a/app/scripts/controllers/metametrics-data-deletion/metametrics-data-deletion.ts b/app/scripts/controllers/metametrics-data-deletion/metametrics-data-deletion.ts index 55f87d997865..a89eb82e5df2 100644 --- a/app/scripts/controllers/metametrics-data-deletion/metametrics-data-deletion.ts +++ b/app/scripts/controllers/metametrics-data-deletion/metametrics-data-deletion.ts @@ -3,6 +3,7 @@ import { RestrictedControllerMessenger, } from '@metamask/base-controller'; import type { DataDeletionService } from '../../services/data-deletion-service'; +import { DeleteRegulationStatus } from '../../../../shared/constants/metametrics'; // Unique name for the controller const controllerName = 'MetaMetricsDataDeletionController'; @@ -17,39 +18,20 @@ const controllerName = 'MetaMetricsDataDeletionController'; type PublicInterface = Pick; /** - * @type DataDeleteDate * Timestamp at which regulation response is returned. */ export type DataDeleteDate = number; /** - * @type DataDeleteDate * Regulation Id retuned while creating a delete regulation. */ export type DataDeleteRegulationId = string; /** - * The status on which to filter the returned regulations. - * Mentioned here: https://docs.segmentapis.com/tag/Deletion-and-Suppression#operation/listRegulationsFromSource - * - * @type DeleteRegulationStatus - */ -export enum DeleteRegulationStatus { - FAILED = 'FAILED', - FINISHED = 'FINISHED', - INITIALIZED = 'INITIALIZED', - INVALID = 'INVALID', - NOT_SUPPORTED = 'NOT_SUPPORTED', - PARTIAL_SUCCESS = 'PARTIAL_SUCCESS', - RUNNING = 'RUNNING', - UNKNOWN = 'UNKNOWN', -} -/** - * @type MetaMetricsDataDeletionState * MetaMetricsDataDeletionController controller state - * @property metaMetricsDataDeletionId - Regulation Id retuned while creating a delete regulation. - * @property metaMetricsDataDeletionDate - Date at which the most recent regulation is created/requested for. - * @property metaMetricsDataDeletionStatus - Status of the current delete regulation. - * @property hasMetaMetricsDataRecorded - optional variable which records whether data was collected after last deletion + * metaMetricsDataDeletionId - Regulation Id retuned while creating a delete regulation. + * metaMetricsDataDeletionDate - Date at which the most recent regulation is created/requested for. + * metaMetricsDataDeletionStatus - Status of the current delete regulation. + * hasMetaMetricsDataRecorded - optional variable which records whether data was collected after last deletion */ export type MetaMetricsDataDeletionState = { metaMetricsDataDeletionId: DataDeleteRegulationId; @@ -147,7 +129,7 @@ export class MetaMetricsDataDeletionController extends BaseController< }: { dataDeletionService: PublicInterface; messenger: MetaMetricsDataDeletionControllerMessenger; - state?: MetaMetricsDataDeletionState; + state?: Partial; getMetaMetricsId: () => string | null; }) { // Call the constructor of BaseControllerV2 @@ -159,6 +141,28 @@ export class MetaMetricsDataDeletionController extends BaseController< }); this.#getMetaMetricsId = getMetaMetricsId; this.#dataDeletionService = dataDeletionService; + this.#registerMessageHandlers(); + } + + /** + * Constructor helper for registering this controller's messaging system + * actions. + */ + #registerMessageHandlers(): void { + this.messagingSystem.registerActionHandler( + `${controllerName}:createMetaMetricsDataDeletionTask`, + this.createMetaMetricsDataDeletionTask.bind(this), + ); + + this.messagingSystem.registerActionHandler( + `${controllerName}:updateDataDeletionTaskStatus`, + this.updateDataDeletionTaskStatus.bind(this), + ); + + this.messagingSystem.registerActionHandler( + `${controllerName}:setHasMetaMetricsDataRecorded`, + this.setHasMetaMetricsDataRecorded.bind(this), + ); } /** @@ -192,16 +196,14 @@ export class MetaMetricsDataDeletionController extends BaseController< throw new Error('Delete Regulation id not found'); } - const { data } = - await this.#dataDeletionService.fetchDeletionRegulationStatus( - deleteRegulationId, - ); + const { + data: { regulation }, + } = await this.#dataDeletionService.fetchDeletionRegulationStatus( + deleteRegulationId, + ); - const regulation = data?.regulation; this.update((state) => { - state.metaMetricsDataDeletionStatus = - regulation.overallStatus as DeleteRegulationStatus; - + state.metaMetricsDataDeletionStatus = regulation.overallStatus; return state; }); } diff --git a/app/scripts/services/data-deletion-service.ts b/app/scripts/services/data-deletion-service.ts index 44f1d905385f..03af9c352d6a 100644 --- a/app/scripts/services/data-deletion-service.ts +++ b/app/scripts/services/data-deletion-service.ts @@ -10,6 +10,7 @@ import { CircuitState, } from 'cockatiel'; import getFetchWithTimeout from '../../../shared/modules/fetch-with-timeout'; +import { DeleteRegulationStatus } from '../../../shared/constants/metametrics'; const DEFAULT_ANALYTICS_DATA_DELETION_SOURCE_ID = process.env.ANALYTICS_DATA_DELETION_SOURCE_ID ?? 'test'; @@ -18,17 +19,15 @@ const DEFAULT_ANALYTICS_DATA_DELETION_ENDPOINT = 'https://metametrics.metamask.test'; /** - * @type RegulationId * Response from API after the delete regulation creation. */ export type RegulationId = { data: Record }; /** - * @type CurrentRegulationStatus * Response from API after the status check of current delete regulation. */ export type CurrentRegulationStatus = { - data: Record>; + data: { regulation: { overallStatus: DeleteRegulationStatus } }; }; /** diff --git a/shared/constants/metametrics.ts b/shared/constants/metametrics.ts index 209cc3c7f414..f47277bc52f4 100644 --- a/shared/constants/metametrics.ts +++ b/shared/constants/metametrics.ts @@ -851,3 +851,18 @@ export enum MetaMetricsEventUiCustomization { export enum MetaMetricsContextProp { PageTitle = 'location', } + +/** + * The status on which to filter the returned regulations. + * Mentioned here: https://docs.segmentapis.com/tag/Deletion-and-Suppression#operation/listRegulationsFromSource + */ +export enum DeleteRegulationStatus { + failed = 'FAILED', + finished = 'FINISHED', + initialized = 'INITIALIZED', + invalid = 'INVALID', + notSupported = 'NOT_SUPPORTED', + partialSuccess = 'PARTIAL_SUCCESS', + running = 'RUNNING', + unknown = 'UNKNOWN', +}