forceRefresh method

Future<void> forceRefresh()

Force an immediate refresh (bypassing rate limits) Use sparingly due to Firebase's 5 fetches/hour limit

Implementation

Future<void> forceRefresh() async {
  if (!kIsWeb) {
    logd('🚫 WebRemoteConfigRefreshService: Force refresh only available on web');
    return;
  }

  try {
    logd('🔥 WebRemoteConfigRefreshService: Force refresh requested...');

    final instance = FirebaseRemoteConfig.instance;

    // Temporarily set zero fetch interval
    await instance.setConfigSettings(
      RemoteConfigSettings(
        fetchTimeout: const Duration(seconds: 10),
        minimumFetchInterval: Duration.zero,
      ),
    );

    // Log before
    final beforeValue = instance.getString('minimumAppVersionRecommendedApple');

    // Force fetch
    final result = await instance.fetchAndActivate();

    // Log after
    final afterValue = instance.getString('minimumAppVersionRecommendedApple');

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

    if (result) {
      logd('✅ WebRemoteConfigRefreshService: Force refresh successful');
      if (beforeValue != afterValue) {
        logd('🎉 Values updated! Before: "$beforeValue" -> After: "$afterValue"');
        _notifyConfigUpdated();
      }
    } else {
      logd('⚠️ WebRemoteConfigRefreshService: Force refresh returned false');
    }
  } catch (e) {
    loge('❌ WebRemoteConfigRefreshService: Force refresh failed: $e');
  }
}