From 876ed06a9761810adf994247fb915946555b5db9 Mon Sep 17 00:00:00 2001 From: cschlaefke Date: Sun, 19 Jul 2026 15:43:02 +0200 Subject: [PATCH] =?UTF-8?q?Fix:=20flutter=5Ftimezone=205.x=20liefert=20Tim?= =?UTF-8?q?ezoneInfo-Objekt=20=E2=80=93=20identifier=20speichern=20statt?= =?UTF-8?q?=20Objekt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Der Firestore-Write warf zur Laufzeit eine Exception (nicht serialisierbares Objekt), wodurch auch der FCM-Token nie gespeichert wurde. Fehler bei der Push-Registrierung werden jetzt geloggt statt verschluckt. Co-Authored-By: Claude Fable 5 --- .../data/push_registration_service.dart | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/features/notifications/data/push_registration_service.dart b/lib/features/notifications/data/push_registration_service.dart index 208330f..114226c 100644 --- a/lib/features/notifications/data/push_registration_service.dart +++ b/lib/features/notifications/data/push_registration_service.dart @@ -49,7 +49,9 @@ class FirebasePushRegistrationService implements PushRegistrationService { final timezone = await FlutterTimezone.getLocalTimezone(); await _firestore.collection('users').doc(uid).set({ 'fcmTokens': FieldValue.arrayUnion([token]), - 'timezone': timezone, + // IANA-Kennung, z. B. "Europe/Berlin" – das Objekt selbst ist nicht + // Firestore-serialisierbar. + 'timezone': timezone.identifier, }, SetOptions(merge: true)); } @@ -78,6 +80,12 @@ final pushRegistrationServiceProvider = Provider((ref) final pushSetupProvider = Provider((ref) { final user = ref.watch(authStateProvider).value; if (user != null) { - ref.read(pushRegistrationServiceProvider).registerDevice(user); + ref.read(pushRegistrationServiceProvider).registerDevice(user).catchError( + (Object error, StackTrace stack) { + // Bewusst nur loggen: Push-Registrierung darf den App-Start nie + // blockieren, aber Fehler müssen im Log sichtbar sein. + debugPrint('Push-Registrierung fehlgeschlagen: $error'); + }, + ); } });