mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-22 18:00:18 +01:00
51cffa15dd
* Migrate to new controller packages `@metamask/controllers` is deprecated, and most of the controllers that lived here are now located in their own package ([1]). This commit replaces `@metamask/controllers` in `package.json` with references to these packages and updates `import` lines to match. [1]: https://github.com/MetaMask/controllers/pull/831 * Support GitHub registry for draft PRs (#16549) * Add additional allowed host to lockfile linter * Update LavaMoat policies * Add policy exception for nanoid * Add additional nanoid overrides * Update LavaMoat policies again * Bump controller packages * Update lavamoat * Bump controller packages * Update packages to v1.0.0 * Expand gitignore comment * Unpin controller dependencies, using ^ range instead Co-authored-by: Mark Stacey <markjstacey@gmail.com>
40 lines
1.3 KiB
JavaScript
40 lines
1.3 KiB
JavaScript
import { CaveatMutatorOperation } from '@metamask/permission-controller';
|
|
import { CaveatTypes } from '../../../../shared/constants/permissions';
|
|
|
|
/**
|
|
* Factories that construct caveat mutator functions that are passed to
|
|
* PermissionController.updatePermissionsByCaveat.
|
|
*/
|
|
export const CaveatMutatorFactories = {
|
|
[CaveatTypes.restrictReturnedAccounts]: {
|
|
removeAccount,
|
|
},
|
|
};
|
|
|
|
/**
|
|
* Removes the target account from the value arrays of all
|
|
* `restrictReturnedAccounts` caveats. No-ops if the target account is not in
|
|
* the array, and revokes the parent permission if it's the only account in
|
|
* the array.
|
|
*
|
|
* @param {string} targetAccount - The address of the account to remove from
|
|
* all accounts permissions.
|
|
* @param {string[]} existingAccounts - The account address array from the
|
|
* account permissions.
|
|
*/
|
|
function removeAccount(targetAccount, existingAccounts) {
|
|
const newAccounts = existingAccounts.filter(
|
|
(address) => address !== targetAccount,
|
|
);
|
|
|
|
if (newAccounts.length === existingAccounts.length) {
|
|
return { operation: CaveatMutatorOperation.noop };
|
|
} else if (newAccounts.length > 0) {
|
|
return {
|
|
operation: CaveatMutatorOperation.updateValue,
|
|
value: newAccounts,
|
|
};
|
|
}
|
|
return { operation: CaveatMutatorOperation.revokePermission };
|
|
}
|