Add rudimentary thread support in GUI

Related to #1119
pull/1125/head
Tyrrrz 1 year ago
parent c29de2c77c
commit c410e745b1

@ -16,6 +16,10 @@ public partial class SettingsService : SettingsBase
public bool IsTokenPersisted { get; set; } = true;
public bool ShouldShowThreads { get; set; }
public bool ShouldShowArchivedThreads { get; set; }
public string DateFormat { get; set; } = "MM/dd/yyyy h:mm tt";
public int ParallelLimit { get; set; } = 1;

@ -89,11 +89,8 @@ public class DashboardViewModel : PropertyChangedBase
Token = _settingsService.LastToken;
}
public async ValueTask ShowSettingsAsync()
{
var dialog = _viewModelFactory.CreateSettingsViewModel();
await _dialogManager.ShowDialogAsync(dialog);
}
public async ValueTask ShowSettingsAsync() =>
await _dialogManager.ShowDialogAsync(_viewModelFactory.CreateSettingsViewModel());
public void ShowHelp() => ProcessEx.StartShellExecute(App.DocumentationUrl);
@ -165,6 +162,7 @@ public class DashboardViewModel : PropertyChangedBase
var channels = new List<Channel>();
// Regular channels
await foreach (var channel in _discord.GetGuildChannelsAsync(SelectedGuild.Id))
{
if (channel.Kind == ChannelKind.GuildCategory)
@ -173,6 +171,17 @@ public class DashboardViewModel : PropertyChangedBase
channels.Add(channel);
}
// Threads
if (_settingsService.ShouldShowThreads)
{
await foreach (var thread in _discord.GetGuildThreadsAsync(
SelectedGuild.Id,
_settingsService.ShouldShowArchivedThreads))
{
channels.Add(thread);
}
}
AvailableChannels = channels;
SelectedChannels = null;
}

@ -26,6 +26,18 @@ public class SettingsViewModel : DialogScreen
set => _settingsService.IsTokenPersisted = value;
}
public bool ShouldShowThreads
{
get => _settingsService.ShouldShowThreads;
set => _settingsService.ShouldShowThreads = value;
}
public bool ShouldShowArchivedThreads
{
get => _settingsService.ShouldShowArchivedThreads;
set => _settingsService.ShouldShowArchivedThreads = value;
}
public string DateFormat
{
get => _settingsService.DateFormat;

@ -304,7 +304,7 @@
<ListBox
HorizontalContentAlignment="Stretch"
SelectionMode="Extended"
TextSearch.TextPath="Model.Name"
TextSearch.TextPath="Name"
VirtualizingPanel.IsVirtualizingWhenGrouping="True">
<b:Interaction.Behaviors>
<behaviors:ChannelMultiSelectionListBoxBehavior SelectedItems="{Binding SelectedChannels}" />

@ -82,6 +82,38 @@
IsChecked="{Binding IsTokenPersisted}" />
</DockPanel>
<!-- Show threads -->
<DockPanel
Margin="16,8"
Background="Transparent"
LastChildFill="False"
ToolTip="Pull threads and show them in the channel list">
<TextBlock
VerticalAlignment="Center"
DockPanel.Dock="Left"
Text="Show threads" />
<ToggleButton
VerticalAlignment="Center"
DockPanel.Dock="Right"
IsChecked="{Binding ShouldShowThreads}" />
</DockPanel>
<!-- Show archived threads -->
<DockPanel
Margin="16,8"
Background="Transparent"
LastChildFill="False"
ToolTip="Pull archived threads and show them in the channel list">
<TextBlock
VerticalAlignment="Center"
DockPanel.Dock="Left"
Text="Show archived threads" />
<ToggleButton
VerticalAlignment="Center"
DockPanel.Dock="Right"
IsChecked="{Binding ShouldShowArchivedThreads}" />
</DockPanel>
<!-- Date format -->
<DockPanel
Margin="16,8"

Loading…
Cancel
Save