Skip to content

Commit bfe0d3f

Browse files
committed
changes reflecting from review
1 parent 23a89c3 commit bfe0d3f

File tree

10 files changed

+50
-66
lines changed

10 files changed

+50
-66
lines changed

app/scripts/controllers/app-state-controller.test.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@ import {
44
} from '@metamask/approval-controller';
55
import { ControllerMessenger } from '@metamask/base-controller';
66
import { KeyringControllerQRKeyringStateChangeEvent } from '@metamask/keyring-controller';
7+
import { Browser } from 'webextension-polyfill';
78
import {
89
ENVIRONMENT_TYPE_POPUP,
910
ORIGIN_METAMASK,
1011
POLLING_TOKEN_ENVIRONMENT_TYPES,
1112
} from '../../../shared/constants/app';
12-
import AppStateController from './app-state-controller';
13+
import { AppStateController } from './app-state-controller';
1314
import type {
1415
AllowedActions,
1516
AllowedEvents,
@@ -19,6 +20,8 @@ import type {
1920
} from './app-state-controller';
2021
import { PreferencesControllerStateChangeEvent } from './preferences-controller';
2122

23+
jest.mock('webextension-polyfill');
24+
2225
let appStateController: AppStateController;
2326
let controllerMessenger: ControllerMessenger<
2427
| AppStateControllerActions
@@ -64,11 +67,14 @@ describe('AppStateController', () => {
6467
messenger: appStateMessenger,
6568
extension: {
6669
alarms: {
67-
clear: jest.fn(),
70+
getAll: jest.fn(() => Promise.resolve([])),
6871
create: jest.fn(),
69-
onAlarm: { addListener: jest.fn() },
72+
clear: jest.fn(),
73+
onAlarm: {
74+
addListener: jest.fn(),
75+
},
7076
},
71-
},
77+
} as unknown as jest.Mocked<Browser>,
7278
});
7379
};
7480

app/scripts/controllers/app-state-controller.ts

