Add progress to fetching channels step (#1131)

pull/1138/head
Adam Slatinský 1 year ago committed by GitHub
parent c5e426289f
commit ad2dab2157
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,5 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.IO.Compression; using System.IO.Compression;
using System.Linq;
using System.Text.Json; using System.Text.Json;
using System.Threading.Tasks; using System.Threading.Tasks;
using CliFx.Attributes; using CliFx.Attributes;
@ -12,6 +13,7 @@ using DiscordChatExporter.Core.Discord;
using DiscordChatExporter.Core.Discord.Data; using DiscordChatExporter.Core.Discord.Data;
using DiscordChatExporter.Core.Exceptions; using DiscordChatExporter.Core.Exceptions;
using JsonExtensions.Reading; using JsonExtensions.Reading;
using Spectre.Console;
namespace DiscordChatExporter.Cli.Commands; namespace DiscordChatExporter.Cli.Commands;
@ -51,10 +53,10 @@ public class ExportAllCommand : ExportCommandBase
// Pull from the API // Pull from the API
if (string.IsNullOrWhiteSpace(DataPackageFilePath)) if (string.IsNullOrWhiteSpace(DataPackageFilePath))
{ {
await console.Output.WriteLineAsync("Fetching channels...");
await foreach (var guild in Discord.GetUserGuildsAsync(cancellationToken)) await foreach (var guild in Discord.GetUserGuildsAsync(cancellationToken))
{ {
await console.Output.WriteLineAsync($"Fetching channels for guild '{guild.Name}'...");
// Regular channels // Regular channels
await foreach ( await foreach (
var channel in Discord.GetGuildChannelsAsync(guild.Id, cancellationToken) var channel in Discord.GetGuildChannelsAsync(guild.Id, cancellationToken)
@ -69,21 +71,38 @@ public class ExportAllCommand : ExportCommandBase
channels.Add(channel); channels.Add(channel);
} }
await console.Output.WriteLineAsync($" Found {channels.Count} channels.");
// Threads // Threads
if (ThreadInclusionMode != ThreadInclusionMode.None) if (ThreadInclusionMode != ThreadInclusionMode.None)
{ {
await foreach ( AnsiConsole.MarkupLine("Fetching threads...");
var thread in Discord.GetGuildThreadsAsync( await AnsiConsole
guild.Id, .Status()
ThreadInclusionMode == ThreadInclusionMode.All, .StartAsync(
Before, "Found 0 threads.",
After, async ctx =>
cancellationToken {
) await foreach (
) var thread in Discord.GetGuildThreadsAsync(
{ guild.Id,
channels.Add(thread); ThreadInclusionMode == ThreadInclusionMode.All,
} Before,
After,
cancellationToken
)
)
{
channels.Add(thread);
ctx.Status(
$"Found {channels.Count(channel => channel.IsThread)} threads: {thread.GetHierarchicalName()}"
);
}
}
);
await console.Output.WriteLineAsync(
$" Found {channels.Count(channel => channel.IsThread)} threads."
);
} }
} }
} }

@ -1,4 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using CliFx.Attributes; using CliFx.Attributes;
using CliFx.Infrastructure; using CliFx.Infrastructure;
@ -7,6 +8,7 @@ using DiscordChatExporter.Cli.Commands.Converters;
using DiscordChatExporter.Cli.Commands.Shared; using DiscordChatExporter.Cli.Commands.Shared;
using DiscordChatExporter.Core.Discord; using DiscordChatExporter.Core.Discord;
using DiscordChatExporter.Core.Discord.Data; using DiscordChatExporter.Core.Discord.Data;
using Spectre.Console;
namespace DiscordChatExporter.Cli.Commands; namespace DiscordChatExporter.Cli.Commands;
@ -47,21 +49,38 @@ public class ExportGuildCommand : ExportCommandBase
channels.Add(channel); channels.Add(channel);
} }
await console.Output.WriteLineAsync($" Found {channels.Count} channels.");
// Threads // Threads
if (ThreadInclusionMode != ThreadInclusionMode.None) if (ThreadInclusionMode != ThreadInclusionMode.None)
{ {
await foreach ( AnsiConsole.MarkupLine("Fetching threads...");
var thread in Discord.GetGuildThreadsAsync( await AnsiConsole
GuildId, .Status()
ThreadInclusionMode == ThreadInclusionMode.All, .StartAsync(
Before, "Found 0 threads.",
After, async ctx =>
cancellationToken {
) await foreach (
) var thread in Discord.GetGuildThreadsAsync(
{ GuildId,
channels.Add(thread); ThreadInclusionMode == ThreadInclusionMode.All,
} Before,
After,
cancellationToken
)
)
{
channels.Add(thread);
ctx.Status(
$"Found {channels.Count(channel => channel.IsThread)} threads: {thread.GetHierarchicalName()}"
);
}
}
);
await console.Output.WriteLineAsync(
$" Found {channels.Count(channel => channel.IsThread)} threads."
);
} }
await ExportAsync(console, channels); await ExportAsync(console, channels);

Loading…
Cancel
Save