1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-10-22 11:22:43 +02:00

Move subject type enum to @metamask/subject-metadata-controller (#16431)

* Move subject type enum to @metamask/controllers

* Fix imports
This commit is contained in:
Maarten Zuidhoorn 2023-01-24 16:03:01 +01:00 committed by GitHub
parent 3ff12d70e9
commit 2900fe2c1a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 32 additions and 47 deletions

View File

@ -46,7 +46,10 @@ import {
PermissionController, PermissionController,
PermissionsRequestNotFoundError, PermissionsRequestNotFoundError,
} from '@metamask/permission-controller'; } from '@metamask/permission-controller';
import { SubjectMetadataController } from '@metamask/subject-metadata-controller'; import {
SubjectMetadataController,
SubjectType,
} from '@metamask/subject-metadata-controller';
///: BEGIN:ONLY_INCLUDE_IN(flask) ///: BEGIN:ONLY_INCLUDE_IN(flask)
import { RateLimitController } from '@metamask/rate-limit-controller'; import { RateLimitController } from '@metamask/rate-limit-controller';
import { NotificationController } from '@metamask/notification-controller'; import { NotificationController } from '@metamask/notification-controller';
@ -97,7 +100,6 @@ import {
SNAP_DIALOG_TYPES, SNAP_DIALOG_TYPES,
///: END:ONLY_INCLUDE_IN ///: END:ONLY_INCLUDE_IN
POLLING_TOKEN_ENVIRONMENT_TYPES, POLLING_TOKEN_ENVIRONMENT_TYPES,
SUBJECT_TYPES,
} from '../../shared/constants/app'; } from '../../shared/constants/app';
import { EVENT, EVENT_NAMES } from '../../shared/constants/metametrics'; import { EVENT, EVENT_NAMES } from '../../shared/constants/metametrics';
@ -1494,7 +1496,7 @@ export default class MetamaskController extends EventEmitter {
version, version,
} = snap; } = snap;
this.subjectMetadataController.addSubjectMetadata({ this.subjectMetadataController.addSubjectMetadata({
subjectType: SUBJECT_TYPES.SNAP, subjectType: SubjectType.Snap,
name: proposedName, name: proposedName,
origin: snap.id, origin: snap.id,
version, version,
@ -3541,9 +3543,9 @@ export default class MetamaskController extends EventEmitter {
if (subjectType) { if (subjectType) {
_subjectType = subjectType; _subjectType = subjectType;
} else if (sender.id && sender.id !== this.extension.runtime.id) { } else if (sender.id && sender.id !== this.extension.runtime.id) {
_subjectType = SUBJECT_TYPES.EXTENSION; _subjectType = SubjectType.Extension;
} else { } else {
_subjectType = SUBJECT_TYPES.WEBSITE; _subjectType = SubjectType.Website;
} }
if (sender.url) { if (sender.url) {
@ -3595,7 +3597,7 @@ export default class MetamaskController extends EventEmitter {
this.setupProviderConnection( this.setupProviderConnection(
mux.createStream('provider'), mux.createStream('provider'),
sender, sender,
SUBJECT_TYPES.INTERNAL, SubjectType.Internal,
); );
} }
@ -3711,15 +3713,15 @@ export default class MetamaskController extends EventEmitter {
* *
* @param {*} outStream - The stream to provide over. * @param {*} outStream - The stream to provide over.
* @param {MessageSender | SnapSender} sender - The sender of the messages on this stream * @param {MessageSender | SnapSender} sender - The sender of the messages on this stream
* @param {string} subjectType - The type of the sender, i.e. subject. * @param {SubjectType} subjectType - The type of the sender, i.e. subject.
*/ */
setupProviderConnection(outStream, sender, subjectType) { setupProviderConnection(outStream, sender, subjectType) {
let origin; let origin;
if (subjectType === SUBJECT_TYPES.INTERNAL) { if (subjectType === SubjectType.Internal) {
origin = ORIGIN_METAMASK; origin = ORIGIN_METAMASK;
} }
///: BEGIN:ONLY_INCLUDE_IN(flask) ///: BEGIN:ONLY_INCLUDE_IN(flask)
else if (subjectType === SUBJECT_TYPES.SNAP) { else if (subjectType === SubjectType.Snap) {
origin = sender.snapId; origin = sender.snapId;
} }
///: END:ONLY_INCLUDE_IN ///: END:ONLY_INCLUDE_IN
@ -3731,7 +3733,7 @@ export default class MetamaskController extends EventEmitter {
this.subjectMetadataController.addSubjectMetadata({ this.subjectMetadataController.addSubjectMetadata({
origin, origin,
extensionId: sender.id, extensionId: sender.id,
subjectType: SUBJECT_TYPES.EXTENSION, subjectType: SubjectType.Extension,
}); });
} }
@ -3777,7 +3779,7 @@ export default class MetamaskController extends EventEmitter {
this.setupUntrustedCommunication({ this.setupUntrustedCommunication({
connectionStream, connectionStream,
sender: { snapId }, sender: { snapId },
subjectType: SUBJECT_TYPES.SNAP, subjectType: SubjectType.Snap,
}); });
} }
///: END:ONLY_INCLUDE_IN ///: END:ONLY_INCLUDE_IN
@ -3834,7 +3836,7 @@ export default class MetamaskController extends EventEmitter {
); );
// onboarding // onboarding
if (subjectType === SUBJECT_TYPES.WEBSITE) { if (subjectType === SubjectType.Website) {
engine.push( engine.push(
createOnboardingMiddleware({ createOnboardingMiddleware({
location: sender.url, location: sender.url,
@ -3942,7 +3944,7 @@ export default class MetamaskController extends EventEmitter {
///: BEGIN:ONLY_INCLUDE_IN(flask) ///: BEGIN:ONLY_INCLUDE_IN(flask)
engine.push( engine.push(
createSnapMethodMiddleware(subjectType === SUBJECT_TYPES.SNAP, { createSnapMethodMiddleware(subjectType === SubjectType.Snap, {
getAppKey: this.getAppKeyForSubject.bind(this, origin), getAppKey: this.getAppKeyForSubject.bind(this, origin),
getUnlockPromise: this.appStateController.getUnlockPromise.bind( getUnlockPromise: this.appStateController.getUnlockPromise.bind(
this.appStateController, this.appStateController,
@ -3975,7 +3977,7 @@ export default class MetamaskController extends EventEmitter {
); );
///: END:ONLY_INCLUDE_IN ///: END:ONLY_INCLUDE_IN
if (subjectType !== SUBJECT_TYPES.INTERNAL) { if (subjectType !== SubjectType.Internal) {
// permissions // permissions
engine.push( engine.push(
this.permissionController.createPermissionMiddleware({ this.permissionController.createPermissionMiddleware({

View File

@ -1,5 +1,5 @@
import { SubjectType } from '@metamask/subject-metadata-controller';
import { cloneDeep } from 'lodash'; import { cloneDeep } from 'lodash';
import { SUBJECT_TYPES } from '../../../shared/constants/app';
const version = 69; const version = 69;
@ -32,8 +32,8 @@ function transformState(state) {
!Array.isArray(metadata) !Array.isArray(metadata)
) { ) {
metadata.subjectType = metadata.extensionId metadata.subjectType = metadata.extensionId
? SUBJECT_TYPES.EXTENSION ? SubjectType.Extension
: SUBJECT_TYPES.WEBSITE; : SubjectType.Website;
} }
}); });
} }

View File

@ -1,4 +1,4 @@
import { SUBJECT_TYPES } from '../../../shared/constants/app'; import { SubjectType } from '@metamask/subject-metadata-controller';
import migration69 from './069'; import migration69 from './069';
describe('migration #69', () => { describe('migration #69', () => {
@ -61,14 +61,14 @@ describe('migration #69', () => {
name: 'DEX Aggregator - 1inch.exchange', name: 'DEX Aggregator - 1inch.exchange',
origin: 'https://1inch.exchange', origin: 'https://1inch.exchange',
extensionId: null, extensionId: null,
subjectType: SUBJECT_TYPES.WEBSITE, subjectType: SubjectType.Website,
}, },
'https://ascii-tree-generator.com': { 'https://ascii-tree-generator.com': {
iconUrl: 'https://ascii-tree-generator.com/favicon.ico', iconUrl: 'https://ascii-tree-generator.com/favicon.ico',
name: 'ASCII Tree Generator', name: 'ASCII Tree Generator',
origin: 'https://ascii-tree-generator.com', origin: 'https://ascii-tree-generator.com',
extensionId: 'ascii-tree-generator-extension', extensionId: 'ascii-tree-generator-extension',
subjectType: SUBJECT_TYPES.EXTENSION, subjectType: SubjectType.Extension,
}, },
'https://null.com': null, 'https://null.com': null,
'https://foo.com': 'bad data', 'https://foo.com': 'bad data',

View File

@ -78,20 +78,6 @@ export const EXTENSION_MESSAGES = {
READY: 'METAMASK_EXTENSION_READY', READY: 'METAMASK_EXTENSION_READY',
} as const; } as const;
/**
* The different kinds of subjects that MetaMask may interact with, including
* third parties and itself (e.g. when the background communicated with the UI).
*/
export const SUBJECT_TYPES = {
EXTENSION: 'extension',
INTERNAL: 'internal',
UNKNOWN: 'unknown',
WEBSITE: 'website',
///: BEGIN:ONLY_INCLUDE_IN(flask)
SNAP: 'snap',
///: END:ONLY_INCLUDE_IN
} as const;
export const POLLING_TOKEN_ENVIRONMENT_TYPES = { export const POLLING_TOKEN_ENVIRONMENT_TYPES = {
[ENVIRONMENT_TYPE_POPUP]: 'popupGasPollTokens', [ENVIRONMENT_TYPE_POPUP]: 'popupGasPollTokens',
[ENVIRONMENT_TYPE_NOTIFICATION]: 'notificationGasPollTokens', [ENVIRONMENT_TYPE_NOTIFICATION]: 'notificationGasPollTokens',

View File

@ -1,6 +1,6 @@
import { SubjectType } from '@metamask/subject-metadata-controller';
import { useSelector } from 'react-redux'; import { useSelector } from 'react-redux';
import { getTargetSubjectMetadata } from '../selectors'; import { getTargetSubjectMetadata } from '../selectors';
import { SUBJECT_TYPES } from '../../shared/constants/app';
/** /**
* @typedef {object} OriginMetadata * @typedef {object} OriginMetadata
@ -34,7 +34,7 @@ export function useOriginMetadata(origin) {
host: url.host, host: url.host,
hostname: url.hostname, hostname: url.hostname,
origin, origin,
subjectType: SUBJECT_TYPES.UNKNOWN, subjectType: SubjectType.Unknown,
}; };
} catch (_) { } catch (_) {
// do nothing // do nothing

View File

@ -1,3 +1,4 @@
import { SubjectType } from '@metamask/subject-metadata-controller';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { import {
@ -32,7 +33,6 @@ import {
CONNECT_SNAP_UPDATE_ROUTE, CONNECT_SNAP_UPDATE_ROUTE,
///: END:ONLY_INCLUDE_IN ///: END:ONLY_INCLUDE_IN
} from '../../helpers/constants/routes'; } from '../../helpers/constants/routes';
import { SUBJECT_TYPES } from '../../../shared/constants/app';
import PermissionApproval from './permissions-connect.component'; import PermissionApproval from './permissions-connect.component';
const mapStateToProps = (state, ownProps) => { const mapStateToProps = (state, ownProps) => {
@ -68,11 +68,11 @@ const mapStateToProps = (state, ownProps) => {
origin, origin,
iconUrl: null, iconUrl: null,
extensionId: null, extensionId: null,
subjectType: SUBJECT_TYPES.UNKNOWN, subjectType: SubjectType.Unknown,
}; };
///: BEGIN:ONLY_INCLUDE_IN(flask) ///: BEGIN:ONLY_INCLUDE_IN(flask)
const isSnap = targetSubjectMetadata.subjectType === SUBJECT_TYPES.SNAP; const isSnap = targetSubjectMetadata.subjectType === SubjectType.Snap;
///: END:ONLY_INCLUDE_IN ///: END:ONLY_INCLUDE_IN
const accountsWithLabels = getAccountsWithLabels(state); const accountsWithLabels = getAccountsWithLabels(state);

View File

@ -1,3 +1,6 @@
///: BEGIN:ONLY_INCLUDE_IN(flask)
import { SubjectType } from '@metamask/subject-metadata-controller';
///: END:ONLY_INCLUDE_IN
import { import {
createSelector, createSelector,
createSelectorCreator, createSelectorCreator,
@ -28,13 +31,7 @@ import {
LedgerTransportTypes, LedgerTransportTypes,
HardwareTransportStates, HardwareTransportStates,
} from '../../shared/constants/hardware-wallets'; } from '../../shared/constants/hardware-wallets';
import { MESSAGE_TYPE } from '../../shared/constants/app';
import {
MESSAGE_TYPE,
///: BEGIN:ONLY_INCLUDE_IN(flask)
SUBJECT_TYPES,
///: END:ONLY_INCLUDE_IN
} from '../../shared/constants/app';
import { TRUNCATED_NAME_CHAR_LIMIT } from '../../shared/constants/labels'; import { TRUNCATED_NAME_CHAR_LIMIT } from '../../shared/constants/labels';
@ -632,7 +629,7 @@ export function getTargetSubjectMetadata(state, origin) {
const metadata = getSubjectMetadata(state)[origin]; const metadata = getSubjectMetadata(state)[origin];
///: BEGIN:ONLY_INCLUDE_IN(flask) ///: BEGIN:ONLY_INCLUDE_IN(flask)
if (metadata?.subjectType === SUBJECT_TYPES.SNAP) { if (metadata?.subjectType === SubjectType.Snap) {
const { svgIcon, ...remainingMetadata } = metadata; const { svgIcon, ...remainingMetadata } = metadata;
return { return {
...remainingMetadata, ...remainingMetadata,