import 'dart:ui'; import 'dart:js_interop'; import 'package:pshared/config/common.dart'; /// Bind to the global JS `appConfig` (if it exists). @JS() external AppConfig? get appConfig; /// A staticInterop class for the JS object returned by `appConfig`. @JS() @staticInterop class AppConfig {} /// Extension methods to expose each property on `AppConfig`. extension AppConfigExtension on AppConfig { external String? get apiProto; external String? get apiHost; external String? get apiEndpoint; external String? get amplitudeSecret; external String? get amplitudeServerZone; external String? get posthogApiKey; external String? get posthogHost; external String? get defaultLocale; external String? get wsProto; external String? get wsEndpoint; external int? get defaultDimensionLength; external String? get themeColor; external String? get clientId; } class Constants extends CommonConstants { static const String _clientIdWeb = 'com.profee.pay.web-4b6e8a0f-9b5c-4f57-b3a6-3c456e9bb2cd'; // Just re-expose these from CommonConstants: static Locale get defaultLocale => CommonConstants.defaultLocale; static String get clientId => _clientIdWeb; static String get accessTokenStorageKey => CommonConstants.accessTokenStorageKey; static String get refreshTokenStorageKey => CommonConstants.refreshTokenStorageKey; static String get currentOrgKey => CommonConstants.currentOrgKey; static String get apiUrl => CommonConstants.apiUrl; static String get serviceUrl => CommonConstants.serviceUrl; static String get posthogApiKey => CommonConstants.posthogApiKey; static String get posthogHost => CommonConstants.posthogHost; static int get defaultDimensionLength => CommonConstants.defaultDimensionLength; static String get deviceIdStorageKey => CommonConstants.deviceIdStorageKey; static String get nilObjectRef => CommonConstants.nilObjectRef; static Color get themeColor => CommonConstants.themeColor; static Future initialize() async { // Try to grab the JS `appConfig` if it exists: final config = appConfig; if (config != null) { // Build a Dart Map from the JS object’s properties: final configJson = { 'apiProto': config.apiProto, 'apiHost': config.apiHost, 'apiEndpoint': config.apiEndpoint, 'amplitudeSecret': config.amplitudeSecret, 'amplitudeServerZone': config.amplitudeServerZone, 'posthogApiKey': config.posthogApiKey, 'posthogHost': config.posthogHost, 'defaultLocale': config.defaultLocale, 'wsProto': config.wsProto, 'wsEndpoint': config.wsEndpoint, 'defaultDimensionLength': config.defaultDimensionLength, 'themeColor': config.themeColor, // If the JS side didn’t supply a clientId, fall back to our Dart constant 'clientId': config.clientId ?? _clientIdWeb, }; CommonConstants.applyConfiguration(configJson); } else { // No appConfig on JS side → just use the default Dart client ID. CommonConstants.clientId = _clientIdWeb; } } }