mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
[FLASK] Add snap cronjobs (#16239)
* Add Cronjob controller configuration * Add Cronjob permission icon and description * Add lint fix changes * Add missing action to the allow-list * Fix permission * Fix icon and message Co-authored-by: Frederik Bolding <frederik.bolding@gmail.com>
This commit is contained in:
parent
aba3b94c1a
commit
5e746dcc2f
@ -2660,6 +2660,10 @@
|
|||||||
"message": "Connect to the $1 Snap.",
|
"message": "Connect to the $1 Snap.",
|
||||||
"description": "The description for the `wallet_snap_*` permission. $1 is the name of the Snap."
|
"description": "The description for the `wallet_snap_*` permission. $1 is the name of the Snap."
|
||||||
},
|
},
|
||||||
|
"permission_cronjob": {
|
||||||
|
"message": "Schedule and execute periodic actions.",
|
||||||
|
"description": "The description for the `snap_cronjob` permission"
|
||||||
|
},
|
||||||
"permission_customConfirmation": {
|
"permission_customConfirmation": {
|
||||||
"message": "Display a confirmation in MetaMask.",
|
"message": "Display a confirmation in MetaMask.",
|
||||||
"description": "The description for the `snap_confirm` permission"
|
"description": "The description for the `snap_confirm` permission"
|
||||||
|
@ -49,6 +49,7 @@ import {
|
|||||||
import SmartTransactionsController from '@metamask/smart-transactions-controller';
|
import SmartTransactionsController from '@metamask/smart-transactions-controller';
|
||||||
///: BEGIN:ONLY_INCLUDE_IN(flask)
|
///: BEGIN:ONLY_INCLUDE_IN(flask)
|
||||||
import {
|
import {
|
||||||
|
CronjobController,
|
||||||
SnapController,
|
SnapController,
|
||||||
IframeExecutionService,
|
IframeExecutionService,
|
||||||
} from '@metamask/snap-controllers';
|
} from '@metamask/snap-controllers';
|
||||||
@ -753,6 +754,24 @@ export default class MetamaskController extends EventEmitter {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
// --- Snaps Cronjob Controller configuration
|
||||||
|
const cronjobControllerMessenger = this.controllerMessenger.getRestricted({
|
||||||
|
name: 'CronjobController',
|
||||||
|
allowedEvents: [
|
||||||
|
'SnapController:snapInstalled',
|
||||||
|
'SnapController:snapUpdated',
|
||||||
|
'SnapController:snapRemoved',
|
||||||
|
],
|
||||||
|
allowedActions: [
|
||||||
|
`${this.permissionController.name}:getPermissions`,
|
||||||
|
'SnapController:handleRequest',
|
||||||
|
'SnapController:getAll',
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.cronjobController = new CronjobController({
|
||||||
|
state: initState.CronjobController,
|
||||||
|
messenger: cronjobControllerMessenger,
|
||||||
|
});
|
||||||
///: END:ONLY_INCLUDE_IN
|
///: END:ONLY_INCLUDE_IN
|
||||||
this.detectTokensController = new DetectTokensController({
|
this.detectTokensController = new DetectTokensController({
|
||||||
preferences: this.preferencesController,
|
preferences: this.preferencesController,
|
||||||
@ -1042,6 +1061,7 @@ export default class MetamaskController extends EventEmitter {
|
|||||||
CollectiblesController: this.collectiblesController,
|
CollectiblesController: this.collectiblesController,
|
||||||
///: BEGIN:ONLY_INCLUDE_IN(flask)
|
///: BEGIN:ONLY_INCLUDE_IN(flask)
|
||||||
SnapController: this.snapController,
|
SnapController: this.snapController,
|
||||||
|
CronjobController: this.cronjobController,
|
||||||
NotificationController: this.notificationController,
|
NotificationController: this.notificationController,
|
||||||
///: END:ONLY_INCLUDE_IN
|
///: END:ONLY_INCLUDE_IN
|
||||||
});
|
});
|
||||||
@ -1083,6 +1103,7 @@ export default class MetamaskController extends EventEmitter {
|
|||||||
CollectiblesController: this.collectiblesController,
|
CollectiblesController: this.collectiblesController,
|
||||||
///: BEGIN:ONLY_INCLUDE_IN(flask)
|
///: BEGIN:ONLY_INCLUDE_IN(flask)
|
||||||
SnapController: this.snapController,
|
SnapController: this.snapController,
|
||||||
|
CronjobController: this.cronjobController,
|
||||||
NotificationController: this.notificationController,
|
NotificationController: this.notificationController,
|
||||||
///: END:ONLY_INCLUDE_IN
|
///: END:ONLY_INCLUDE_IN
|
||||||
},
|
},
|
||||||
|
@ -24,12 +24,10 @@ export const EndowmentPermissions = Object.freeze({
|
|||||||
'endowment:network-access': 'endowment:network-access',
|
'endowment:network-access': 'endowment:network-access',
|
||||||
'endowment:long-running': 'endowment:long-running',
|
'endowment:long-running': 'endowment:long-running',
|
||||||
'endowment:transaction-insight': 'endowment:transaction-insight',
|
'endowment:transaction-insight': 'endowment:transaction-insight',
|
||||||
|
'endowment:cronjob': 'endowment:cronjob',
|
||||||
} as const);
|
} as const);
|
||||||
|
|
||||||
// Methods / permissions in external packages that we are temporarily excluding.
|
// Methods / permissions in external packages that we are temporarily excluding.
|
||||||
export const ExcludedSnapPermissions = new Set(['snap_dialog']);
|
export const ExcludedSnapPermissions = new Set(['snap_dialog']);
|
||||||
export const ExcludedSnapEndowments = new Set([
|
export const ExcludedSnapEndowments = new Set(['endowment:keyring']);
|
||||||
'endowment:keyring',
|
|
||||||
'endowment:cronjob',
|
|
||||||
]);
|
|
||||||
///: END:ONLY_INCLUDE_IN
|
///: END:ONLY_INCLUDE_IN
|
||||||
|
@ -102,6 +102,11 @@ const PERMISSION_DESCRIPTIONS = deepFreeze({
|
|||||||
leftIcon: 'fas fa-info',
|
leftIcon: 'fas fa-info',
|
||||||
rightIcon: null,
|
rightIcon: null,
|
||||||
},
|
},
|
||||||
|
[EndowmentPermissions['endowment:cronjob']]: {
|
||||||
|
label: (t) => t('permission_cronjob'),
|
||||||
|
leftIcon: 'fas fa-clock',
|
||||||
|
rightIcon: null,
|
||||||
|
},
|
||||||
///: END:ONLY_INCLUDE_IN
|
///: END:ONLY_INCLUDE_IN
|
||||||
[UNKNOWN_PERMISSION]: {
|
[UNKNOWN_PERMISSION]: {
|
||||||
label: (t, permissionName) =>
|
label: (t, permissionName) =>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user