Skip to content

Commit 28e28f2

Browse files
committed
move news to chat since people were missing it, tag and pray
1 parent b4e66d6 commit 28e28f2

10 files changed

Lines changed: 140 additions & 75 deletions

File tree

Snowcloak.Core/Snowcloak.Core.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@
77
</PropertyGroup>
88

99
<ItemGroup>
10-
<PackageReference Include="ElezenTools.Core" Version="15.5.5" />
10+
<PackageReference Include="ElezenTools.Core" Version="15.5.7" />
1111
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.10" />
12-
<PackageReference Include="Snowcloak.API" Version="3.99.24" />
13-
<PackageReference Update="Meziantou.Analyzer" Version="3.0.124">
12+
<PackageReference Include="Snowcloak.API" Version="4.0.0" />
13+
<PackageReference Update="Meziantou.Analyzer" Version="3.0.134">
1414
<PrivateAssets>all</PrivateAssets>
1515
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1616
</PackageReference>
17-
<PackageReference Update="SonarAnalyzer.CSharp" Version="10.29.0.143774">
17+
<PackageReference Update="SonarAnalyzer.CSharp" Version="10.30.0.144632">
1818
<PrivateAssets>all</PrivateAssets>
1919
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2020
</PackageReference>

Snowcloak.Game/Snowcloak.Game.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515
<ItemGroup>
1616
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="10.0.10" />
1717
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.10" />
18-
<PackageReference Update="Meziantou.Analyzer" Version="3.0.124">
18+
<PackageReference Update="Meziantou.Analyzer" Version="3.0.134">
1919
<PrivateAssets>all</PrivateAssets>
2020
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2121
</PackageReference>
22-
<PackageReference Update="SonarAnalyzer.CSharp" Version="10.29.0.143774">
22+
<PackageReference Update="SonarAnalyzer.CSharp" Version="10.30.0.144632">
2323
<PrivateAssets>all</PrivateAssets>
2424
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2525
</PackageReference>

Snowcloak.Infrastructure/Snowcloak.Infrastructure.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@
1212
<ItemGroup>
1313
<PackageReference Include="Microsoft.Data.Sqlite" Version="10.0.10" />
1414
<!-- Transitive pin for CVE-2025-6965; see Snowcloak.csproj for details. -->
15-
<PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="3.0.4" />
15+
<PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="3.0.5" />
1616
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.10" />
17-
<PackageReference Include="Snowcloak.CacheFile" Version="3.2.2.1" />
18-
<PackageReference Update="Meziantou.Analyzer" Version="3.0.124">
17+
<PackageReference Include="Snowcloak.CacheFile" Version="4.0.0" />
18+
<PackageReference Update="Meziantou.Analyzer" Version="3.0.134">
1919
<PrivateAssets>all</PrivateAssets>
2020
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2121
</PackageReference>
22-
<PackageReference Update="SonarAnalyzer.CSharp" Version="10.29.0.143774">
22+
<PackageReference Update="SonarAnalyzer.CSharp" Version="10.30.0.144632">
2323
<PrivateAssets>all</PrivateAssets>
2424
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2525
</PackageReference>

