From 26c9dc0066ec1e5bbaae160842c850e2a32a4d92 Mon Sep 17 00:00:00 2001 From: otsmr Date: Fri, 19 Jun 2026 17:04:09 +0200 Subject: [PATCH] fix notification click did not directly open the chats --- lib/main.dart | 2 +- .../background.notifications.dart | 57 +++++++------------ .../main_camera_controller.dart | 23 ++++---- lib/src/visual/views/home.view.dart | 5 +- 4 files changed, 36 insertions(+), 51 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index ea7a244c..70fb9229 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -74,6 +74,7 @@ void main() async { var storageError = await twonlyMinimumInitialization(); await FcmNotificationService.initStartup(); + await setupPushNotification(); var userExists = false; @@ -163,7 +164,6 @@ Future postStartupTasks() async { unawaited(MediaFileService.purgeTempFolder()); // 2. Service initializations - unawaited(setupPushNotification()); unawaited(finishStartedPreprocessing()); unawaited(createPushAvatars()); diff --git a/lib/src/services/notifications/background.notifications.dart b/lib/src/services/notifications/background.notifications.dart index fcf5afa7..b4912175 100644 --- a/lib/src/services/notifications/background.notifications.dart +++ b/lib/src/services/notifications/background.notifications.dart @@ -159,6 +159,7 @@ Future showLocalPushNotification( ticker: 'You got a new message.', largeIcon: styleInformation, icon: 'ic_launcher_foreground', + groupKey: 'com.twonly.messages', ); const darwinNotificationDetails = DarwinNotificationDetails(); @@ -190,43 +191,29 @@ Future showLocalPushNotification( notificationDetails, payload: payload, ); -} -Future showLocalPushNotificationWithoutUserId( - PushNotification pushNotification, -) async { - final lang = getLocalizations(); - - var title = lang.notificationTitleUnknown; - var body = lang.notificationBodyUnknown; - - if (pushNotification.kind == PushKind.CONTACT_REQUEST) { - title = lang.you; - body = lang.notificationContactRequestUnknownUser; + if (Platform.isAndroid) { + final summaryAndroidDetails = AndroidNotificationDetails( + '0', + lang.notificationCategoryMessageTitle, + channelDescription: lang.notificationCategoryMessageDesc, + importance: Importance.max, + priority: Priority.max, + groupKey: 'com.twonly.messages', + setAsGroupSummary: true, + icon: 'ic_launcher_foreground', + ); + final summaryNotificationDetails = NotificationDetails( + android: summaryAndroidDetails, + ); + await flutterLocalNotificationsPlugin.show( + 0, + lang.notificationCategoryMessageTitle, + '', + summaryNotificationDetails, + payload: Routes.chats, + ); } - - final androidNotificationDetails = AndroidNotificationDetails( - '0', - lang.notificationCategoryMessageTitle, - channelDescription: lang.notificationCategoryMessageDesc, - importance: Importance.max, - priority: Priority.max, - ticker: 'You got a new message.', - ); - - const darwinNotificationDetails = DarwinNotificationDetails(); - final notificationDetails = NotificationDetails( - android: androidNotificationDetails, - iOS: darwinNotificationDetails, - ); - - await flutterLocalNotificationsPlugin.show( - 2, - title, - body, - notificationDetails, - payload: pushNotification.kind.name, - ); } Future getAvatarIcon(int contactId) async { diff --git a/lib/src/visual/views/camera/camera_preview_components/main_camera_controller.dart b/lib/src/visual/views/camera/camera_preview_components/main_camera_controller.dart index 02f5dab0..3c12a7cd 100644 --- a/lib/src/visual/views/camera/camera_preview_components/main_camera_controller.dart +++ b/lib/src/visual/views/camera/camera_preview_components/main_camera_controller.dart @@ -197,17 +197,15 @@ class MainCameraController { if (!isVideoRecording) { await cameraController?.stopImageStream(); } - } catch (e) { - Log.info(e); - } - if (cameraController == null) return; - selectedCameraDetails.scaleFactor = 1; + if (cameraController == null) return; + selectedCameraDetails.scaleFactor = 1; - await cameraController?.setZoomLevel(1); - if (cameraController == null) return; - await cameraController?.setDescription(AppEnvironment.cameras[cameraId]); - if (cameraController == null) return; - try { + await cameraController?.setZoomLevel(1); + if (cameraController == null) return; + await cameraController?.setDescription( + AppEnvironment.cameras[cameraId], + ); + if (cameraController == null) return; if (!isVideoRecording) { await cameraController?.startImageStream(_processCameraImage); } @@ -462,7 +460,10 @@ class MainCameraController { scannedUrl = link; if (sharedLinkForPreview == null) { timeSharedLinkWasSetWithQr = clock.now(); - setSharedLinkForPreview(Uri.parse(scannedUrl!), generatePreview: false); + setSharedLinkForPreview( + Uri.parse(scannedUrl!), + generatePreview: false, + ); } } } diff --git a/lib/src/visual/views/home.view.dart b/lib/src/visual/views/home.view.dart index f9426e38..b5d69826 100644 --- a/lib/src/visual/views/home.view.dart +++ b/lib/src/visual/views/home.view.dart @@ -156,11 +156,8 @@ class HomeViewState extends State with WidgetsBindingObserver { payload.startsWith(Routes.chats) && payload != Routes.chats) { routerProvider.go(payload); - streamHomeViewPageIndex.add(0); - } - if (payload == Routes.chats) { - streamHomeViewPageIndex.add(0); } + streamHomeViewPageIndex.add(0); } }