Merge branch 'main' into 'main'

fix: Quick account switching

Closes #1186

See merge request famedly/fluffychat!1111
This commit is contained in:
Krille 2023-05-08 13:26:59 +00:00
commit 64821e4ec5
1 changed files with 7 additions and 3 deletions

View File

@ -76,7 +76,7 @@ class ChatPageWithRoom extends StatefulWidget {
}
class ChatController extends State<ChatPageWithRoom> {
Room get room => widget.room;
Room get room => sendingClient.getRoomById(roomId) ?? widget.room;
late Client sendingClient;
@ -368,7 +368,7 @@ class ChatController extends State<ChatPageWithRoom> {
TextEditingController sendController = TextEditingController();
void setSendingClient(Client c) {
// first cancle typing with the old sending client
// first cancel typing with the old sending client
if (currentlyTyping) {
// no need to have the setting typing to false be blocking
typingCoolDown?.cancel();
@ -376,6 +376,10 @@ class ChatController extends State<ChatPageWithRoom> {
room.setTyping(false);
currentlyTyping = false;
}
// then cancel the old timeline
// fixes bug with read reciepts and quick switching
loadTimelineFuture = _getTimeline(eventContextId: room.fullyRead);
// then set the new sending client
setState(() => sendingClient = c);
}
@ -393,7 +397,7 @@ class ChatController extends State<ChatPageWithRoom> {
final commandMatch = RegExp(r'^\/(\w+)').firstMatch(sendController.text);
if (commandMatch != null &&
!room.client.commands.keys.contains(commandMatch[1]!.toLowerCase())) {
!sendingClient.commands.keys.contains(commandMatch[1]!.toLowerCase())) {
final l10n = L10n.of(context)!;
final dialogResult = await showOkCancelAlertDialog(
context: context,