@metamask/gator-permissions-controller 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -1
- package/dist/GatorPermissionsController.cjs +111 -61
- package/dist/GatorPermissionsController.cjs.map +1 -1
- package/dist/GatorPermissionsController.d.cts +40 -7
- package/dist/GatorPermissionsController.d.cts.map +1 -1
- package/dist/GatorPermissionsController.d.mts +40 -7
- package/dist/GatorPermissionsController.d.mts.map +1 -1
- package/dist/GatorPermissionsController.mjs +109 -59
- package/dist/GatorPermissionsController.mjs.map +1 -1
- package/dist/constants.cjs +9 -0
- package/dist/constants.cjs.map +1 -0
- package/dist/constants.d.cts +6 -0
- package/dist/constants.d.cts.map +1 -0
- package/dist/constants.d.mts +6 -0
- package/dist/constants.d.mts.map +1 -0
- package/dist/constants.mjs +6 -0
- package/dist/constants.mjs.map +1 -0
- package/dist/decodePermission/decodePermission.cjs +56 -11
- package/dist/decodePermission/decodePermission.cjs.map +1 -1
- package/dist/decodePermission/decodePermission.d.cts +1 -1
- package/dist/decodePermission/decodePermission.d.cts.map +1 -1
- package/dist/decodePermission/decodePermission.d.mts +1 -1
- package/dist/decodePermission/decodePermission.d.mts.map +1 -1
- package/dist/decodePermission/decodePermission.mjs +57 -12
- package/dist/decodePermission/decodePermission.mjs.map +1 -1
- package/dist/decodePermission/utils.cjs +36 -24
- package/dist/decodePermission/utils.cjs.map +1 -1
- package/dist/decodePermission/utils.d.cts +5 -4
- package/dist/decodePermission/utils.d.cts.map +1 -1
- package/dist/decodePermission/utils.d.mts +5 -4
- package/dist/decodePermission/utils.d.mts.map +1 -1
- package/dist/decodePermission/utils.mjs +36 -24
- package/dist/decodePermission/utils.mjs.map +1 -1
- package/dist/index.cjs +3 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +2 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -1
- package/dist/test/mocks.cjs +5 -5
- package/dist/test/mocks.cjs.map +1 -1
- package/dist/test/mocks.mjs +5 -5
- package/dist/test/mocks.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +6 -3
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +6 -3
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +4 -8
|
@@ -6,13 +6,8 @@ import type { SnapId } from "@metamask/snaps-sdk";
|
|
|
6
6
|
import type { TransactionControllerTransactionApprovedEvent, TransactionControllerTransactionConfirmedEvent, TransactionControllerTransactionDroppedEvent, TransactionControllerTransactionFailedEvent, TransactionControllerTransactionRejectedEvent } from "@metamask/transaction-controller";
|
|
7
7
|
import type { Hex, Json } from "@metamask/utils";
|
|
8
8
|
import type { DecodedPermission } from "./decodePermission/index.cjs";
|
|
9
|
-
import {
|
|
9
|
+
import type { GatorPermissionsMap, DelegationDetails, RevocationParams, PendingRevocationParams } from "./types.cjs";
|
|
10
10
|
declare const controllerName = "GatorPermissionsController";
|
|
11
|
-
/**
|
|
12
|
-
* Delegation framework version used to select the correct deployed enforcer
|
|
13
|
-
* contract addresses from `@metamask/delegation-deployments`.
|
|
14
|
-
*/
|
|
15
|
-
export declare const DELEGATION_FRAMEWORK_VERSION = "1.3.0";
|
|
16
11
|
/**
|
|
17
12
|
* State shape for GatorPermissionsController
|
|
18
13
|
*/
|
|
@@ -96,11 +91,26 @@ export type GatorPermissionsControllerAddPendingRevocationAction = {
|
|
|
96
91
|
type: `${typeof controllerName}:addPendingRevocation`;
|
|
97
92
|
handler: GatorPermissionsController['addPendingRevocation'];
|
|
98
93
|
};
|
|
94
|
+
/**
|
|
95
|
+
* The action which can be used to submit a revocation directly without requiring
|
|
96
|
+
* an on-chain transaction (for already-disabled delegations).
|
|
97
|
+
*/
|
|
98
|
+
export type GatorPermissionsControllerSubmitDirectRevocationAction = {
|
|
99
|
+
type: `${typeof controllerName}:submitDirectRevocation`;
|
|
100
|
+
handler: GatorPermissionsController['submitDirectRevocation'];
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* The action which can be used to check if a permission context is pending revocation.
|
|
104
|
+
*/
|
|
105
|
+
export type GatorPermissionsControllerIsPendingRevocationAction = {
|
|
106
|
+
type: `${typeof controllerName}:isPendingRevocation`;
|
|
107
|
+
handler: GatorPermissionsController['isPendingRevocation'];
|
|
108
|
+
};
|
|
99
109
|
/**
|
|
100
110
|
* All actions that {@link GatorPermissionsController} registers, to be called
|
|
101
111
|
* externally.
|
|
102
112
|
*/
|
|
103
|
-
export type GatorPermissionsControllerActions = GatorPermissionsControllerGetStateAction | GatorPermissionsControllerFetchAndUpdateGatorPermissionsAction | GatorPermissionsControllerEnableGatorPermissionsAction | GatorPermissionsControllerDisableGatorPermissionsAction | GatorPermissionsControllerDecodePermissionFromPermissionContextForOriginAction | GatorPermissionsControllerSubmitRevocationAction | GatorPermissionsControllerAddPendingRevocationAction;
|
|
113
|
+
export type GatorPermissionsControllerActions = GatorPermissionsControllerGetStateAction | GatorPermissionsControllerFetchAndUpdateGatorPermissionsAction | GatorPermissionsControllerEnableGatorPermissionsAction | GatorPermissionsControllerDisableGatorPermissionsAction | GatorPermissionsControllerDecodePermissionFromPermissionContextForOriginAction | GatorPermissionsControllerSubmitRevocationAction | GatorPermissionsControllerAddPendingRevocationAction | GatorPermissionsControllerSubmitDirectRevocationAction | GatorPermissionsControllerIsPendingRevocationAction;
|
|
104
114
|
/**
|
|
105
115
|
* All actions that {@link GatorPermissionsController} calls internally.
|
|
106
116
|
*
|
|
@@ -234,6 +244,29 @@ export default class GatorPermissionsController extends BaseController<typeof co
|
|
|
234
244
|
* @returns A promise that resolves when the listener is set up.
|
|
235
245
|
*/
|
|
236
246
|
addPendingRevocation(params: PendingRevocationParams): Promise<void>;
|
|
247
|
+
/**
|
|
248
|
+
* Submits a revocation directly without requiring an on-chain transaction.
|
|
249
|
+
* Used for already-disabled delegations that don't require an on-chain transaction.
|
|
250
|
+
*
|
|
251
|
+
* This method:
|
|
252
|
+
* 1. Adds the permission context to pending revocations state (disables UI button)
|
|
253
|
+
* 2. Immediately calls submitRevocation to remove from snap storage
|
|
254
|
+
* 3. On success, removes from pending revocations state (re-enables UI button)
|
|
255
|
+
* 4. On failure, keeps in pending revocations so UI can show error/retry state
|
|
256
|
+
*
|
|
257
|
+
* @param params - The revocation parameters containing the permission context.
|
|
258
|
+
* @returns A promise that resolves when the revocation is submitted successfully.
|
|
259
|
+
* @throws {GatorPermissionsNotEnabledError} If the gator permissions are not enabled.
|
|
260
|
+
* @throws {GatorPermissionsProviderError} If the snap request fails.
|
|
261
|
+
*/
|
|
262
|
+
submitDirectRevocation(params: RevocationParams): Promise<void>;
|
|
263
|
+
/**
|
|
264
|
+
* Checks if a permission context is in the pending revocations list.
|
|
265
|
+
*
|
|
266
|
+
* @param permissionContext - The permission context to check.
|
|
267
|
+
* @returns `true` if the permission context is pending revocation, `false` otherwise.
|
|
268
|
+
*/
|
|
269
|
+
isPendingRevocation(permissionContext: Hex): boolean;
|
|
237
270
|
}
|
|
238
271
|
export {};
|
|
239
272
|
//# sourceMappingURL=GatorPermissionsController.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GatorPermissionsController.d.cts","sourceRoot":"","sources":["../src/GatorPermissionsController.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,kCAAkC;AACnC,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,oCAAoC;AAC9E,OAAO,KAAK,EAAE,MAAM,EAAE,4BAA4B;AAElD,OAAO,KAAK,EACV,6CAA6C,EAC7C,8CAA8C,EAC9C,4CAA4C,EAC5C,2CAA2C,EAC3C,6CAA6C,EAC9C,yCAAyC;AAC1C,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,wBAAwB;
|
|
1
|
+
{"version":3,"file":"GatorPermissionsController.d.cts","sourceRoot":"","sources":["../src/GatorPermissionsController.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,13 +6,8 @@ import type { SnapId } from "@metamask/snaps-sdk";
|
|
|
6
6
|
import type { TransactionControllerTransactionApprovedEvent, TransactionControllerTransactionConfirmedEvent, TransactionControllerTransactionDroppedEvent, TransactionControllerTransactionFailedEvent, TransactionControllerTransactionRejectedEvent } from "@metamask/transaction-controller";
|
|
7
7
|
import type { Hex, Json } from "@metamask/utils";
|
|
8
8
|
import type { DecodedPermission } from "./decodePermission/index.mjs";
|
|
9
|
-
import {
|
|
9
|
+
import type { GatorPermissionsMap, DelegationDetails, RevocationParams, PendingRevocationParams } from "./types.mjs";
|
|
10
10
|
declare const controllerName = "GatorPermissionsController";
|
|
11
|
-
/**
|
|
12
|
-
* Delegation framework version used to select the correct deployed enforcer
|
|
13
|
-
* contract addresses from `@metamask/delegation-deployments`.
|
|
14
|
-
*/
|
|
15
|
-
export declare const DELEGATION_FRAMEWORK_VERSION = "1.3.0";
|
|
16
11
|
/**
|
|
17
12
|
* State shape for GatorPermissionsController
|
|
18
13
|
*/
|
|
@@ -96,11 +91,26 @@ export type GatorPermissionsControllerAddPendingRevocationAction = {
|
|
|
96
91
|
type: `${typeof controllerName}:addPendingRevocation`;
|
|
97
92
|
handler: GatorPermissionsController['addPendingRevocation'];
|
|
98
93
|
};
|
|
94
|
+
/**
|
|
95
|
+
* The action which can be used to submit a revocation directly without requiring
|
|
96
|
+
* an on-chain transaction (for already-disabled delegations).
|
|
97
|
+
*/
|
|
98
|
+
export type GatorPermissionsControllerSubmitDirectRevocationAction = {
|
|
99
|
+
type: `${typeof controllerName}:submitDirectRevocation`;
|
|
100
|
+
handler: GatorPermissionsController['submitDirectRevocation'];
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* The action which can be used to check if a permission context is pending revocation.
|
|
104
|
+
*/
|
|
105
|
+
export type GatorPermissionsControllerIsPendingRevocationAction = {
|
|
106
|
+
type: `${typeof controllerName}:isPendingRevocation`;
|
|
107
|
+
handler: GatorPermissionsController['isPendingRevocation'];
|
|
108
|
+
};
|
|
99
109
|
/**
|
|
100
110
|
* All actions that {@link GatorPermissionsController} registers, to be called
|
|
101
111
|
* externally.
|
|
102
112
|
*/
|
|
103
|
-
export type GatorPermissionsControllerActions = GatorPermissionsControllerGetStateAction | GatorPermissionsControllerFetchAndUpdateGatorPermissionsAction | GatorPermissionsControllerEnableGatorPermissionsAction | GatorPermissionsControllerDisableGatorPermissionsAction | GatorPermissionsControllerDecodePermissionFromPermissionContextForOriginAction | GatorPermissionsControllerSubmitRevocationAction | GatorPermissionsControllerAddPendingRevocationAction;
|
|
113
|
+
export type GatorPermissionsControllerActions = GatorPermissionsControllerGetStateAction | GatorPermissionsControllerFetchAndUpdateGatorPermissionsAction | GatorPermissionsControllerEnableGatorPermissionsAction | GatorPermissionsControllerDisableGatorPermissionsAction | GatorPermissionsControllerDecodePermissionFromPermissionContextForOriginAction | GatorPermissionsControllerSubmitRevocationAction | GatorPermissionsControllerAddPendingRevocationAction | GatorPermissionsControllerSubmitDirectRevocationAction | GatorPermissionsControllerIsPendingRevocationAction;
|
|
104
114
|
/**
|
|
105
115
|
* All actions that {@link GatorPermissionsController} calls internally.
|
|
106
116
|
*
|
|
@@ -234,6 +244,29 @@ export default class GatorPermissionsController extends BaseController<typeof co
|
|
|
234
244
|
* @returns A promise that resolves when the listener is set up.
|
|
235
245
|
*/
|
|
236
246
|
addPendingRevocation(params: PendingRevocationParams): Promise<void>;
|
|
247
|
+
/**
|
|
248
|
+
* Submits a revocation directly without requiring an on-chain transaction.
|
|
249
|
+
* Used for already-disabled delegations that don't require an on-chain transaction.
|
|
250
|
+
*
|
|
251
|
+
* This method:
|
|
252
|
+
* 1. Adds the permission context to pending revocations state (disables UI button)
|
|
253
|
+
* 2. Immediately calls submitRevocation to remove from snap storage
|
|
254
|
+
* 3. On success, removes from pending revocations state (re-enables UI button)
|
|
255
|
+
* 4. On failure, keeps in pending revocations so UI can show error/retry state
|
|
256
|
+
*
|
|
257
|
+
* @param params - The revocation parameters containing the permission context.
|
|
258
|
+
* @returns A promise that resolves when the revocation is submitted successfully.
|
|
259
|
+
* @throws {GatorPermissionsNotEnabledError} If the gator permissions are not enabled.
|
|
260
|
+
* @throws {GatorPermissionsProviderError} If the snap request fails.
|
|
261
|
+
*/
|
|
262
|
+
submitDirectRevocation(params: RevocationParams): Promise<void>;
|
|
263
|
+
/**
|
|
264
|
+
* Checks if a permission context is in the pending revocations list.
|
|
265
|
+
*
|
|
266
|
+
* @param permissionContext - The permission context to check.
|
|
267
|
+
* @returns `true` if the permission context is pending revocation, `false` otherwise.
|
|
268
|
+
*/
|
|
269
|
+
isPendingRevocation(permissionContext: Hex): boolean;
|
|
237
270
|
}
|
|
238
271
|
export {};
|
|
239
272
|
//# sourceMappingURL=GatorPermissionsController.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GatorPermissionsController.d.mts","sourceRoot":"","sources":["../src/GatorPermissionsController.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,kCAAkC;AACnC,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,oCAAoC;AAC9E,OAAO,KAAK,EAAE,MAAM,EAAE,4BAA4B;AAElD,OAAO,KAAK,EACV,6CAA6C,EAC7C,8CAA8C,EAC9C,4CAA4C,EAC5C,2CAA2C,EAC3C,6CAA6C,EAC9C,yCAAyC;AAC1C,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,wBAAwB;
|
|
1
|
+
{"version":3,"file":"GatorPermissionsController.d.mts","sourceRoot":"","sources":["../src/GatorPermissionsController.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ var _GatorPermissionsController_instances, _GatorPermissionsController_setIsFetc
|
|
|
7
7
|
import { BaseController } from "@metamask/base-controller";
|
|
8
8
|
import { DELEGATOR_CONTRACTS } from "@metamask/delegation-deployments";
|
|
9
9
|
import { HandlerType } from "@metamask/snaps-utils";
|
|
10
|
+
import { DELEGATION_FRAMEWORK_VERSION } from "./constants.mjs";
|
|
10
11
|
import { getPermissionDataAndExpiry, identifyPermissionByEnforcers, reconstructDecodedPermission } from "./decodePermission/index.mjs";
|
|
11
12
|
import { GatorPermissionsFetchError, GatorPermissionsNotEnabledError, GatorPermissionsProviderError, OriginNotAllowedError, PermissionDecodingError } from "./errors.mjs";
|
|
12
13
|
import { controllerLog } from "./logger.mjs";
|
|
@@ -17,18 +18,16 @@ import { deserializeGatorPermissionsMap, serializeGatorPermissionsMap } from "./
|
|
|
17
18
|
const controllerName = 'GatorPermissionsController';
|
|
18
19
|
// Default value for the gator permissions provider snap id
|
|
19
20
|
const defaultGatorPermissionsProviderSnapId = 'npm:@metamask/gator-permissions-snap';
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
const createEmptyGatorPermissionsMap = () => {
|
|
22
|
+
return {
|
|
23
|
+
'erc20-token-revocation': {},
|
|
24
|
+
'native-token-stream': {},
|
|
25
|
+
'native-token-periodic': {},
|
|
26
|
+
'erc20-token-stream': {},
|
|
27
|
+
'erc20-token-periodic': {},
|
|
28
|
+
other: {},
|
|
29
|
+
};
|
|
26
30
|
};
|
|
27
|
-
/**
|
|
28
|
-
* Delegation framework version used to select the correct deployed enforcer
|
|
29
|
-
* contract addresses from `@metamask/delegation-deployments`.
|
|
30
|
-
*/
|
|
31
|
-
export const DELEGATION_FRAMEWORK_VERSION = '1.3.0';
|
|
32
31
|
/**
|
|
33
32
|
* Timeout duration for pending revocations (2 hours in milliseconds).
|
|
34
33
|
* After this time, event listeners will be cleaned up to prevent memory leaks.
|
|
@@ -78,7 +77,7 @@ const gatorPermissionsControllerMetadata = {
|
|
|
78
77
|
export function getDefaultGatorPermissionsControllerState() {
|
|
79
78
|
return {
|
|
80
79
|
isGatorPermissionsEnabled: false,
|
|
81
|
-
gatorPermissionsMapSerialized: serializeGatorPermissionsMap(
|
|
80
|
+
gatorPermissionsMapSerialized: serializeGatorPermissionsMap(createEmptyGatorPermissionsMap()),
|
|
82
81
|
isFetchingGatorPermissions: false,
|
|
83
82
|
gatorPermissionsProviderSnapId: defaultGatorPermissionsProviderSnapId,
|
|
84
83
|
pendingRevocations: [],
|
|
@@ -137,7 +136,7 @@ class GatorPermissionsController extends BaseController {
|
|
|
137
136
|
async disableGatorPermissions() {
|
|
138
137
|
this.update((state) => {
|
|
139
138
|
state.isGatorPermissionsEnabled = false;
|
|
140
|
-
state.gatorPermissionsMapSerialized = serializeGatorPermissionsMap(
|
|
139
|
+
state.gatorPermissionsMapSerialized = serializeGatorPermissionsMap(createEmptyGatorPermissionsMap());
|
|
141
140
|
});
|
|
142
141
|
}
|
|
143
142
|
/**
|
|
@@ -252,25 +251,39 @@ class GatorPermissionsController extends BaseController {
|
|
|
252
251
|
permissionContext: revocationParams.permissionContext,
|
|
253
252
|
});
|
|
254
253
|
__classPrivateFieldGet(this, _GatorPermissionsController_instances, "m", _GatorPermissionsController_assertGatorPermissionsEnabled).call(this);
|
|
254
|
+
const snapRequest = {
|
|
255
|
+
snapId: this.state.gatorPermissionsProviderSnapId,
|
|
256
|
+
origin: 'metamask',
|
|
257
|
+
handler: HandlerType.OnRpcRequest,
|
|
258
|
+
request: {
|
|
259
|
+
jsonrpc: '2.0',
|
|
260
|
+
method: GatorPermissionsSnapRpcMethod.PermissionProviderSubmitRevocation,
|
|
261
|
+
params: revocationParams,
|
|
262
|
+
},
|
|
263
|
+
};
|
|
255
264
|
try {
|
|
256
|
-
const snapRequest = {
|
|
257
|
-
snapId: this.state.gatorPermissionsProviderSnapId,
|
|
258
|
-
origin: 'metamask',
|
|
259
|
-
handler: HandlerType.OnRpcRequest,
|
|
260
|
-
request: {
|
|
261
|
-
jsonrpc: '2.0',
|
|
262
|
-
method: GatorPermissionsSnapRpcMethod.PermissionProviderSubmitRevocation,
|
|
263
|
-
params: revocationParams,
|
|
264
|
-
},
|
|
265
|
-
};
|
|
266
265
|
const result = await this.messenger.call('SnapController:handleRequest', snapRequest);
|
|
267
|
-
|
|
266
|
+
// Refresh list first (permission removed from list)
|
|
267
|
+
await this.fetchAndUpdateGatorPermissions({ isRevoked: false });
|
|
268
268
|
controllerLog('Successfully submitted revocation', {
|
|
269
269
|
permissionContext: revocationParams.permissionContext,
|
|
270
270
|
result,
|
|
271
271
|
});
|
|
272
272
|
}
|
|
273
273
|
catch (error) {
|
|
274
|
+
// If it's a GatorPermissionsFetchError, revocation succeeded but refresh failed
|
|
275
|
+
if (error instanceof GatorPermissionsFetchError) {
|
|
276
|
+
controllerLog('Revocation submitted successfully but failed to refresh permissions list', {
|
|
277
|
+
error,
|
|
278
|
+
permissionContext: revocationParams.permissionContext,
|
|
279
|
+
});
|
|
280
|
+
// Wrap with a more specific message indicating revocation succeeded
|
|
281
|
+
throw new GatorPermissionsFetchError({
|
|
282
|
+
message: 'Failed to refresh permissions list after successful revocation',
|
|
283
|
+
cause: error,
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
// Otherwise, revocation failed - wrap in provider error
|
|
274
287
|
controllerLog('Failed to submit revocation', {
|
|
275
288
|
error,
|
|
276
289
|
permissionContext: revocationParams.permissionContext,
|
|
@@ -280,6 +293,9 @@ class GatorPermissionsController extends BaseController {
|
|
|
280
293
|
cause: error,
|
|
281
294
|
});
|
|
282
295
|
}
|
|
296
|
+
finally {
|
|
297
|
+
__classPrivateFieldGet(this, _GatorPermissionsController_instances, "m", _GatorPermissionsController_removePendingRevocationFromStateByPermissionContext).call(this, revocationParams.permissionContext);
|
|
298
|
+
}
|
|
283
299
|
}
|
|
284
300
|
/**
|
|
285
301
|
* Adds a pending revocation that will be submitted once the transaction is confirmed.
|
|
@@ -314,6 +330,16 @@ class GatorPermissionsController extends BaseController {
|
|
|
314
330
|
dropped: undefined,
|
|
315
331
|
timeoutId: undefined,
|
|
316
332
|
};
|
|
333
|
+
// Helper to refresh permissions after transaction state change
|
|
334
|
+
const refreshPermissions = (context) => {
|
|
335
|
+
this.fetchAndUpdateGatorPermissions({ isRevoked: false }).catch((error) => {
|
|
336
|
+
controllerLog(`Failed to refresh permissions after ${context}`, {
|
|
337
|
+
txId,
|
|
338
|
+
permissionContext,
|
|
339
|
+
error,
|
|
340
|
+
});
|
|
341
|
+
});
|
|
342
|
+
};
|
|
317
343
|
// Helper to unsubscribe from approval/rejection events after decision is made
|
|
318
344
|
const cleanupApprovalHandlers = () => {
|
|
319
345
|
if (handlers.approved) {
|
|
@@ -375,13 +401,15 @@ class GatorPermissionsController extends BaseController {
|
|
|
375
401
|
txId,
|
|
376
402
|
permissionContext,
|
|
377
403
|
});
|
|
378
|
-
this.submitRevocation({ permissionContext })
|
|
404
|
+
this.submitRevocation({ permissionContext })
|
|
405
|
+
.catch((error) => {
|
|
379
406
|
controllerLog('Failed to submit revocation after transaction confirmed', {
|
|
380
407
|
txId,
|
|
381
408
|
permissionContext,
|
|
382
409
|
error,
|
|
383
410
|
});
|
|
384
|
-
})
|
|
411
|
+
})
|
|
412
|
+
.finally(() => refreshPermissions('transaction confirmed'));
|
|
385
413
|
cleanup(transactionMeta.id);
|
|
386
414
|
}
|
|
387
415
|
};
|
|
@@ -394,6 +422,7 @@ class GatorPermissionsController extends BaseController {
|
|
|
394
422
|
error: payload.error,
|
|
395
423
|
});
|
|
396
424
|
cleanup(payload.transactionMeta.id);
|
|
425
|
+
refreshPermissions('transaction failed');
|
|
397
426
|
}
|
|
398
427
|
};
|
|
399
428
|
// Handle dropped transaction - cleanup without submitting revocation
|
|
@@ -404,6 +433,7 @@ class GatorPermissionsController extends BaseController {
|
|
|
404
433
|
permissionContext,
|
|
405
434
|
});
|
|
406
435
|
cleanup(payload.transactionMeta.id);
|
|
436
|
+
refreshPermissions('transaction dropped');
|
|
407
437
|
}
|
|
408
438
|
};
|
|
409
439
|
// Subscribe to user approval/rejection events
|
|
@@ -422,6 +452,40 @@ class GatorPermissionsController extends BaseController {
|
|
|
422
452
|
cleanup(txId);
|
|
423
453
|
}, PENDING_REVOCATION_TIMEOUT);
|
|
424
454
|
}
|
|
455
|
+
/**
|
|
456
|
+
* Submits a revocation directly without requiring an on-chain transaction.
|
|
457
|
+
* Used for already-disabled delegations that don't require an on-chain transaction.
|
|
458
|
+
*
|
|
459
|
+
* This method:
|
|
460
|
+
* 1. Adds the permission context to pending revocations state (disables UI button)
|
|
461
|
+
* 2. Immediately calls submitRevocation to remove from snap storage
|
|
462
|
+
* 3. On success, removes from pending revocations state (re-enables UI button)
|
|
463
|
+
* 4. On failure, keeps in pending revocations so UI can show error/retry state
|
|
464
|
+
*
|
|
465
|
+
* @param params - The revocation parameters containing the permission context.
|
|
466
|
+
* @returns A promise that resolves when the revocation is submitted successfully.
|
|
467
|
+
* @throws {GatorPermissionsNotEnabledError} If the gator permissions are not enabled.
|
|
468
|
+
* @throws {GatorPermissionsProviderError} If the snap request fails.
|
|
469
|
+
*/
|
|
470
|
+
async submitDirectRevocation(params) {
|
|
471
|
+
__classPrivateFieldGet(this, _GatorPermissionsController_instances, "m", _GatorPermissionsController_assertGatorPermissionsEnabled).call(this);
|
|
472
|
+
// Use a placeholder txId that doesn't conflict with real transaction IDs
|
|
473
|
+
const placeholderTxId = `no-tx-${params.permissionContext}`;
|
|
474
|
+
// Add to pending revocations state first (disables UI button immediately)
|
|
475
|
+
__classPrivateFieldGet(this, _GatorPermissionsController_instances, "m", _GatorPermissionsController_addPendingRevocationToState).call(this, placeholderTxId, params.permissionContext);
|
|
476
|
+
// Immediately submit the revocation (will remove from pending on success)
|
|
477
|
+
await this.submitRevocation(params);
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* Checks if a permission context is in the pending revocations list.
|
|
481
|
+
*
|
|
482
|
+
* @param permissionContext - The permission context to check.
|
|
483
|
+
* @returns `true` if the permission context is pending revocation, `false` otherwise.
|
|
484
|
+
*/
|
|
485
|
+
isPendingRevocation(permissionContext) {
|
|
486
|
+
return this.state.pendingRevocations.some((pendingRevocation) => pendingRevocation.permissionContext.toLowerCase() ===
|
|
487
|
+
permissionContext.toLowerCase());
|
|
488
|
+
}
|
|
425
489
|
}
|
|
426
490
|
_GatorPermissionsController_instances = new WeakSet(), _GatorPermissionsController_setIsFetchingGatorPermissions = function _GatorPermissionsController_setIsFetchingGatorPermissions(isFetchingGatorPermissions) {
|
|
427
491
|
this.update((state) => {
|
|
@@ -444,7 +508,8 @@ _GatorPermissionsController_instances = new WeakSet(), _GatorPermissionsControll
|
|
|
444
508
|
});
|
|
445
509
|
}, _GatorPermissionsController_removePendingRevocationFromStateByPermissionContext = function _GatorPermissionsController_removePendingRevocationFromStateByPermissionContext(permissionContext) {
|
|
446
510
|
this.update((state) => {
|
|
447
|
-
state.pendingRevocations = state.pendingRevocations.filter((pendingRevocations) => pendingRevocations.permissionContext !==
|
|
511
|
+
state.pendingRevocations = state.pendingRevocations.filter((pendingRevocations) => pendingRevocations.permissionContext.toLowerCase() !==
|
|
512
|
+
permissionContext.toLowerCase());
|
|
448
513
|
});
|
|
449
514
|
}, _GatorPermissionsController_registerMessageHandlers = function _GatorPermissionsController_registerMessageHandlers() {
|
|
450
515
|
this.messenger.registerActionHandler(`${controllerName}:fetchAndUpdateGatorPermissions`, this.fetchAndUpdateGatorPermissions.bind(this));
|
|
@@ -454,6 +519,8 @@ _GatorPermissionsController_instances = new WeakSet(), _GatorPermissionsControll
|
|
|
454
519
|
const submitRevocationAction = `${controllerName}:submitRevocation`;
|
|
455
520
|
this.messenger.registerActionHandler(submitRevocationAction, this.submitRevocation.bind(this));
|
|
456
521
|
this.messenger.registerActionHandler(`${controllerName}:addPendingRevocation`, this.addPendingRevocation.bind(this));
|
|
522
|
+
this.messenger.registerActionHandler(`${controllerName}:submitDirectRevocation`, this.submitDirectRevocation.bind(this));
|
|
523
|
+
this.messenger.registerActionHandler(`${controllerName}:isPendingRevocation`, this.isPendingRevocation.bind(this));
|
|
457
524
|
}, _GatorPermissionsController_assertGatorPermissionsEnabled = function _GatorPermissionsController_assertGatorPermissionsEnabled() {
|
|
458
525
|
if (!this.state.isGatorPermissionsEnabled) {
|
|
459
526
|
throw new GatorPermissionsNotEnabledError();
|
|
@@ -490,7 +557,7 @@ async function _GatorPermissionsController_handleSnapRequestToGatorPermissionsPr
|
|
|
490
557
|
}
|
|
491
558
|
}, _GatorPermissionsController_sanitizeStoredGatorPermission = function _GatorPermissionsController_sanitizeStoredGatorPermission(storedGatorPermission) {
|
|
492
559
|
const { permissionResponse } = storedGatorPermission;
|
|
493
|
-
const {
|
|
560
|
+
const { dependencyInfo, signer, ...rest } = permissionResponse;
|
|
494
561
|
return {
|
|
495
562
|
...storedGatorPermission,
|
|
496
563
|
permissionResponse: {
|
|
@@ -498,39 +565,22 @@ async function _GatorPermissionsController_handleSnapRequestToGatorPermissionsPr
|
|
|
498
565
|
},
|
|
499
566
|
};
|
|
500
567
|
}, _GatorPermissionsController_categorizePermissionsDataByTypeAndChainId = function _GatorPermissionsController_categorizePermissionsDataByTypeAndChainId(storedGatorPermissions) {
|
|
568
|
+
const gatorPermissionsMap = createEmptyGatorPermissionsMap();
|
|
501
569
|
if (!storedGatorPermissions) {
|
|
502
|
-
return defaultGatorPermissionsMap;
|
|
503
|
-
}
|
|
504
|
-
return storedGatorPermissions.reduce((gatorPermissionsMap, storedGatorPermission) => {
|
|
505
|
-
const { permissionResponse } = storedGatorPermission;
|
|
506
|
-
const permissionType = permissionResponse.permission.type;
|
|
507
|
-
const { chainId } = permissionResponse;
|
|
508
|
-
const sanitizedStoredGatorPermission = __classPrivateFieldGet(this, _GatorPermissionsController_instances, "m", _GatorPermissionsController_sanitizeStoredGatorPermission).call(this, storedGatorPermission);
|
|
509
|
-
switch (permissionType) {
|
|
510
|
-
case 'native-token-stream':
|
|
511
|
-
case 'native-token-periodic':
|
|
512
|
-
case 'erc20-token-stream':
|
|
513
|
-
case 'erc20-token-periodic':
|
|
514
|
-
if (!gatorPermissionsMap[permissionType][chainId]) {
|
|
515
|
-
gatorPermissionsMap[permissionType][chainId] = [];
|
|
516
|
-
}
|
|
517
|
-
gatorPermissionsMap[permissionType][chainId].push(sanitizedStoredGatorPermission);
|
|
518
|
-
break;
|
|
519
|
-
default:
|
|
520
|
-
if (!gatorPermissionsMap.other[chainId]) {
|
|
521
|
-
gatorPermissionsMap.other[chainId] = [];
|
|
522
|
-
}
|
|
523
|
-
gatorPermissionsMap.other[chainId].push(sanitizedStoredGatorPermission);
|
|
524
|
-
break;
|
|
525
|
-
}
|
|
526
570
|
return gatorPermissionsMap;
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
571
|
+
}
|
|
572
|
+
for (const storedGatorPermission of storedGatorPermissions) {
|
|
573
|
+
const { permissionResponse: { permission: { type: permissionType }, chainId, }, } = storedGatorPermission;
|
|
574
|
+
const isPermissionTypeKnown = Object.prototype.hasOwnProperty.call(gatorPermissionsMap, permissionType);
|
|
575
|
+
const permissionTypeKey = isPermissionTypeKnown
|
|
576
|
+
? permissionType
|
|
577
|
+
: 'other';
|
|
578
|
+
gatorPermissionsMap[permissionTypeKey][chainId] = [
|
|
579
|
+
...(gatorPermissionsMap[permissionTypeKey][chainId] || []),
|
|
580
|
+
__classPrivateFieldGet(this, _GatorPermissionsController_instances, "m", _GatorPermissionsController_sanitizeStoredGatorPermission).call(this, storedGatorPermission),
|
|
581
|
+
];
|
|
582
|
+
}
|
|
583
|
+
return gatorPermissionsMap;
|
|
534
584
|
};
|
|
535
585
|
export default GatorPermissionsController;
|
|
536
586
|
//# sourceMappingURL=GatorPermissionsController.mjs.map
|