fix: jump cannot work properly when there are multi users

This commit is contained in:
ShootingStarDragons 2025-11-18 23:59:36 +09:00
parent ccb2a23075
commit 940d3e62db
4 changed files with 17 additions and 2 deletions

View file

@ -415,6 +415,7 @@ class ChatListController extends State<ChatList>
);
});
Matrix.of(context).setController(this);
super.initState();
}
@ -815,6 +816,14 @@ class ChatListController extends State<ChatList>
_clientStream.add(client);
}
void setActiveClientWithUserId(String name) {
setState(() {
activeFilter = ActiveFilter.allChats;
_activeSpaceId = null;
Matrix.of(context).setActiveClientWithUserId(name);
});
}
void setActiveBundle(String bundle) {
context.go('/rooms');
setState(() {

View file

@ -147,8 +147,8 @@ extension LocalNotificationsExtension on MatrixState {
);
break;
case DesktopNotificationActions.openChat:
if (userId != null) {
Matrix.of(context).setActiveClientWithUserId(userId);
if (userId != null && controller != null) {
controller!.setActiveClientWithUserId(userId);
}
FluffyChatApp.router.go('/rooms/${event.room.id}');

View file

@ -1,6 +1,7 @@
import 'dart:async';
import 'dart:convert';
import 'package:fluffychat/pages/chat_list/chat_list.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
@ -70,6 +71,7 @@ class MatrixState extends State<Matrix> with WidgetsBindingObserver {
bool? loginRegistrationSupported;
BackgroundPush? backgroundPush;
ChatListController? controller;
Client get client {
if (_activeClient < 0 || _activeClient >= widget.clients.length) {
@ -100,6 +102,9 @@ class MatrixState extends State<Matrix> with WidgetsBindingObserver {
Logs().w('Tried to set an unknown user $userId as active');
}
}
void setController(ChatListController controller) {
this.controller = controller;
}
void setActiveClient(Client? cl) {
final i = widget.clients.indexWhere((c) => c == cl);

View file

@ -42,6 +42,7 @@ endif()
# default. In most cases, you should add new options to specific targets instead
# of modifying this function.
function(APPLY_STANDARD_SETTINGS TARGET)
target_compile_options(${TARGET} PRIVATE -Wno-deprecated)
target_compile_features(${TARGET} PUBLIC cxx_std_14)
target_compile_options(${TARGET} PRIVATE -Wall -Werror)
target_compile_options(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:-O3>")