Moved streamlist logic to the service file

This commit is contained in:
Toastie (DCS Team) 2024-08-11 20:00:01 +12:00
parent 53b7ba640d
commit cd92577095
Signed by: toastie_t0ast
GPG key ID: 27F3B6855AFD40A4
2 changed files with 28 additions and 22 deletions

View file

@ -69,22 +69,7 @@ public partial class Searches
if (page-- < 1)
return;
var allStreams = new List<FollowedStream>();
await using (var uow = _db.GetDbContext())
{
var all = uow.GuildConfigsForId(ctx.Guild.Id, set => set.Include(gc => gc.FollowedStreams))
.FollowedStreams.OrderBy(x => x.Id)
.ToList();
for (var index = all.Count - 1; index >= 0; index--)
{
var fs = all[index];
if (((SocketGuild)ctx.Guild).GetTextChannel(fs.ChannelId) is null)
await _service.UnfollowStreamAsync(fs.GuildId, index);
else
allStreams.Insert(0, fs);
}
}
var allStreams = await _service.GetAllStreamsAsync((SocketGuild)ctx.Guild);
await Response()
.Paginated()

View file

@ -253,7 +253,7 @@ public sealed class StreamNotificationService : IEService, IReadyExecutor
{
var ch = _client.GetGuild(fs.GuildId)
?.GetTextChannel(fs.ChannelId);
if (ch is null)
return Task.CompletedTask;
@ -492,10 +492,10 @@ public sealed class StreamNotificationService : IEService, IReadyExecutor
public EmbedBuilder GetEmbed(ulong guildId, StreamData status, bool showViewers = true)
{
var embed = _sender.CreateEmbed()
.WithTitle(status.Name)
.WithUrl(status.StreamUrl)
.WithDescription(status.StreamUrl)
.AddField(GetText(guildId, strs.status), status.IsLive ? "🟢 Online" : "🔴 Offline", true);
.WithTitle(status.Name)
.WithUrl(status.StreamUrl)
.WithDescription(status.StreamUrl)
.AddField(GetText(guildId, strs.status), status.IsLive ? "🟢 Online" : "🔴 Offline", true);
if (showViewers)
{
@ -625,7 +625,7 @@ public sealed class StreamNotificationService : IEService, IReadyExecutor
all.ForEach(x => x.Message = message);
uow.SaveChanges();
lock (_shardLock)
{
foreach (var fs in all)
@ -647,4 +647,25 @@ public sealed class StreamNotificationService : IEService, IReadyExecutor
public StreamDataKey Key { get; init; }
public ulong GuildId { get; init; }
}
public async Task<List<FollowedStream>> GetAllStreamsAsync(SocketGuild guild)
{
var allStreams = new List<FollowedStream>();
await using var uow = _db.GetDbContext();
var all = uow.GuildConfigsForId(guild.Id, set => set.Include(gc => gc.FollowedStreams))
.FollowedStreams
.OrderBy(x => x.Id)
.ToList();
for (var index = all.Count - 1; index >= 0; index--)
{
var fs = all[index];
if (guild.GetTextChannel(fs.ChannelId) is null)
await UnfollowStreamAsync(fs.GuildId, index);
else
allStreams.Insert(0, fs);
}
return allStreams;
}
}