Make sure online users panel stays closed when switching channels

This commit is contained in:
Stone_Red
2026-07-19 20:17:48 +02:00
parent 7fab3543eb
commit f1eee397b5
3 changed files with 17 additions and 8 deletions
+16 -5
View File
@@ -41,7 +41,17 @@ public sealed class ChatViewModel : ViewModelBase
public bool ShowOnlineUsers
{
get;
get
{
if (OnlineUsers.Count > 0)
{
return field;
}
else
{
return false;
}
}
set => this.RaiseAndSetIfChanged(ref field, value);
}
@@ -74,6 +84,11 @@ public sealed class ChatViewModel : ViewModelBase
{
Composer = new MessageComposerViewModel();
ToggleUsersPanelCommand = ReactiveCommand.Create(ToggleUsersPanel);
OnlineUsers.CollectionChanged += (s, e) =>
{
this.RaisePropertyChanged(nameof(ShowOnlineUsers));
};
}
public void SetChannel(ChannelViewModel? channel, string serverUrl = "", bool isServerConnected = true)
@@ -86,7 +101,6 @@ public sealed class ChatViewModel : ViewModelBase
HasTopic = false;
CurrentChannelName = string.Empty;
CurrentServerUrl = string.Empty;
ShowOnlineUsers = false;
OnlineUsers.Clear();
OnlineUserCount = string.Empty;
Composer.SetServer(string.Empty, isServerConnected);
@@ -103,7 +117,6 @@ public sealed class ChatViewModel : ViewModelBase
if (!isServerConnected)
{
ShowOnlineUsers = false;
OnlineUsers.Clear();
OnlineUserCount = string.Empty;
}
@@ -117,7 +130,6 @@ public sealed class ChatViewModel : ViewModelBase
OnlineUsers.Add(new UserViewModel(user));
}
OnlineUserCount = $"{users.Count}";
ShowOnlineUsers = true;
Composer.UpdateAvailableUsers(OnlineUsers);
}
@@ -128,7 +140,6 @@ public sealed class ChatViewModel : ViewModelBase
OnlineUsers.Add(new UserViewModel(user));
OnlineUserCount = $"{OnlineUsers.Count}";
}
ShowOnlineUsers = OnlineUsers.Count > 0;
Composer.UpdateAvailableUsers(OnlineUsers);
}
@@ -1128,7 +1128,6 @@ public sealed class MainWindowViewModel : ViewModelBase
Avalonia.Threading.Dispatcher.UIThread.Post(() =>
{
Chat.OnlineUsers.Clear();
Chat.ShowOnlineUsers = false;
Chat.OnlineUserCount = string.Empty;
});
return;
@@ -1146,7 +1145,6 @@ public sealed class MainWindowViewModel : ViewModelBase
Avalonia.Threading.Dispatcher.UIThread.Post(() =>
{
Chat.OnlineUsers.Clear();
Chat.ShowOnlineUsers = false;
Chat.OnlineUserCount = string.Empty;
});
return;