@metamask-previews/perps-controller 1.0.1-preview-4183330c3 → 1.1.0-preview-efc1fb7

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 CHANGED
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.1.0]
11
+
12
+ ### Added
13
+
14
+ - feat: defer eligibility to allow for onboarding to proceed without le… ([#8197](https://github.com/MetaMask/core/pull/8197))
15
+
10
16
  ## [1.0.1]
11
17
 
12
18
  ### Changed
@@ -49,6 +55,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
49
55
 
50
56
  - Bump `@metamask/controller-utils` from `^11.18.0` to `^11.19.0` ([#7995](https://github.com/MetaMask/core/pull/7995))
51
57
 
52
- [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/perps-controller@1.0.1...HEAD
58
+ [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/perps-controller@1.1.0...HEAD
59
+ [1.1.0]: https://github.com/MetaMask/core/compare/@metamask/perps-controller@1.0.1...@metamask/perps-controller@1.1.0
53
60
  [1.0.1]: https://github.com/MetaMask/core/compare/@metamask/perps-controller@1.0.0...@metamask/perps-controller@1.0.1
54
61
  [1.0.0]: https://github.com/MetaMask/core/releases/tag/@metamask/perps-controller@1.0.0
@@ -10,7 +10,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
10
10
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
11
11
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
12
12
  };
13
- var _PerpsController_instances, _a, _PerpsController_initializationPromise, _PerpsController_isReinitializing, _PerpsController_blockedRegionListVersion, _PerpsController_hip3Enabled, _PerpsController_hip3AllowlistMarkets, _PerpsController_hip3BlocklistMarkets, _PerpsController_hip3ConfigSource, _PerpsController_isMYXProviderEnabled, _PerpsController_standaloneProvider, _PerpsController_standaloneProviderIsTestnet, _PerpsController_standaloneProviderHip3Version, _PerpsController_options, _PerpsController_tradingService, _PerpsController_marketDataService, _PerpsController_accountService, _PerpsController_eligibilityService, _PerpsController_dataLakeService, _PerpsController_depositService, _PerpsController_featureFlagConfigurationService, _PerpsController_rewardsIntegrationService, _PerpsController_logError, _PerpsController_debugLog, _PerpsController_getOrCreateStandaloneProvider, _PerpsController_cleanupStandaloneProvider, _PerpsController_getMetrics, _PerpsController_findNetworkClientIdForChain, _PerpsController_submitTransaction, _PerpsController_migrateRequestsIfNeeded, _PerpsController_withStreamPause, _PerpsController_performInitialization, _PerpsController_getErrorContext, _PerpsController_getControllerState, _PerpsController_createServiceContext, _PerpsController_ensureTradingServiceDeps, _PerpsController_preloadWatchedPaths, _PerpsController_preloadTimer, _PerpsController_isPreloading, _PerpsController_isPreloadingUserData, _PerpsController_preloadStateUnsubscribe, _PerpsController_accountChangeUnsubscribe, _PerpsController_previousIsTestnet, _PerpsController_previousHip3ConfigVersion, _PerpsController_preloadRefreshMs, _PerpsController_preloadGuardMs, _PerpsController_performMarketDataPreload, _PerpsController_performUserDataPreload;
13
+ var _PerpsController_instances, _a, _PerpsController_initializationPromise, _PerpsController_isReinitializing, _PerpsController_blockedRegionListVersion, _PerpsController_hip3Enabled, _PerpsController_hip3AllowlistMarkets, _PerpsController_hip3BlocklistMarkets, _PerpsController_hip3ConfigSource, _PerpsController_isMYXProviderEnabled, _PerpsController_standaloneProvider, _PerpsController_standaloneProviderIsTestnet, _PerpsController_standaloneProviderHip3Version, _PerpsController_eligibilityCheckDeferred, _PerpsController_options, _PerpsController_tradingService, _PerpsController_marketDataService, _PerpsController_accountService, _PerpsController_eligibilityService, _PerpsController_dataLakeService, _PerpsController_depositService, _PerpsController_featureFlagConfigurationService, _PerpsController_rewardsIntegrationService, _PerpsController_logError, _PerpsController_debugLog, _PerpsController_getOrCreateStandaloneProvider, _PerpsController_cleanupStandaloneProvider, _PerpsController_getMetrics, _PerpsController_findNetworkClientIdForChain, _PerpsController_submitTransaction, _PerpsController_migrateRequestsIfNeeded, _PerpsController_withStreamPause, _PerpsController_performInitialization, _PerpsController_getErrorContext, _PerpsController_getControllerState, _PerpsController_createServiceContext, _PerpsController_ensureTradingServiceDeps, _PerpsController_preloadWatchedPaths, _PerpsController_preloadTimer, _PerpsController_isPreloading, _PerpsController_isPreloadingUserData, _PerpsController_preloadStateUnsubscribe, _PerpsController_accountChangeUnsubscribe, _PerpsController_previousIsTestnet, _PerpsController_previousHip3ConfigVersion, _PerpsController_preloadRefreshMs, _PerpsController_preloadGuardMs, _PerpsController_performMarketDataPreload, _PerpsController_performUserDataPreload;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.PerpsController = exports.getDefaultPerpsControllerState = exports.InitializationState = exports.PERPS_ERROR_CODES = void 0;
16
16
  const base_controller_1 = require("@metamask/base-controller");
@@ -347,6 +347,8 @@ const MESSENGER_EXPOSED_METHODS = [
347
347
  'saveOrderBookGrouping',
348
348
  'setSelectedPaymentToken',
349
349
  'resetSelectedPaymentToken',
350
+ 'startEligibilityMonitoring',
351
+ 'stopEligibilityMonitoring',
350
352
  ];
351
353
  /**
352
354
  * PerpsController - Protocol-agnostic perpetuals trading controller
@@ -357,7 +359,7 @@ const MESSENGER_EXPOSED_METHODS = [
357
359
  * - Live data uses direct callbacks for maximum performance
358
360
  */
359
361
  class PerpsController extends base_controller_1.BaseController {
360
- constructor({ messenger, state = {}, clientConfig = {}, infrastructure, }) {
362
+ constructor({ messenger, state = {}, clientConfig = {}, infrastructure, deferEligibilityCheck = false, }) {
361
363
  super({
362
364
  name: 'PerpsController',
363
365
  metadata,
@@ -398,6 +400,7 @@ class PerpsController extends base_controller_1.BaseController {
398
400
  _PerpsController_standaloneProvider.set(this, null);
399
401
  _PerpsController_standaloneProviderIsTestnet.set(this, null);
400
402
  _PerpsController_standaloneProviderHip3Version.set(this, null);
403
+ _PerpsController_eligibilityCheckDeferred.set(this, void 0);
401
404
  // Store options for dependency injection (allows core package to inject platform-specific services)
402
405
  _PerpsController_options.set(this, void 0);
403
406
  // Service instances (instantiated with platform dependencies)
@@ -416,6 +419,7 @@ class PerpsController extends base_controller_1.BaseController {
416
419
  _PerpsController_accountChangeUnsubscribe.set(this, null);
417
420
  _PerpsController_previousIsTestnet.set(this, null);
418
421
  _PerpsController_previousHip3ConfigVersion.set(this, null);
422
+ __classPrivateFieldSet(this, _PerpsController_eligibilityCheckDeferred, deferEligibilityCheck, "f");
419
423
  // Store options for dependency injection
420
424
  __classPrivateFieldSet(this, _PerpsController_options, {
421
425
  messenger,
@@ -2084,15 +2088,43 @@ class PerpsController extends base_controller_1.BaseController {
2084
2088
  * Eligibility (Geo-Blocking)
2085
2089
  */
2086
2090
  /**
2087
- * Fetch geo location
2091
+ * Activates geo-blocking eligibility monitoring.
2092
+ * Call this after onboarding is complete when the controller was constructed
2093
+ * with `deferEligibilityCheck: true`.
2088
2094
  *
2089
- * Returned in Country or Country-Region format
2090
- * Example: FR, DE, US-MI, CA-ON
2095
+ * Reads the current RemoteFeatureFlagController state, performs the initial
2096
+ * eligibility check, and unblocks the existing stateChange subscription so
2097
+ * future feature-flag updates flow through normally.
2098
+ * Safe to call multiple times; subsequent calls simply re-check eligibility.
2091
2099
  */
2100
+ startEligibilityMonitoring() {
2101
+ __classPrivateFieldSet(this, _PerpsController_eligibilityCheckDeferred, false, "f");
2102
+ try {
2103
+ const currentState = this.messenger.call('RemoteFeatureFlagController:getState');
2104
+ this.refreshEligibilityOnFeatureFlagChange(currentState);
2105
+ }
2106
+ catch (error) {
2107
+ __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_logError).call(this, (0, errorUtils_1.ensureError)(error, 'PerpsController.startEligibilityMonitoring'), __classPrivateFieldGet(this, _PerpsController_instances, "m", _PerpsController_getErrorContext).call(this, 'startEligibilityMonitoring', {
2108
+ operation: 'readRemoteFeatureFlags',
2109
+ }));
2110
+ }
2111
+ }
2112
+ /**
2113
+ * Stops geo-blocking eligibility monitoring.
2114
+ * Call this when the user disables basic functionality (e.g. useExternalServices becomes false).
2115
+ * Prevents geolocation calls until startEligibilityMonitoring() is called again.
2116
+ * Safe to call multiple times.
2117
+ */
2118
+ stopEligibilityMonitoring() {
2119
+ __classPrivateFieldSet(this, _PerpsController_eligibilityCheckDeferred, true, "f");
2120
+ }
2092
2121
  /**
2093
2122
  * Refresh eligibility status
2094
2123
  */
2095
2124
  async refreshEligibility() {
2125
+ if (__classPrivateFieldGet(this, _PerpsController_eligibilityCheckDeferred, "f")) {
2126
+ return;
2127
+ }
2096
2128
  // Capture the current version before starting the async operation.
2097
2129
  // This prevents race conditions where stale eligibility checks
2098
2130
  // (started with fallback config) overwrite results from newer checks
@@ -2585,7 +2617,7 @@ class PerpsController extends base_controller_1.BaseController {
2585
2617
  }
2586
2618
  }
2587
2619
  exports.PerpsController = PerpsController;
2588
- _a = PerpsController, _PerpsController_initializationPromise = new WeakMap(), _PerpsController_isReinitializing = new WeakMap(), _PerpsController_blockedRegionListVersion = new WeakMap(), _PerpsController_hip3Enabled = new WeakMap(), _PerpsController_hip3AllowlistMarkets = new WeakMap(), _PerpsController_hip3BlocklistMarkets = new WeakMap(), _PerpsController_hip3ConfigSource = new WeakMap(), _PerpsController_standaloneProvider = new WeakMap(), _PerpsController_standaloneProviderIsTestnet = new WeakMap(), _PerpsController_standaloneProviderHip3Version = new WeakMap(), _PerpsController_options = new WeakMap(), _PerpsController_tradingService = new WeakMap(), _PerpsController_marketDataService = new WeakMap(), _PerpsController_accountService = new WeakMap(), _PerpsController_eligibilityService = new WeakMap(), _PerpsController_dataLakeService = new WeakMap(), _PerpsController_depositService = new WeakMap(), _PerpsController_featureFlagConfigurationService = new WeakMap(), _PerpsController_rewardsIntegrationService = new WeakMap(), _PerpsController_preloadTimer = new WeakMap(), _PerpsController_isPreloading = new WeakMap(), _PerpsController_isPreloadingUserData = new WeakMap(), _PerpsController_preloadStateUnsubscribe = new WeakMap(), _PerpsController_accountChangeUnsubscribe = new WeakMap(), _PerpsController_previousIsTestnet = new WeakMap(), _PerpsController_previousHip3ConfigVersion = new WeakMap(), _PerpsController_instances = new WeakSet(), _PerpsController_isMYXProviderEnabled = function _PerpsController_isMYXProviderEnabled() {
2620
+ _a = PerpsController, _PerpsController_initializationPromise = new WeakMap(), _PerpsController_isReinitializing = new WeakMap(), _PerpsController_blockedRegionListVersion = new WeakMap(), _PerpsController_hip3Enabled = new WeakMap(), _PerpsController_hip3AllowlistMarkets = new WeakMap(), _PerpsController_hip3BlocklistMarkets = new WeakMap(), _PerpsController_hip3ConfigSource = new WeakMap(), _PerpsController_standaloneProvider = new WeakMap(), _PerpsController_standaloneProviderIsTestnet = new WeakMap(), _PerpsController_standaloneProviderHip3Version = new WeakMap(), _PerpsController_eligibilityCheckDeferred = new WeakMap(), _PerpsController_options = new WeakMap(), _PerpsController_tradingService = new WeakMap(), _PerpsController_marketDataService = new WeakMap(), _PerpsController_accountService = new WeakMap(), _PerpsController_eligibilityService = new WeakMap(), _PerpsController_dataLakeService = new WeakMap(), _PerpsController_depositService = new WeakMap(), _PerpsController_featureFlagConfigurationService = new WeakMap(), _PerpsController_rewardsIntegrationService = new WeakMap(), _PerpsController_preloadTimer = new WeakMap(), _PerpsController_isPreloading = new WeakMap(), _PerpsController_isPreloadingUserData = new WeakMap(), _PerpsController_preloadStateUnsubscribe = new WeakMap(), _PerpsController_accountChangeUnsubscribe = new WeakMap(), _PerpsController_previousIsTestnet = new WeakMap(), _PerpsController_previousHip3ConfigVersion = new WeakMap(), _PerpsController_instances = new WeakSet(), _PerpsController_isMYXProviderEnabled = function _PerpsController_isMYXProviderEnabled() {
2589
2621
  const getLocalFlag = () => typeof globalThis.process !== 'undefined' &&
2590
2622
  globalThis.process.env?.MM_PERPS_MYX_PROVIDER_ENABLED === 'true';
2591
2623
  try {