Lines changed: 33 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
AddApprovalRequest,
1111
} from '@metamask/approval-controller';
1212
import { Json } from '@metamask/utils';
13+
import { Browser } from 'webextension-polyfill';
1314
import { METAMASK_CONTROLLER_EVENTS } from '../metamask-controller';
1415
import { MINUTE } from '../../../shared/constants/time';
1516
import { AUTO_LOCK_TIMEOUT_ALARM } from '../../../shared/constants/alarms';
@@ -24,7 +25,7 @@ import {
2425
} from '../../../shared/constants/app';
2526
import { DEFAULT_AUTO_LOCK_TIME_LIMIT } from '../../../shared/constants/preferences';
2627
import { LastInteractedConfirmationInfo } from '../../../shared/types/confirm';
27-
import { SecurityAlertSource } from '../../../shared/constants/security-provider';
28+
import { SecurityAlertResponse } from '../lib/ppom/types';
2829
import type {
2930
Preferences,
3031
PreferencesControllerStateChangeEvent,
@@ -126,33 +127,34 @@ type PollingTokenType =
126127
| 'notificationGasPollTokens'
127128
| 'fullScreenGasPollTokens';
128129

129-
type SecurityAlertResponse = {
130-
block?: number;
131-
description?: string;
132-
features?: string[];
133-
providerRequestsCount?: Record<string, number>;
134-
reason: string;
135-
result_type: string;
136-
securityAlertId?: string;
137-
source?: SecurityAlertSource;
138-
};
130+
type AppStateControllerInitState = Partial<
131+
Omit<
132+
AppStateControllerState,
133+
| 'qrHardware'
134+
| 'nftsDropdownState'
135+
| 'usedNetworks'
136+
| 'surveyLinkLastClickedOrClosed'
137+
| 'signatureSecurityAlertResponses'
138+
| 'switchedNetworkDetails'
139+
| 'switchedNetworkNeverShowMessage'
140+
| 'currentExtensionPopupId'
141+
>
142+
>;
139143

140144
type AppStateControllerOptions = {
141145
addUnlockListener: (callback: () => void) => void;
142146
isUnlocked: () => boolean;
143-
initState?: Partial<AppStateControllerState>;
147+
initState?: AppStateControllerInitState;
144148
onInactiveTimeout?: () => void;
145149
// TODO: Remove this as soon as PreferencesController upgrade to BaseControllerV2 merges with develop
146150
// eslint-disable-next-line @typescript-eslint/no-explicit-any
147151
preferencesStore: any;
148152
messenger: AppStateControllerMessenger;
149-
// TODO: Replace `any` with type
150-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
151-
extension: any;
153+
extension: Browser;
152154
};
153155

154-
const getInitState = (
155-
initState?: Partial<AppStateControllerState>,
156+
const getDefaultAppStateControllerState = (
157+
initState?: AppStateControllerInitState,
156158
): AppStateControllerState => ({
157159
timeoutMinutes: DEFAULT_AUTO_LOCK_TIME_LIMIT,
158160
connectedStatusPopoverHasBeenShown: true,
@@ -190,10 +192,8 @@ const getInitState = (
190192
currentExtensionPopupId: 0,
191193
});
192194

193-
export default class AppStateController extends EventEmitter {
194-
// TODO: Replace `any` with type
195-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
196-
private extension: any;
195+
export class AppStateController extends EventEmitter {
196+
private extension: AppStateControllerOptions['extension'];
197197

198198
private onInactiveTimeout: () => void;
199199

@@ -207,7 +207,7 @@ export default class AppStateController extends EventEmitter {
207207

208208
private messagingSystem: AppStateControllerMessenger;
209209

210-
private _approvalRequestId: string | null;
210+
#approvalRequestId: string | null;
211211

212212
constructor(opts: AppStateControllerOptions) {
213213
const {
@@ -223,7 +223,9 @@ export default class AppStateController extends EventEmitter {
223223

224224
this.extension = extension;
225225
this.onInactiveTimeout = onInactiveTimeout || (() => undefined);
226-
this.store = new ObservableStore(getInitState(initState));
226+
this.store = new ObservableStore(
227+
getDefaultAppStateControllerState(initState),
228+
);
227229
this.timer = null;
228230

229231
this.isUnlocked = isUnlocked;
@@ -258,7 +260,7 @@ export default class AppStateController extends EventEmitter {
258260
}
259261

260262
this.messagingSystem = messenger;
261-
this._approvalRequestId = null;
263+
this.#approvalRequestId = null;
262264
}
263265

264266
/**
@@ -816,24 +818,24 @@ export default class AppStateController extends EventEmitter {
816818

817819
private _requestApproval(): void {
818820
// If we already have a pending request this is a no-op
819-
if (this._approvalRequestId) {
821+
if (this.#approvalRequestId) {
820822
return;
821823
}
822-
this._approvalRequestId = uuid();
824+
this.#approvalRequestId = uuid();
823825

824826
this.messagingSystem
825827
.call(
826828
'ApprovalController:addRequest',
827829
{
828-
id: this._approvalRequestId,
830+
id: this.#approvalRequestId,
829831
origin: ORIGIN_METAMASK,
830832
type: ApprovalType.Unlock,
831833
},
832834
true,
833835
)
834836
.catch(() => {
835837
// If the promise fails, we allow a new popup to be triggered
836-
this._approvalRequestId = null;
838+
this.#approvalRequestId = null;
837839
});
838840
}
839841

@@ -843,18 +845,18 @@ export default class AppStateController extends EventEmitter {
843845
}
844846

845847
private _acceptApproval(): void {
846-
if (!this._approvalRequestId) {
848+
if (!this.#approvalRequestId) {
847849
return;
848850
}
849851
try {
850852
this.messagingSystem.call(
851853
'ApprovalController:acceptRequest',
852-
this._approvalRequestId,
854+
this.#approvalRequestId,
853855
);
854856
} catch (error) {
855857
log.error('Failed to unlock approval request', error);
856858
}
857859

858-
this._approvalRequestId = null;
860+
this.#approvalRequestId = null;
859861
}
860862
}

app/scripts/controllers/app-state.d.ts

Lines changed: 0 additions & 24 deletions
This file was deleted.

app/scripts/controllers/mmi-controller.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import {
1818
TEST_NETWORK_TICKER_MAP,
1919
} from '../../../shared/constants/network';
2020
import MMIController from './mmi-controller';
21-
import AppStateController from './app-state-controller';
21+
import { AppStateController } from './app-state-controller';
2222
import { ControllerMessenger } from '@metamask/base-controller';
2323
import { mmiKeyringBuilderFactory } from '../mmi-keyring-builder-factory';
2424
import MetaMetricsController from './metametrics';

app/scripts/controllers/mmi-controller.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ import { getCurrentChainId } from '../../../ui/selectors';
4646
import MetaMetricsController from './metametrics';
4747
import { getPermissionBackgroundApiMethods } from './permissions';
4848
import PreferencesController from './preferences-controller';
49-
import AppStateController from './app-state-controller';
49+
import { AppStateController } from './app-state-controller';
5050

5151
type UpdateCustodianTransactionsParameters = {
5252
keyring: CustodyKeyring;

app/scripts/lib/ppom/ppom-middleware.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { detectSIWE } from '@metamask/controller-utils';
1515
import { MESSAGE_TYPE } from '../../../../shared/constants/app';
1616
import { SIGNING_METHODS } from '../../../../shared/constants/transaction';
1717
import PreferencesController from '../../controllers/preferences-controller';
18-
import AppStateController from '../../controllers/app-state-controller';
18+
import { AppStateController } from '../../controllers/app-state-controller';
1919
import { LOADING_SECURITY_ALERT_RESPONSE } from '../../../../shared/constants/security-provider';
2020
import { trace, TraceContext, TraceName } from '../../../../shared/lib/trace';
2121
import {

app/scripts/lib/ppom/ppom-util.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {
1313
BlockaidResultType,
1414
SecurityAlertSource,
1515
} from '../../../../shared/constants/security-provider';
16-
import AppStateController from '../../controllers/app-state-controller';
16+
import { AppStateController } from '../../controllers/app-state-controller';
1717
import {
1818
generateSecurityAlertId,
1919
isChainSupported,

app/scripts/lib/ppom/ppom-util.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {
1515
SecurityAlertSource,
1616
} from '../../../../shared/constants/security-provider';
1717
import { SIGNING_METHODS } from '../../../../shared/constants/transaction';
18-
import AppStateController from '../../controllers/app-state-controller';
18+
import { AppStateController } from '../../controllers/app-state-controller';
1919
import { SecurityAlertResponse } from './types';
2020
import {
2121
getSecurityAlertsAPISupportedChainIds,

app/scripts/metamask-controller.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ import { AccountOrderController } from './controllers/account-order';
289289
import createOnboardingMiddleware from './lib/createOnboardingMiddleware';
290290
import { isStreamWritable, setupMultiplex } from './lib/stream-utils';
291291
import PreferencesController from './controllers/preferences-controller';
292-
import AppStateController from './controllers/app-state-controller';
292+
import { AppStateController } from './controllers/app-state-controller';
293293
import AlertController from './controllers/alert';
294294
import OnboardingController from './controllers/onboarding';
295295
import Backup from './lib/backup';

shared/constants/mmi-controller.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { NetworkController } from '@metamask/network-controller';
99
import PreferencesController from '../../app/scripts/controllers/preferences-controller';
1010
// TODO: Remove restricted import
1111
// eslint-disable-next-line import/no-restricted-paths
12-
import AppStateController from '../../app/scripts/controllers/app-state-controller';
12+
import { AppStateController } from '../../app/scripts/controllers/app-state-controller';
1313
// TODO: Remove restricted import
1414
// eslint-disable-next-line import/no-restricted-paths
1515
import AccountTracker from '../../app/scripts/lib/account-tracker';

0 commit comments

Comments
 (0)