From b68c62693f472aa59b221835d7ffa93d4b570649 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Fri, 10 Apr 2026 16:48:00 +0200 Subject: [PATCH] Replace `GetAcceptanceHash` with `AcceptanceHash` property --- .../Components/MandatoryInfoDisplay.razor.cs | 2 +- .../Dialogs/MandatoryInfoDialog.razor | 2 +- app/MindWork AI Studio/Layout/MainLayout.razor.cs | 4 ++-- .../Settings/DataModel/DataMandatoryInfo.cs | 15 ++++++++++++--- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/app/MindWork AI Studio/Components/MandatoryInfoDisplay.razor.cs b/app/MindWork AI Studio/Components/MandatoryInfoDisplay.razor.cs index a9d97cde..a8a7664e 100644 --- a/app/MindWork AI Studio/Components/MandatoryInfoDisplay.razor.cs +++ b/app/MindWork AI Studio/Components/MandatoryInfoDisplay.razor.cs @@ -33,7 +33,7 @@ public partial class MandatoryInfoDisplay if (!string.Equals(this.Acceptance.AcceptedVersion, this.Info.VersionText, StringComparison.Ordinal)) return MandatoryInfoAcceptanceStatus.VERSION_CHANGED; - if (!string.Equals(this.Acceptance.AcceptedHash, this.Info.GetAcceptanceHash(), StringComparison.Ordinal)) + if (!string.Equals(this.Acceptance.AcceptedHash, this.Info.AcceptanceHash, StringComparison.Ordinal)) return MandatoryInfoAcceptanceStatus.CONTENT_CHANGED; return MandatoryInfoAcceptanceStatus.ACCEPTED; diff --git a/app/MindWork AI Studio/Dialogs/MandatoryInfoDialog.razor b/app/MindWork AI Studio/Dialogs/MandatoryInfoDialog.razor index 7ac306bd..bfd16fe3 100644 --- a/app/MindWork AI Studio/Dialogs/MandatoryInfoDialog.razor +++ b/app/MindWork AI Studio/Dialogs/MandatoryInfoDialog.razor @@ -3,7 +3,7 @@
- +
diff --git a/app/MindWork AI Studio/Layout/MainLayout.razor.cs b/app/MindWork AI Studio/Layout/MainLayout.razor.cs index 3d8d6b2a..d56ec0a9 100644 --- a/app/MindWork AI Studio/Layout/MainLayout.razor.cs +++ b/app/MindWork AI Studio/Layout/MainLayout.razor.cs @@ -418,7 +418,7 @@ public partial class MainLayout : LayoutComponentBase, IMessageBusReceiver, ILan .Where(info => { var acceptance = this.SettingsManager.ConfigurationData.MandatoryInformation.FindAcceptance(info.Id); - return acceptance is null || !string.Equals(acceptance.AcceptedHash, info.GetAcceptanceHash(), StringComparison.Ordinal); + return acceptance is null || !string.Equals(acceptance.AcceptedHash, info.AcceptanceHash, StringComparison.Ordinal); }); } @@ -441,7 +441,7 @@ public partial class MainLayout : LayoutComponentBase, IMessageBusReceiver, ILan { InfoId = info.Id, AcceptedVersion = info.VersionText, - AcceptedHash = info.GetAcceptanceHash(), + AcceptedHash = info.AcceptanceHash, AcceptedAtUtc = DateTimeOffset.UtcNow, EnterpriseConfigurationPluginId = info.EnterpriseConfigurationPluginId, }; diff --git a/app/MindWork AI Studio/Settings/DataModel/DataMandatoryInfo.cs b/app/MindWork AI Studio/Settings/DataModel/DataMandatoryInfo.cs index a633e2d3..638ba6d8 100644 --- a/app/MindWork AI Studio/Settings/DataModel/DataMandatoryInfo.cs +++ b/app/MindWork AI Studio/Settings/DataModel/DataMandatoryInfo.cs @@ -45,10 +45,17 @@ public sealed record DataMandatoryInfo /// public string RejectButtonText { get; private init; } = string.Empty; - public string GetAcceptanceHash() + /// + /// The current hash used to determine whether the user needs to re-accept the info. + /// + public string AcceptanceHash { get; private init; } = string.Empty; + + private static string CreateAcceptanceHash(string versionText, string title, string markdown) { - var content = $"Version:{this.VersionText}\nTitle:{this.Title}\nMarkdown:{this.Markdown}"; - var hash = SHA256.HashData(Encoding.UTF8.GetBytes(content)); + var content = $"Version:{versionText}\nTitle:{title}\nMarkdown:{markdown}"; + var bytes = Encoding.UTF8.GetBytes(content); + var hash = SHA256.HashData(bytes); + return Convert.ToHexString(hash); } @@ -92,6 +99,7 @@ public sealed record DataMandatoryInfo } var normalizedMarkdown = AIStudio.Tools.Markdown.RemoveSharedIndentation(markdown); + var acceptanceHash = CreateAcceptanceHash(versionText, title, normalizedMarkdown); mandatoryInfo = new DataMandatoryInfo { Id = id.ToString(), @@ -101,6 +109,7 @@ public sealed record DataMandatoryInfo AcceptButtonText = acceptButtonText, RejectButtonText = rejectButtonText, EnterpriseConfigurationPluginId = configPluginId, + AcceptanceHash = acceptanceHash, }; return true;