feat: implement full FCM token cleanup on logout by deleting both remote and local tokens
This commit is contained in:
@@ -254,16 +254,26 @@ class PushNotificationService {
|
||||
_dispatchTap(Map<String, dynamic>.from(message.data));
|
||||
}
|
||||
|
||||
/// Unregister FCM token from backend (call on logout).
|
||||
/// Unregister FCM token from backend and delete locally (call on logout).
|
||||
Future<void> unregister() async {
|
||||
if (_currentToken == null) return;
|
||||
try {
|
||||
await _repo.removeFcmToken(_currentToken!);
|
||||
debugPrint('[FCM] Token unregistered from backend');
|
||||
} catch (e) {
|
||||
debugPrint('[FCM] Failed to unregister token: $e');
|
||||
// Remove from backend so it stops sending push to this device
|
||||
if (_currentToken != null) {
|
||||
try {
|
||||
await _repo.removeFcmToken(_currentToken!);
|
||||
debugPrint('[FCM] Token unregistered from backend');
|
||||
} catch (e) {
|
||||
debugPrint('[FCM] Failed to unregister token: $e');
|
||||
}
|
||||
}
|
||||
_currentToken = null;
|
||||
|
||||
// Delete the local FCM token so Firebase stops delivering notifications
|
||||
try {
|
||||
await _messaging?.deleteToken();
|
||||
debugPrint('[FCM] Local FCM token deleted');
|
||||
} catch (e) {
|
||||
debugPrint('[FCM] Failed to delete local token: $e');
|
||||
}
|
||||
}
|
||||
|
||||
/// Re-register token after login.
|
||||
|
||||
Reference in New Issue
Block a user