Hotfix 0.1.9.1 - Update API & Double notification & Update Penumbra API Ref

This commit is contained in:
2025-09-29 02:10:03 +02:00
parent fca730557e
commit 7706ef1fa7
9 changed files with 54 additions and 26 deletions

Submodule MareAPI updated: 3b175900c1...5fc7969adf

View File

@@ -5,6 +5,7 @@ using MareSynchronos.PlayerData.Services;
using MareSynchronos.Services; using MareSynchronos.Services;
using MareSynchronos.Services.Mediator; using MareSynchronos.Services.Mediator;
using MareSynchronos.Services.ServerConfiguration; using MareSynchronos.Services.ServerConfiguration;
using MareSynchronos.Interop;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
@@ -152,6 +153,7 @@ public class MarePlugin : MediatorSubscriberBase, IHostedService
_runtimeServiceScope.ServiceProvider.GetRequiredService<NotificationService>(); _runtimeServiceScope.ServiceProvider.GetRequiredService<NotificationService>();
_runtimeServiceScope.ServiceProvider.GetRequiredService<SyncDefaultsService>(); _runtimeServiceScope.ServiceProvider.GetRequiredService<SyncDefaultsService>();
_runtimeServiceScope.ServiceProvider.GetRequiredService<ChatService>(); _runtimeServiceScope.ServiceProvider.GetRequiredService<ChatService>();
_runtimeServiceScope.ServiceProvider.GetRequiredService<GameChatHooks>();
_runtimeServiceScope.ServiceProvider.GetRequiredService<GuiHookService>(); _runtimeServiceScope.ServiceProvider.GetRequiredService<GuiHookService>();
#if !DEBUG #if !DEBUG

View File

@@ -3,7 +3,7 @@
<PropertyGroup> <PropertyGroup>
<AssemblyName>UmbraSync</AssemblyName> <AssemblyName>UmbraSync</AssemblyName>
<RootNamespace>UmbraSync</RootNamespace> <RootNamespace>UmbraSync</RootNamespace>
<Version>0.1.9.0</Version> <Version>0.1.9.1</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@@ -117,7 +117,7 @@ public record NearbyDetectionToggled(bool Enabled) : MessageBase;
public record AllowPairRequestsToggled(bool Enabled) : MessageBase; public record AllowPairRequestsToggled(bool Enabled) : MessageBase;
public record ApplyDefaultPairPermissionsMessage(UserPairDto Pair) : MessageBase; public record ApplyDefaultPairPermissionsMessage(UserPairDto Pair) : MessageBase;
public record ApplyDefaultGroupPermissionsMessage(GroupPairFullInfoDto GroupPair) : MessageBase; public record ApplyDefaultGroupPermissionsMessage(GroupPairFullInfoDto GroupPair) : MessageBase;
public record ApplyDefaultsToAllSyncsMessage : MessageBase; public record ApplyDefaultsToAllSyncsMessage(string? Context = null, bool? Disabled = null) : MessageBase;
public record PairSyncOverrideChanged(string Uid, bool? DisableSounds, bool? DisableAnimations, bool? DisableVfx) : MessageBase; public record PairSyncOverrideChanged(string Uid, bool? DisableSounds, bool? DisableAnimations, bool? DisableVfx) : MessageBase;
public record GroupSyncOverrideChanged(string Gid, bool? DisableSounds, bool? DisableAnimations, bool? DisableVfx) : MessageBase; public record GroupSyncOverrideChanged(string Gid, bool? DisableSounds, bool? DisableAnimations, bool? DisableVfx) : MessageBase;

View File

