fix notification click did not directly open the chats

This commit is contained in:
otsmr 2026-06-19 17:04:09 +02:00
parent 0007ba62a0
commit 26c9dc0066
4 changed files with 36 additions and 51 deletions

View file

@ -74,6 +74,7 @@ void main() async {
var storageError = await twonlyMinimumInitialization(); var storageError = await twonlyMinimumInitialization();
await FcmNotificationService.initStartup(); await FcmNotificationService.initStartup();
await setupPushNotification();
var userExists = false; var userExists = false;
@ -163,7 +164,6 @@ Future<void> postStartupTasks() async {
unawaited(MediaFileService.purgeTempFolder()); unawaited(MediaFileService.purgeTempFolder());
// 2. Service initializations // 2. Service initializations
unawaited(setupPushNotification());
unawaited(finishStartedPreprocessing()); unawaited(finishStartedPreprocessing());
unawaited(createPushAvatars()); unawaited(createPushAvatars());

View file

@ -159,6 +159,7 @@ Future<void> showLocalPushNotification(
ticker: 'You got a new message.', ticker: 'You got a new message.',
largeIcon: styleInformation, largeIcon: styleInformation,
icon: 'ic_launcher_foreground', icon: 'ic_launcher_foreground',
groupKey: 'com.twonly.messages',
); );
const darwinNotificationDetails = DarwinNotificationDetails(); const darwinNotificationDetails = DarwinNotificationDetails();
@ -190,44 +191,30 @@ Future<void> showLocalPushNotification(
notificationDetails, notificationDetails,
payload: payload, payload: payload,
); );
}
Future<void> showLocalPushNotificationWithoutUserId( if (Platform.isAndroid) {
PushNotification pushNotification, final summaryAndroidDetails = AndroidNotificationDetails(
) async {
final lang = getLocalizations();
var title = lang.notificationTitleUnknown;
var body = lang.notificationBodyUnknown;
if (pushNotification.kind == PushKind.CONTACT_REQUEST) {
title = lang.you;
body = lang.notificationContactRequestUnknownUser;
}
final androidNotificationDetails = AndroidNotificationDetails(
'0', '0',
lang.notificationCategoryMessageTitle, lang.notificationCategoryMessageTitle,
channelDescription: lang.notificationCategoryMessageDesc, channelDescription: lang.notificationCategoryMessageDesc,
importance: Importance.max, importance: Importance.max,
priority: Priority.max, priority: Priority.max,
ticker: 'You got a new message.', groupKey: 'com.twonly.messages',
setAsGroupSummary: true,
icon: 'ic_launcher_foreground',
); );
final summaryNotificationDetails = NotificationDetails(
const darwinNotificationDetails = DarwinNotificationDetails(); android: summaryAndroidDetails,
final notificationDetails = NotificationDetails(
android: androidNotificationDetails,
iOS: darwinNotificationDetails,
); );
await flutterLocalNotificationsPlugin.show( await flutterLocalNotificationsPlugin.show(
2, 0,
title, lang.notificationCategoryMessageTitle,
body, '',
notificationDetails, summaryNotificationDetails,
payload: pushNotification.kind.name, payload: Routes.chats,
); );
} }
}
Future<String?> getAvatarIcon(int contactId) async { Future<String?> getAvatarIcon(int contactId) async {
final avatarsDirectory = Directory('${AppEnvironment.cacheDir}/avatars'); final avatarsDirectory = Directory('${AppEnvironment.cacheDir}/avatars');

View file

@ -197,17 +197,15 @@ class MainCameraController {
if (!isVideoRecording) { if (!isVideoRecording) {
await cameraController?.stopImageStream(); await cameraController?.stopImageStream();
} }
} catch (e) {
Log.info(e);
}
if (cameraController == null) return; if (cameraController == null) return;
selectedCameraDetails.scaleFactor = 1; selectedCameraDetails.scaleFactor = 1;
await cameraController?.setZoomLevel(1); await cameraController?.setZoomLevel(1);
if (cameraController == null) return; if (cameraController == null) return;
await cameraController?.setDescription(AppEnvironment.cameras[cameraId]); await cameraController?.setDescription(
AppEnvironment.cameras[cameraId],
);
if (cameraController == null) return; if (cameraController == null) return;
try {
if (!isVideoRecording) { if (!isVideoRecording) {
await cameraController?.startImageStream(_processCameraImage); await cameraController?.startImageStream(_processCameraImage);
} }
@ -462,7 +460,10 @@ class MainCameraController {
scannedUrl = link; scannedUrl = link;
if (sharedLinkForPreview == null) { if (sharedLinkForPreview == null) {
timeSharedLinkWasSetWithQr = clock.now(); timeSharedLinkWasSetWithQr = clock.now();
setSharedLinkForPreview(Uri.parse(scannedUrl!), generatePreview: false); setSharedLinkForPreview(
Uri.parse(scannedUrl!),
generatePreview: false,
);
} }
} }
} }

View file

@ -156,13 +156,10 @@ class HomeViewState extends State<HomeView> with WidgetsBindingObserver {
payload.startsWith(Routes.chats) && payload.startsWith(Routes.chats) &&
payload != Routes.chats) { payload != Routes.chats) {
routerProvider.go(payload); routerProvider.go(payload);
streamHomeViewPageIndex.add(0);
} }
if (payload == Routes.chats) {
streamHomeViewPageIndex.add(0); streamHomeViewPageIndex.add(0);
} }
} }
}
final draftMedia = await twonlyDB.mediaFilesDao.getDraftMediaFile(); final draftMedia = await twonlyDB.mediaFilesDao.getDraftMediaFile();
if (draftMedia != null) { if (draftMedia != null) {