appInitRemoteConfig function

Future<void> appInitRemoteConfig({
  1. Map<String, dynamic>? additionalDefaultConfigs,
})

Implementation

Future<void> appInitRemoteConfig({
  Map<String, dynamic>? additionalDefaultConfigs,
}) async {
  // Build + validate the merged defaults ONCE, before any branch or GetIt
  // registration. Validation runs identically on every path (live, mock,
  // emulator), so a bad consumer default fails fast and identically
  // everywhere — surfacing in local development instead of first crashing a
  // live Firebase deploy. Throws an ArgumentError on any non-bool/num/String
  // value (see buildValidatedRemoteConfigDefaults).
  final mergedDefaults = buildValidatedRemoteConfigDefaults(additionalDefaultConfigs);

  // If Firebase is not initialized, always use mock implementation
  if (!AppConfigBase.isFirebaseInitialized) {
    logd('Firebase not initialized - using mock Remote Config');
    await _initFakeRemoteConfig(mergedDefaults);
    return;
  }

  // Use fake Remote Config when using backend emulator (unless overridden)
  if (AppConfigBase.doUseBackendEmulator && !AppConfigBase.doOverrideUseLiveRemoteConfig) {
    await _initFakeRemoteConfig(mergedDefaults);
  } else {
    await _initLiveRemoteConfig(mergedDefaults);
  }
}