Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 16 additions & 10 deletions mobile-app/lib/providers/remote_config_provider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:quantus_sdk/quantus_sdk.dart';
import 'package:resonance_network_wallet/firebase_options.dart';
import 'package:resonance_network_wallet/services/remote_config_service.dart';
import 'package:resonance_network_wallet/services/firebase_messaging_service.dart';
import 'package:resonance_network_wallet/services/telemetry_service.dart';
import 'package:resonance_network_wallet/shared/utils/print.dart';

final remoteConfigServiceProvider = Provider<RemoteConfigService>((ref) {
Expand Down Expand Up @@ -60,16 +61,21 @@ class RemoteConfigNotifier extends StateNotifier<RemoteConfigModel> {
if (_isEnablingRemoteNotifications) return;
_isEnablingRemoteNotifications = true;

// If Firebase wasn't initialized at startup (because cached flags were false),
// do it now.
if (Firebase.apps.isEmpty) {
await Firebase.initializeApp(options: DefaultFirebaseOptions.getOptionsForEnvironment());
}

final fcmService = ref.read(firebaseMessagingServiceProvider);
await fcmService.init(); // This requests notification permission.
fcmService.setupNotificationTapHandlers();
try {
// If Firebase wasn't initialized at startup (because cached flags were false),
// do it now.
if (Firebase.apps.isEmpty) {
await Firebase.initializeApp(options: DefaultFirebaseOptions.getOptionsForEnvironment());
}

_isEnablingRemoteNotifications = false;
final fcmService = ref.read(firebaseMessagingServiceProvider);
await fcmService.init(); // This requests notification permission.
fcmService.setupNotificationTapHandlers();
} catch (e, st) {
quantusDebugPrint('Failed to enable remote notifications: $e');
TelemetryService().sendError('fcm_enable_remote_notifications_failed', error: e, stackTrace: st);
} finally {
_isEnablingRemoteNotifications = false;
}
}
}
11 changes: 9 additions & 2 deletions mobile-app/lib/services/firebase_messaging_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,15 @@ class FirebaseMessagingService {

/// Returns the cached FCM device token, fetching from Firebase if not yet available.
Future<String?> getDeviceToken() async {
_cachedToken ??= await _messaging.getToken();
quantusDebugPrint('FCM token: $_cachedToken');
if (_cachedToken != null) return _cachedToken;

try {
_cachedToken = await _messaging.getToken();
quantusDebugPrint('FCM token: $_cachedToken');
} catch (e, st) {
quantusDebugPrint('Failed to get FCM device token: $e');
TelemetryService().sendError('fcm_get_device_token_failed', error: e, stackTrace: st);
}

return _cachedToken;
}
Expand Down
Loading