feat: make deeplinks work for public course preview page (#5540)

This commit is contained in:
ggurdin 2026-01-30 13:29:26 -05:00 committed by GitHub
parent 671317d642
commit cf2148d9b6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 10 additions and 25 deletions

View file

@ -134,7 +134,7 @@
<meta-data
android:name="flutter_deeplinking_enabled"
android:value="true" />
android:value="false" />
</activity>
<activity

View file

@ -122,6 +122,6 @@
<key>io.flutter.embedded_views_preview</key>
<true/>
<key>FlutterDeepLinkingEnabled</key>
<true/>
<false/>
</dict>
</plist>

View file

@ -696,7 +696,6 @@ class ChatListController extends State<ChatList>
_roomCapacitySubscription?.cancel();
MatrixState.pangeaController.subscriptionController.subscriptionNotifier
.removeListener(_onSubscribe);
SpaceCodeController.codeNotifier.removeListener(_onCacheSpaceCode);
//Pangea#
scrollController.removeListener(_onScroll);
super.dispose();
@ -1108,14 +1107,8 @@ class ChatListController extends State<ChatList>
MatrixState.pangeaController.initControllers();
if (mounted) {
SpaceCodeController.joinCachedSpaceCode(context);
SpaceCodeController.codeNotifier.addListener(_onCacheSpaceCode);
}
}
void _onCacheSpaceCode() {
if (!mounted) return;
SpaceCodeController.joinCachedSpaceCode(context);
}
// Pangea#
void setActiveFilter(ActiveFilter filter) {

View file

@ -13,7 +13,6 @@ import 'package:fluffychat/l10n/l10n.dart';
import 'package:fluffychat/pangea/join_codes/knock_space_extension.dart';
import 'package:fluffychat/pangea/join_codes/space_code_repo.dart';
import 'package:fluffychat/pangea/join_codes/too_many_requests_dialog.dart';
import 'package:fluffychat/pangea/spaces/space_constants.dart';
import 'package:fluffychat/widgets/future_loading_dialog.dart';
import 'package:fluffychat/widgets/matrix.dart';
import '../common/controllers/base_controller.dart';
@ -21,18 +20,6 @@ import '../common/controllers/base_controller.dart';
class NotFoundException implements Exception {}
class SpaceCodeController extends BaseController {
static ValueNotifier<String?> codeNotifier = ValueNotifier<String?>(null);
static Future<void> onOpenAppViaUrl(Uri url) async {
if (url.fragment.isEmpty) return;
final fragment = Uri.parse(url.fragment);
final code = fragment.queryParameters[SpaceConstants.classCode];
if (code != null && fragment.path.contains('join_with_link')) {
await SpaceCodeRepo.setSpaceCode(code);
codeNotifier.value = code;
}
}
static Future<String?> joinCachedSpaceCode(BuildContext context) async {
final String? spaceCode = SpaceCodeRepo.spaceCode;
if (spaceCode == null) return null;

View file

@ -24,7 +24,6 @@ import 'package:fluffychat/pangea/analytics_data/analytics_data_service.dart';
import 'package:fluffychat/pangea/common/controllers/pangea_controller.dart';
import 'package:fluffychat/pangea/common/utils/any_state_holder.dart';
import 'package:fluffychat/pangea/common/utils/error_handler.dart';
import 'package:fluffychat/pangea/join_codes/space_code_controller.dart';
import 'package:fluffychat/pangea/languages/locale_provider.dart';
import 'package:fluffychat/pangea/user/style_settings_repo.dart';
import 'package:fluffychat/utils/client_manager.dart';
@ -680,8 +679,14 @@ class MatrixState extends State<Matrix> with WidgetsBindingObserver {
// #Pangea
Future<void> _processIncomingUris(Uri? uri) async {
if (uri == null) return;
await SpaceCodeController.onOpenAppViaUrl(uri);
if (uri == null || uri.fragment.isEmpty) return;
final path =
uri.fragment.startsWith('/') ? uri.fragment : '/${uri.fragment}';
WidgetsBinding.instance.addPostFrameCallback((_) {
FluffyChatApp.router.go(path);
});
}
// Pangea#
}