@@ -33,7 +33,7 @@ public sealed class SyncDefaultsService : DisposableMediatorSubscriberBase
Mediator.Subscribe<ApplyDefaultPairPermissionsMessage>(this, OnApplyPairDefaults); Mediator.Subscribe<ApplyDefaultPairPermissionsMessage>(this, OnApplyPairDefaults);
Mediator.Subscribe<ApplyDefaultGroupPermissionsMessage>(this, OnApplyGroupDefaults); Mediator.Subscribe<ApplyDefaultGroupPermissionsMessage>(this, OnApplyGroupDefaults);
Mediator.Subscribe<ApplyDefaultsToAllSyncsMessage>(this, _ => ApplyDefaultsToAll()); Mediator.Subscribe<ApplyDefaultsToAllSyncsMessage>(this, msg => ApplyDefaultsToAll(msg));
Mediator.Subscribe<PairSyncOverrideChanged>(this, OnPairOverrideChanged); Mediator.Subscribe<PairSyncOverrideChanged>(this, OnPairOverrideChanged);
Mediator.Subscribe<GroupSyncOverrideChanged>(this, OnGroupOverrideChanged); Mediator.Subscribe<GroupSyncOverrideChanged>(this, OnGroupOverrideChanged);
} }
@@ -63,7 +63,7 @@ public sealed class SyncDefaultsService : DisposableMediatorSubscriberBase
_ = _apiController.GroupChangeIndividualPermissionState(new GroupPairUserPermissionDto(message.GroupPair.Group, message.GroupPair.User, permissions)); _ = _apiController.GroupChangeIndividualPermissionState(new GroupPairUserPermissionDto(message.GroupPair.Group, message.GroupPair.User, permissions));
} }
private async Task ApplyDefaultsToAllAsync() private async Task ApplyDefaultsToAllAsync(ApplyDefaultsToAllSyncsMessage message)
{ {
try try
{ {
@@ -107,7 +107,10 @@ public sealed class SyncDefaultsService : DisposableMediatorSubscriberBase
} }
} }
Mediator.Publish(new DualNotificationMessage("Préférences appliquées", BuildSummaryMessage(updatedPairs, updatedGroups), NotificationType.Info)); var summary = BuildSummaryMessage(updatedPairs, updatedGroups);
var primary = BuildPrimaryMessage(message);
var combined = string.IsNullOrEmpty(primary) ? summary : string.Concat(primary, ' ', summary);
Mediator.Publish(new DualNotificationMessage("Préférences appliquées", combined, NotificationType.Info));
} }
catch (Exception ex) catch (Exception ex)
{ {
@@ -116,7 +119,16 @@ public sealed class SyncDefaultsService : DisposableMediatorSubscriberBase
} }
} }
private void ApplyDefaultsToAll() => _ = ApplyDefaultsToAllAsync(); private void ApplyDefaultsToAll(ApplyDefaultsToAllSyncsMessage message) => _ = ApplyDefaultsToAllAsync(message);
private static string? BuildPrimaryMessage(ApplyDefaultsToAllSyncsMessage message)
{
if (string.IsNullOrEmpty(message.Context) || message.Disabled == null)
return null;
var state = message.Disabled.Value ? "désactivée" : "activée";
return $"Synchronisation {message.Context} par défaut {state}.";
}
private static string BuildSummaryMessage(int pairs, int groups) private static string BuildSummaryMessage(int pairs, int groups)
{ {

View File

@@ -169,11 +169,19 @@ public sealed class ChangelogUi : WindowMediatorSubscriberBase
{ {
return new List<ChangelogEntry> return new List<ChangelogEntry>
{ {
new(new Version(0, 1, 9, 1), "0.1.9.1", new List<ChangelogLine>
{
new("Début correctif pour la bulle de frappe."),
new("Les bascules de synchronisation n'affichent plus qu'une seule notification résumée."),
}),
new(new Version(0, 1, 9, 0), "0.1.9.0", new List<ChangelogLine> new(new Version(0, 1, 9, 0), "0.1.9.0", new List<ChangelogLine>
{ {
new("Il est désormais possible de configurer par défaut nos choix de synchronisation (VFX, Music, Animation)."), new("Il est désormais possible de configurer par défaut nos choix de synchronisation (VFX, Music, Animation)."),
new("La catégorie 'En attente' ne s'affice uniquement que si une invitation est en attente"), new("La catégorie 'En attente' ne s'affiche uniquement que si une invitation est en attente"),
new("(EN PRÉ VERSION) Il est désormais possible de voir quand une personne appairé est en train d'écrire avec une bulle qui s'affiche."), new("(EN PRÉ VERSION) Il est désormais possible de voir quand une personne appairée est en train d'écrire avec une bulle qui s'affiche."),
new("(EN PRÉ VERSION) La bulle de frappe s'affiche également sur votre propre plaque de nom lorsque vous écrivez."),
new("Les bascules de synchronisation n'affichent plus qu'une seule notification résumée."),
new("Correctif : Désormais, les invitation entrantes ne s'affichent qu'une seule fois au lieu de deux."), new("Correctif : Désormais, les invitation entrantes ne s'affichent qu'une seule fois au lieu de deux."),
}), }),
new(new Version(0, 1, 8, 2), "0.1.8.2", new List<ChangelogLine> new(new Version(0, 1, 8, 2), "0.1.8.2", new List<ChangelogLine>

View File

@@ -294,8 +294,7 @@ public class CompactUi : WindowMediatorSubscriberBase
{ {
_configService.Current.DefaultDisableSounds = state; _configService.Current.DefaultDisableSounds = state;
_configService.Save(); _configService.Save();
PublishSyncDefaultNotification(soundSubject, state); Mediator.Publish(new ApplyDefaultsToAllSyncsMessage(soundSubject, state));
Mediator.Publish(new ApplyDefaultsToAllSyncsMessage());
}, },
() => DisableStateTooltip(soundSubject, _configService.Current.DefaultDisableSounds)); () => DisableStateTooltip(soundSubject, _configService.Current.DefaultDisableSounds));
@@ -304,8 +303,7 @@ public class CompactUi : WindowMediatorSubscriberBase
{ {
_configService.Current.DefaultDisableAnimations = state; _configService.Current.DefaultDisableAnimations = state;
_configService.Save(); _configService.Save();
PublishSyncDefaultNotification(animSubject, state); Mediator.Publish(new ApplyDefaultsToAllSyncsMessage(animSubject, state));
Mediator.Publish(new ApplyDefaultsToAllSyncsMessage());
}, },
() => DisableStateTooltip(animSubject, _configService.Current.DefaultDisableAnimations), spacing); () => DisableStateTooltip(animSubject, _configService.Current.DefaultDisableAnimations), spacing);
@@ -314,8 +312,7 @@ public class CompactUi : WindowMediatorSubscriberBase
{ {
_configService.Current.DefaultDisableVfx = state; _configService.Current.DefaultDisableVfx = state;
_configService.Save(); _configService.Save();
PublishSyncDefaultNotification(vfxSubject, state); Mediator.Publish(new ApplyDefaultsToAllSyncsMessage(vfxSubject, state));
Mediator.Publish(new ApplyDefaultsToAllSyncsMessage());
}, },
() => DisableStateTooltip(vfxSubject, _configService.Current.DefaultDisableVfx), spacing); () => DisableStateTooltip(vfxSubject, _configService.Current.DefaultDisableVfx), spacing);
@@ -355,13 +352,6 @@ public class CompactUi : WindowMediatorSubscriberBase
return $"Synchronisation {context} par défaut : {state}.\nCliquez pour modifier."; return $"Synchronisation {context} par défaut : {state}.\nCliquez pour modifier.";
} }
private void PublishSyncDefaultNotification(string context, bool disabled)
{
var state = disabled ? "désactivée" : "activée";
var message = $"Synchronisation {context} par défaut {state}.";
Mediator.Publish(new DualNotificationMessage("Préférence de synchronisation", message, NotificationType.Info));
}
private void DrawAddCharacter() private void DrawAddCharacter()
{ {
ImGui.Dummy(new(10)); ImGui.Dummy(new(10));

View File

@@ -1086,7 +1086,9 @@ public class SettingsUi : WindowMediatorSubscriberBase
var useNameColors = _configService.Current.UseNameColors; var useNameColors = _configService.Current.UseNameColors;
var nameColors = _configService.Current.NameColors; var nameColors = _configService.Current.NameColors;
var autoPausedNameColors = _configService.Current.BlockedNameColors; var autoPausedNameColors = _configService.Current.BlockedNameColors;
if (ImGui.Checkbox("Color nameplates of paired players", ref useNameColors)) var typingIndicatorNameplates = _configService.Current.TypingIndicatorShowOnNameplates;
var typingIndicatorPartyList = _configService.Current.TypingIndicatorShowOnPartyList;
if (ImGui.Checkbox("Coloriser les plaques de nom des paires", ref useNameColors))
{ {
_configService.Current.UseNameColors = useNameColors; _configService.Current.UseNameColors = useNameColors;
_configService.Save(); _configService.Save();
@@ -1096,7 +1098,7 @@ public class SettingsUi : WindowMediatorSubscriberBase
using (ImRaii.Disabled(!useNameColors)) using (ImRaii.Disabled(!useNameColors))
{ {
using var indent = ImRaii.PushIndent(); using var indent = ImRaii.PushIndent();
if (InputDtrColors("Character Name Color", ref nameColors)) if (InputDtrColors("Couleur du nom", ref nameColors))
{ {
_configService.Current.NameColors = nameColors; _configService.Current.NameColors = nameColors;
_configService.Save(); _configService.Save();
@@ -1105,7 +1107,7 @@ public class SettingsUi : WindowMediatorSubscriberBase
ImGui.SameLine(); ImGui.SameLine();
if (InputDtrColors("Blocked Character Color", ref autoPausedNameColors)) if (InputDtrColors("Couleur des noms bloqués", ref autoPausedNameColors))
{ {
_configService.Current.BlockedNameColors = autoPausedNameColors; _configService.Current.BlockedNameColors = autoPausedNameColors;
_configService.Save(); _configService.Save();
@@ -1113,6 +1115,20 @@ public class SettingsUi : WindowMediatorSubscriberBase
} }
} }
if (ImGui.Checkbox("Afficher la bulle de frappe sur les plaques", ref typingIndicatorNameplates))
{
_configService.Current.TypingIndicatorShowOnNameplates = typingIndicatorNameplates;
_configService.Save();
}
_uiShared.DrawHelpText("Ajoute une bulle '...' sur la plaque des paires en train d'écrire.");
if (ImGui.Checkbox("Tracer la frappe dans la liste de groupe", ref typingIndicatorPartyList))
{
_configService.Current.TypingIndicatorShowOnPartyList = typingIndicatorPartyList;
_configService.Save();
}
_uiShared.DrawHelpText("Consigne dans les journaux quand une paire du groupe est en train d'écrire (bulle visuelle ultérieure).");
if (ImGui.Checkbox("Show separate Visible group", ref showVisibleSeparate)) if (ImGui.Checkbox("Show separate Visible group", ref showVisibleSeparate))
{ {
_configService.Current.ShowVisibleUsersSeparately = showVisibleSeparate; _configService.Current.ShowVisibleUsersSeparately = showVisibleSeparate;