diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index 599e1b6f2..72de063d9 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -41,7 +41,6 @@ import '../../widgets/matrix.dart'; import 'package:fluffychat/utils/tor_stub.dart' if (dart.library.html) 'package:tor_detector_web/tor_detector_web.dart'; - enum PopupMenuAction { settings, invite, diff --git a/lib/pangea/activity_sessions/activity_session_start/activity_session_start_page.dart b/lib/pangea/activity_sessions/activity_session_start/activity_session_start_page.dart index a0150413d..320d77b15 100644 --- a/lib/pangea/activity_sessions/activity_session_start/activity_session_start_page.dart +++ b/lib/pangea/activity_sessions/activity_session_start/activity_session_start_page.dart @@ -390,6 +390,7 @@ class ActivitySessionStartController extends State ), "msgtype": "m.text", "pangea.activity.session_room_id": activityRoom!.id, + "pangea.activity.id": widget.activityId, }, ); diff --git a/lib/utils/background_push.dart b/lib/utils/background_push.dart index b0d1da8c5..57e333a2b 100644 --- a/lib/utils/background_push.dart +++ b/lib/utils/background_push.dart @@ -24,7 +24,6 @@ import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:collection/collection.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:flutter_new_badger/flutter_new_badger.dart'; @@ -140,6 +139,7 @@ class BackgroundPush { // #Pangea Future _onOpenNotification(RemoteMessage? message) async { const sessionIdKey = "content_pangea.activity.session_room_id"; + const activityIdKey = "content_pangea.activity.id"; // Early return if no room_id. final roomId = message?.data['room_id']; @@ -160,7 +160,11 @@ class BackgroundPush { // Handle session room if provided. final sessionRoomId = message?.data[sessionIdKey]; - if (sessionRoomId is String && sessionRoomId.isNotEmpty) { + final activityId = message?.data[activityIdKey]; + if (sessionRoomId is String && + sessionRoomId.isNotEmpty && + activityId is String && + activityId.isNotEmpty) { try { final course = await ensureRoomLoaded(roomId); if (course == null) return; @@ -171,15 +175,9 @@ class BackgroundPush { return; } - await client.joinRoom( - sessionRoomId, - via: course.spaceChildren - .firstWhereOrNull((child) => child.roomId == sessionRoomId) - ?.via, + FluffyChatApp.router.go( + '/rooms/spaces/$roomId/activity/$activityId?roomid=$sessionRoomId', ); - - await ensureRoomLoaded(sessionRoomId); - FluffyChatApp.router.go('/rooms/$sessionRoomId'); return; } catch (err, s) { ErrorHandler.logError(e: err, s: s, data: {"roomId": sessionRoomId});