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 public bool ShowOnlineUsers
{ {
get; get
{
if (OnlineUsers.Count > 0)
{
return field;
}
else
{
return false;
}
}
set => this.RaiseAndSetIfChanged(ref field, value); set => this.RaiseAndSetIfChanged(ref field, value);
} }
@@ -74,6 +84,11 @@ public sealed class ChatViewModel : ViewModelBase
{ {
Composer = new MessageComposerViewModel(); Composer = new MessageComposerViewModel();
ToggleUsersPanelCommand = ReactiveCommand.Create(ToggleUsersPanel); ToggleUsersPanelCommand = ReactiveCommand.Create(ToggleUsersPanel);
OnlineUsers.CollectionChanged += (s, e) =>
{
this.RaisePropertyChanged(nameof(ShowOnlineUsers));
};
} }
public void SetChannel(ChannelViewModel? channel, string serverUrl = "", bool isServerConnected = true) public void SetChannel(ChannelViewModel? channel, string serverUrl = "", bool isServerConnected = true)
@@ -86,7 +101,6 @@ public sealed class ChatViewModel : ViewModelBase
HasTopic = false; HasTopic = false;
CurrentChannelName = string.Empty; CurrentChannelName = string.Empty;
CurrentServerUrl = string.Empty; CurrentServerUrl = string.Empty;
ShowOnlineUsers = false;
OnlineUsers.Clear(); OnlineUsers.Clear();
OnlineUserCount = string.Empty; OnlineUserCount = string.Empty;
Composer.SetServer(string.Empty, isServerConnected); Composer.SetServer(string.Empty, isServerConnected);
@@ -103,7 +117,6 @@ public sealed class ChatViewModel : ViewModelBase
if (!isServerConnected) if (!isServerConnected)
{ {
ShowOnlineUsers = false;
OnlineUsers.Clear(); OnlineUsers.Clear();
OnlineUserCount = string.Empty; OnlineUserCount = string.Empty;
} }
@@ -117,7 +130,6 @@ public sealed class ChatViewModel : ViewModelBase
OnlineUsers.Add(new UserViewModel(user)); OnlineUsers.Add(new UserViewModel(user));
} }
OnlineUserCount = $"{users.Count}"; OnlineUserCount = $"{users.Count}";
ShowOnlineUsers = true;
Composer.UpdateAvailableUsers(OnlineUsers); Composer.UpdateAvailableUsers(OnlineUsers);
} }
@@ -128,7 +140,6 @@ public sealed class ChatViewModel : ViewModelBase
OnlineUsers.Add(new UserViewModel(user)); OnlineUsers.Add(new UserViewModel(user));
OnlineUserCount = $"{OnlineUsers.Count}"; OnlineUserCount = $"{OnlineUsers.Count}";
} }
ShowOnlineUsers = OnlineUsers.Count > 0;
Composer.UpdateAvailableUsers(OnlineUsers); Composer.UpdateAvailableUsers(OnlineUsers);
} }
@@ -1128,7 +1128,6 @@ public sealed class MainWindowViewModel : ViewModelBase
Avalonia.Threading.Dispatcher.UIThread.Post(() => Avalonia.Threading.Dispatcher.UIThread.Post(() =>
{ {
Chat.OnlineUsers.Clear(); Chat.OnlineUsers.Clear();
Chat.ShowOnlineUsers = false;
Chat.OnlineUserCount = string.Empty; Chat.OnlineUserCount = string.Empty;
}); });
return; return;
@@ -1146,7 +1145,6 @@ public sealed class MainWindowViewModel : ViewModelBase
Avalonia.Threading.Dispatcher.UIThread.Post(() => Avalonia.Threading.Dispatcher.UIThread.Post(() =>
{ {
Chat.OnlineUsers.Clear(); Chat.OnlineUsers.Clear();
Chat.ShowOnlineUsers = false;
Chat.OnlineUserCount = string.Empty; Chat.OnlineUserCount = string.Empty;
}); });
return; return;