Skip to content

Commit

Permalink
Tokens controller approve reject refactor (#1261)
Browse files Browse the repository at this point in the history
* stops calling approve and reject from controller
  • Loading branch information
bergarces authored and MajorLift committed Oct 11, 2023
1 parent ae9b12d commit b49edf4
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 92 deletions.
49 changes: 8 additions & 41 deletions packages/assets-controllers/src/TokensController.test.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
import * as sinon from 'sinon';
import nock from 'nock';
import {
AcceptRequest as AcceptApprovalRequest,
AddApprovalRequest,
RejectRequest as RejectApprovalRequest,
} from '@metamask/approval-controller';
import { AddApprovalRequest } from '@metamask/approval-controller';
import { ControllerMessenger } from '@metamask/base-controller';
import contractMaps from '@metamask/contract-metadata';
import { PreferencesController } from '@metamask/preferences-controller';
Expand Down Expand Up @@ -46,10 +42,7 @@ const GOERLI = { chainId: '5', type: NetworkType.goerli };

const controllerName = 'TokensController' as const;

type ApprovalActions =
| AddApprovalRequest
| AcceptApprovalRequest
| RejectApprovalRequest;
type ApprovalActions = AddApprovalRequest;

describe('TokensController', () => {
let tokensController: TokensController;
Expand All @@ -60,11 +53,7 @@ describe('TokensController', () => {
never
>().getRestricted<typeof controllerName, ApprovalActions['type'], never>({
name: controllerName,
allowedActions: [
'ApprovalController:addRequest',
'ApprovalController:acceptRequest',
'ApprovalController:rejectRequest',
],
allowedActions: ['ApprovalController:addRequest'],
}) as TokensControllerMessenger;

let onNetworkStateChangeListener: (state: NetworkState) => void;
Expand Down Expand Up @@ -1096,7 +1085,7 @@ describe('TokensController', () => {
image: 'image',
},
]);
expect(callActionSpy).toHaveBeenCalledTimes(2);
expect(callActionSpy).toHaveBeenCalledTimes(1);
expect(callActionSpy).toHaveBeenCalledWith(
'ApprovalController:addRequest',
{
Expand All @@ -1116,10 +1105,6 @@ describe('TokensController', () => {
},
true,
);
expect(callActionSpy).toHaveBeenCalledWith(
'ApprovalController:acceptRequest',
expect.any(String),
);

generateRandomIdStub.restore();
},
Expand Down Expand Up @@ -1152,7 +1137,7 @@ describe('TokensController', () => {
image: 'image',
},
]);
expect(callActionSpy).toHaveBeenCalledTimes(2);
expect(callActionSpy).toHaveBeenCalledTimes(1);
expect(callActionSpy).toHaveBeenCalledWith(
'ApprovalController:addRequest',
{
Expand All @@ -1172,10 +1157,6 @@ describe('TokensController', () => {
},
true,
);
expect(callActionSpy).toHaveBeenCalledWith(
'ApprovalController:acceptRequest',
expect.any(String),
);

generateRandomIdStub.restore();
});
Expand Down Expand Up @@ -1228,7 +1209,7 @@ describe('TokensController', () => {
await expect(result).rejects.toThrow(
'User rejected to watch the asset.',
);
expect(callActionSpy).toHaveBeenCalledTimes(2);
expect(callActionSpy).toHaveBeenCalledTimes(1);
expect(callActionSpy).toHaveBeenCalledWith(
'ApprovalController:addRequest',
{
Expand All @@ -1248,11 +1229,6 @@ describe('TokensController', () => {
},
true,
);
expect(callActionSpy).toHaveBeenCalledWith(
'ApprovalController:rejectRequest',
expect.any(String),
expect.any(Error),
);
},
);

Expand All @@ -1270,7 +1246,7 @@ describe('TokensController', () => {
const res = await result;
expect(tokensController.state.suggestedAssets).toHaveLength(0);
expect(res).toBe('0xe9f786dfdd9ae4d57e830acb52296837765f0e5b');
expect(callActionSpy).toHaveBeenCalledTimes(2);
expect(callActionSpy).toHaveBeenCalledTimes(1);
expect(callActionSpy).toHaveBeenCalledWith(
'ApprovalController:addRequest',
{
Expand All @@ -1290,10 +1266,6 @@ describe('TokensController', () => {
},
true,
);
expect(callActionSpy).toHaveBeenCalledWith(
'ApprovalController:acceptRequest',
expect.any(String),
);
});

it.each([
Expand Down Expand Up @@ -1336,7 +1308,7 @@ describe('TokensController', () => {
await expect(result).rejects.toThrow(
'Asset of type ERC721 not supported',
);
expect(callActionSpy).toHaveBeenCalledTimes(2);
expect(callActionSpy).toHaveBeenCalledTimes(1);
expect(callActionSpy).toHaveBeenCalledWith(
'ApprovalController:addRequest',
{
Expand All @@ -1356,11 +1328,6 @@ describe('TokensController', () => {
},
true,
);
expect(callActionSpy).toHaveBeenCalledWith(
'ApprovalController:rejectRequest',
expect.any(String),
expect.any(Error),
);
},
);
});
Expand Down
57 changes: 6 additions & 51 deletions packages/assets-controllers/src/TokensController.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
import { EventEmitter } from 'events';
import {
AcceptRequest as AcceptApprovalRequest,
AddApprovalRequest,
RejectRequest as RejectApprovalRequest,
} from '@metamask/approval-controller';
import { AddApprovalRequest } from '@metamask/approval-controller';
import contractsMap from '@metamask/contract-metadata';
import { abiERC721 } from '@metamask/metamask-eth-abis';
import { v1 as random } from 'uuid';
Expand Down Expand Up @@ -71,7 +67,7 @@ export type SuggestedAssetMetaBase = {
time: number;
type: string;
asset: Token;
interactingAddress?: string;
interactingAddress: string;
};

/**
Expand Down Expand Up @@ -128,10 +124,7 @@ const controllerName = 'TokensController';
/**
* The external actions available to the {@link TokensController}.
*/
type AllowedActions =
| AddApprovalRequest
| AcceptApprovalRequest
| RejectApprovalRequest;
type AllowedActions = AddApprovalRequest;

/**
* The messenger of the {@link TokensController}.
Expand Down Expand Up @@ -666,12 +659,10 @@ export class TokensController extends BaseController<
): Promise<AssetSuggestionResult> {
const { selectedAddress } = this.config;

const suggestedAssetMeta: SuggestedAssetMeta & {
interactingAddress: string;
} = {
const suggestedAssetMeta: SuggestedAssetMeta = {
asset,
id: this._generateRandomId(),
status: SuggestedAssetStatus.pending as SuggestedAssetStatus.pending,
status: SuggestedAssetStatus.pending,
time: Date.now(),
type,
interactingAddress: interactingAddress || selectedAddress,
Expand Down Expand Up @@ -744,8 +735,6 @@ export class TokensController extends BaseController<
suggestedAssetMeta?.interactingAddress || selectedAddress,
);

this._acceptApproval(suggestedAssetID);

const acceptedSuggestedAssetMeta = {
...suggestedAssetMeta,
status: SuggestedAssetStatus.accepted,
Expand All @@ -762,8 +751,6 @@ export class TokensController extends BaseController<
}
} catch (error) {
this.failSuggestedAsset(suggestedAssetMeta, error);

this._rejectApproval(suggestedAssetID);
}

const newSuggestedAssets = suggestedAssets.filter(
Expand Down Expand Up @@ -799,8 +786,6 @@ export class TokensController extends BaseController<
({ id }) => id !== suggestedAssetID,
);
this.update({ suggestedAssets: [...newSuggestedAssets] });

this._rejectApproval(suggestedAssetID);
}

/**
Expand Down Expand Up @@ -901,11 +886,7 @@ export class TokensController extends BaseController<
this.update({ ignoredTokens: [], allIgnoredTokens: {} });
}

_requestApproval(
suggestedAssetMeta: SuggestedAssetMeta & {
interactingAddress: string;
},
) {
_requestApproval(suggestedAssetMeta: SuggestedAssetMeta) {
this.messagingSystem
.call(
'ApprovalController:addRequest',
Expand All @@ -930,32 +911,6 @@ export class TokensController extends BaseController<
// Intentionally ignored as promise not currently used
});
}

_acceptApproval(approvalRequestId: string) {
try {
this.messagingSystem.call(
'ApprovalController:acceptRequest',
approvalRequestId,
);
} catch (error) {
console.error('Failed to accept token watch approval request', error);
}
}

_rejectApproval(approvalRequestId: string) {
try {
this.messagingSystem.call(
'ApprovalController:rejectRequest',
approvalRequestId,
new Error('Rejected'),
);
} catch (messageCallError) {
console.error(
'Failed to reject token watch approval request',
messageCallError,
);
}
}
}

export default TokensController;

0 comments on commit b49edf4

Please sign in to comment.