Snowcloak/Initialization/CoreServiceRegistration.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ public static IServiceCollection AddSnowcloakCore(this IServiceCollection collec
4646
collection.AddSingleton<VisibilityService>();
4747
collection.AddSingleton<EventAggregator>();
4848
collection.AddSingleton<NotificationService>();
49+
collection.AddSingleton<ServerNewsChatService>();
4950
collection.AddSingleton<PluginWatcherService>();
5051
collection.AddSingleton<SyncTroubleshootingService>();
5152
collection.AddSingleton<PluginWarningNotificationService>();

Snowcloak/Initialization/HostedServiceRegistration.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public static IServiceCollection AddSnowcloakHostedServices(this IServiceCollect
2323
collection.AddHostedService(p => p.GetRequiredService<ConfigStore>());
2424
collection.AddHostedService(p => p.GetRequiredService<SnowMediator>());
2525
collection.AddHostedService(p => p.GetRequiredService<NotificationService>());
26+
collection.AddHostedService(p => p.GetRequiredService<ServerNewsChatService>());
2627
collection.AddHostedService(p => p.GetRequiredService<FileCacheManager>());
2728
collection.AddHostedService(p => p.GetRequiredService<FrameScheduler>());
2829
collection.AddHostedService(p => p.GetRequiredService<GameStateTracker>());

Snowcloak/Services/Mediator/Messages/Messages.Lifecycle.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public record GposeStartMessage : SameThreadMessage;
2020
public record GposeEndMessage : MessageBase;
2121
public record CutsceneEndMessage : MessageBase;
2222
public record ConnectedMessage(ConnectionDto Connection) : MessageBase;
23+
public record ServerNewsMessage(string News) : MessageBase;
2324
public record FileServerInfoReceivedMessage(ConnectionDto Connection) : MessageBase;
2425

2526
public record DisconnectedMessage : SameThreadMessage;
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
using Dalamud.Game.Text;
2+
using Dalamud.Plugin.Services;
3+
using Microsoft.Extensions.Hosting;
4+
using Microsoft.Extensions.Logging;
5+
using Snowcloak.Services.Mediator;
6+
7+
namespace Snowcloak.Services;
8+
9+
public sealed class ServerNewsChatService : DisposableMediatorSubscriberBase, IHostedService
10+
{
11+
private readonly IChatGui _chatGui;
12+
private string? _lastDisplayedNews;
13+
14+
public ServerNewsChatService(
15+
ILogger<ServerNewsChatService> logger,
16+
SnowMediator mediator,
17+
IChatGui chatGui)
18+
: base(logger, mediator)
19+
{
20+
_chatGui = chatGui;
21+
}
22+
23+
public Task StartAsync(CancellationToken cancellationToken)
24+
{
25+
cancellationToken.ThrowIfCancellationRequested();
26+
Mediator.Subscribe<ConnectedMessage>(this, message => PrintNews(message.Connection.News));
27+
Mediator.Subscribe<ServerNewsMessage>(this, message => PrintNews(message.News));
28+
Mediator.Subscribe<DalamudLogoutMessage>(this, _ => _lastDisplayedNews = null);
29+
return Task.CompletedTask;
30+
}
31+
32+
public Task StopAsync(CancellationToken cancellationToken)
33+
{
34+
UnsubscribeAll();
35+
return Task.CompletedTask;
36+
}
37+
38+
private void PrintNews(string? news)
39+
{
40+
if (string.IsNullOrWhiteSpace(news))
41+
return;
42+
43+
var normalised = news.Trim();
44+
if (string.Equals(_lastDisplayedNews, normalised, StringComparison.Ordinal))
45+
return;
46+
47+
_lastDisplayedNews = normalised;
48+
_chatGui.Print(new XivChatEntry
49+
{
50+
Message = "[Snowcloak News] " + normalised,
51+
Type = XivChatType.SystemMessage,
52+
});
53+
}
54+
}

Snowcloak/Snowcloak.csproj

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
<ItemGroup>
2020
<PackageReference Include="Blake3" Version="2.2.1" />
2121
<PackageReference Include="Brio.API" Version="3.0.1" />
22-
<PackageReference Include="ElezenTools" Version="15.5.6" />
23-
<PackageReference Include="ElezenTools.Core" Version="15.5.5" />
22+
<PackageReference Include="ElezenTools" Version="15.5.7" />
23+
<PackageReference Include="ElezenTools.Core" Version="15.5.7" />
2424
<PackageReference Include="Glamourer.Api" Version="2.8.2" />
2525
<PackageReference Include="K4os.Compression.LZ4.Legacy" Version="1.3.8" />
2626
<PackageReference Include="K4os.Compression.LZ4.Streams" Version="1.3.8" />
@@ -35,22 +35,22 @@
3535
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="10.0.10" />
3636
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="10.0.10" />
3737
<PackageReference Include="Microsoft.Data.Sqlite" Version="10.0.10" />
38-
<PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="3.0.4" />
38+
<PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="3.0.5" />
3939
<PackageReference Include="Microsoft.Extensions.Hosting" Version="10.0.10" />
4040
<PackageReference Include="NAudio" Version="2.3.0" />
4141
<PackageReference Include="Penumbra.Api" Version="5.15.1" />
4242
<PackageReference Include="Scrutor" Version="7.0.0" />
43-
<PackageReference Include="Snowcloak.API" Version="3.99.24" />
44-
<PackageReference Include="Snowcloak.CacheFile" Version="3.2.2.1" />
45-
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.20.0" />
43+
<PackageReference Include="Snowcloak.API" Version="4.0.0" />
44+
<PackageReference Include="Snowcloak.CacheFile" Version="4.0.0" />
45+
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.21.0" />
4646
<PackageReference Include="Vortice.DXGI" Version="3.8.3" />
4747
<PackageReference Include="ZstdSharp.Port" Version="0.8.8" />
48-
<PackageReference Update="Meziantou.Analyzer" Version="3.0.124">
48+
<PackageReference Update="Meziantou.Analyzer" Version="3.0.134">
4949
<PrivateAssets>all</PrivateAssets>
5050
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
5151
</PackageReference>
5252
<PackageReference Update="DotNet.ReproducibleBuilds" Version="2.0.5" />
53-
<PackageReference Update="SonarAnalyzer.CSharp" Version="10.29.0.143774">
53+
<PackageReference Update="SonarAnalyzer.CSharp" Version="10.30.0.144632">
5454
<PrivateAssets>all</PrivateAssets>
5555
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
5656
</PackageReference>

Snowcloak/WebAPI/SignalR/ApiController.Functions.Callbacks.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ public Task Client_ReceiveNews(string? news)
190190
if (!string.IsNullOrEmpty(normalizedNews))
191191
{
192192
SystemInfoDto = SystemInfoDto with { News = normalizedNews };
193+
PublishServerNews(normalizedNews);
193194
}
194195

195196
return Task.CompletedTask;
@@ -198,6 +199,7 @@ public Task Client_ReceiveNews(string? news)
198199
public Task Client_UpdateSystemInfo(SystemInfoDto systemInfo)
199200
{
200201
SystemInfoDto = systemInfo;
202+
PublishServerNews(systemInfo.News);
201203
return Task.CompletedTask;
202204
}
203205

@@ -206,6 +208,12 @@ public Task Client_UpdateSystemInfo(SystemInfoDto systemInfo)
206208
return string.IsNullOrWhiteSpace(news) ? null : news.Trim();
207209
}
208210

211+
private void PublishServerNews(string? news)
212+
{
213+
if (!string.IsNullOrWhiteSpace(news))
214+
Mediator.Publish(new ServerNewsMessage(news.Trim()));
215+
}
216+
209217
public Task Client_UserAddClientPair(UserPairDto dto)
210218
{
211219
Logger.LogDebug("Client_UserAddClientPair: {dto}", dto);

0 commit comments

Comments
 (0)