forceRefreshRemoteConfig function

Future<void> forceRefreshRemoteConfig()

Force refresh Remote Config values (useful for debugging) This bypasses the minimumFetchInterval by using fetchAndActivate with force

Implementation

Future<void> forceRefreshRemoteConfig() async {
  try {
    logd('🔥 Force refreshing Remote Config values...');

    // Log values before force refresh
    final beforeRecommended =
        FirebaseRemoteConfig.instance.getString('minimumAppVersionRecommendedApple');
    logv('📱 Value BEFORE force refresh - minimumAppVersionRecommendedApple: $beforeRecommended');

    // Set a very short fetch interval temporarily
    await FirebaseRemoteConfig.instance.setConfigSettings(
      RemoteConfigSettings(
        fetchTimeout: const Duration(seconds: 10),
        minimumFetchInterval: Duration.zero, // Allow immediate fetch
      ),
    );

    // Force fetch and activate
    final result = await FirebaseRemoteConfig.instance.fetchAndActivate();
    logv('🔥 Force refresh result: $result');

    // Log values after force refresh
    final afterRecommended =
        FirebaseRemoteConfig.instance.getString('minimumAppVersionRecommendedApple');
    logv('📱 Value AFTER force refresh - minimumAppVersionRecommendedApple: $afterRecommended');

    // Reset the fetch interval back to normal
    await FirebaseRemoteConfig.instance.setConfigSettings(
      RemoteConfigSettings(
        fetchTimeout: const Duration(seconds: 10),
        minimumFetchInterval: kDebugMode ? const Duration(seconds: 10) : const Duration(hours: 1),
      ),
    );

    if (beforeRecommended != afterRecommended) {
      logd('🎉 Remote Config values updated after force refresh!');
    } else {
      logv('ℹ️ Remote Config values unchanged after force refresh');
    }
  } on FirebaseException catch (e) {
    if (e.code == 'throttled' || e.message?.contains('throttled') == true) {
      logd('🚫 Force refresh throttled - you have hit Firebase\'s rate limit');
      logv('⏰ Wait before trying again, or restart the app to reset the counter');
    } else if (e.message?.contains('cannot parse response') == true) {
      logv('📝 Force refresh failed: Firebase Remote Config not set up in console');
      logv('ℹ️ This is normal - the app will continue with default values');
    } else {
      logd('⚠️ Firebase error during force refresh: ${e.code} - ${e.message}');
      logv('ℹ️ App continues with current values');
    }
  } catch (e) {
    logd('⚠️ Unexpected error during force refresh: $e');
    logv('ℹ️ App continues with current values');
  }
}