diff --git a/packages/neon/neon/lib/src/app.dart b/packages/neon/neon/lib/src/app.dart index 7a32d29f..ce8f91fa 100644 --- a/packages/neon/neon/lib/src/app.dart +++ b/packages/neon/neon/lib/src/app.dart @@ -113,34 +113,39 @@ class _NeonAppState extends State with WidgetsBindingObserver, tray.Tra if (account == null) { return; } - final app = Provider.of>(context, listen: false).find('notifications'); - if (app != null) { - await _accountsBloc.getAppsBlocFor(account).getAppBloc(app).refresh(); - } - }; - Global.onPushNotificationClicked = (final pushNotificationWithAccountID) async { + final allAppImplementations = Provider.of>(context, listen: false); + final app = allAppImplementations.find('notifications') as NotificationsAppInterface?; - final app = (pushNotificationWithAccountID.subject.app != null - ? allAppImplementations.find(pushNotificationWithAccountID.subject.app!) - : null) ?? - allAppImplementations.find('notifications'); + if (app == null) { + return; + } + await _accountsBloc.getAppsBlocFor(account).getAppBloc(app).refresh(); + }; + Global.onPushNotificationClicked = (final pushNotificationWithAccountID) async { final account = _accountsBloc.accounts.value.find(pushNotificationWithAccountID.accountID); if (account == null) { return; } - _accountsBloc.setActiveAccount(account); - if (app != null) { - if (app.id != 'notifications') { - _accountsBloc - .getAppsBlocFor(account) - .getAppBloc(app) - .deleteNotification(pushNotificationWithAccountID.subject.nid!); - } - await _openAppFromExternal(account, app.id); + + final allAppImplementations = Provider.of>(context, listen: false); + + final notificationsApp = allAppImplementations.find('notifications') as NotificationsAppInterface?; + if (notificationsApp != null) { + _accountsBloc + .getAppsBlocFor(account) + .getAppBloc(notificationsApp) + .deleteNotification(pushNotificationWithAccountID.subject.nid!); } + + final app = allAppImplementations.find(pushNotificationWithAccountID.subject.app!) ?? notificationsApp; + if (app == null) { + return; + } + + await _openAppFromExternal(account, app.id); }; final details = await localNotificationsPlugin.getNotificationAppLaunchDetails();