chore: update activity session notification to open activity start page without joining activity (#4122)

This commit is contained in:
ggurdin 2025-09-25 09:11:25 -04:00 committed by GitHub
parent 89bb560347
commit 533ebc991e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 9 additions and 11 deletions

View file

@ -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,

View file

@ -390,6 +390,7 @@ class ActivitySessionStartController extends State<ActivitySessionStartPage>
),
"msgtype": "m.text",
"pangea.activity.session_room_id": activityRoom!.id,
"pangea.activity.id": widget.activityId,
},
);

View file

@ -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<void> _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});