From ddb216b1fb5e086491dae8c940117dff24c7af3b Mon Sep 17 00:00:00 2001 From: Dev Date: Thu, 2 Apr 2026 12:05:27 +0200 Subject: [PATCH] feat(01-02): add Core models and WeakReferenceMessenger messages - TenantProfile (plain class, mutable, fields match JSON schema: Name/TenantUrl/ClientId) - OperationProgress (record with Indeterminate factory, used by all feature services via IProgress) - TenantSwitchedMessage (ValueChangedMessage, broadcast-ready) - LanguageChangedMessage (ValueChangedMessage, broadcast-ready) --- .../Core/Messages/LanguageChangedMessage.cs | 8 ++++++++ SharepointToolbox/Core/Messages/TenantSwitchedMessage.cs | 9 +++++++++ SharepointToolbox/Core/Models/OperationProgress.cs | 7 +++++++ SharepointToolbox/Core/Models/TenantProfile.cs | 8 ++++++++ 4 files changed, 32 insertions(+) create mode 100644 SharepointToolbox/Core/Messages/LanguageChangedMessage.cs create mode 100644 SharepointToolbox/Core/Messages/TenantSwitchedMessage.cs create mode 100644 SharepointToolbox/Core/Models/OperationProgress.cs create mode 100644 SharepointToolbox/Core/Models/TenantProfile.cs diff --git a/SharepointToolbox/Core/Messages/LanguageChangedMessage.cs b/SharepointToolbox/Core/Messages/LanguageChangedMessage.cs new file mode 100644 index 0000000..f32fd00 --- /dev/null +++ b/SharepointToolbox/Core/Messages/LanguageChangedMessage.cs @@ -0,0 +1,8 @@ +using CommunityToolkit.Mvvm.Messaging.Messages; + +namespace SharepointToolbox.Core.Messages; + +public sealed class LanguageChangedMessage : ValueChangedMessage +{ + public LanguageChangedMessage(string cultureCode) : base(cultureCode) { } +} diff --git a/SharepointToolbox/Core/Messages/TenantSwitchedMessage.cs b/SharepointToolbox/Core/Messages/TenantSwitchedMessage.cs new file mode 100644 index 0000000..81b1a2e --- /dev/null +++ b/SharepointToolbox/Core/Messages/TenantSwitchedMessage.cs @@ -0,0 +1,9 @@ +using CommunityToolkit.Mvvm.Messaging.Messages; +using SharepointToolbox.Core.Models; + +namespace SharepointToolbox.Core.Messages; + +public sealed class TenantSwitchedMessage : ValueChangedMessage +{ + public TenantSwitchedMessage(TenantProfile profile) : base(profile) { } +} diff --git a/SharepointToolbox/Core/Models/OperationProgress.cs b/SharepointToolbox/Core/Models/OperationProgress.cs new file mode 100644 index 0000000..d53b761 --- /dev/null +++ b/SharepointToolbox/Core/Models/OperationProgress.cs @@ -0,0 +1,7 @@ +namespace SharepointToolbox.Core.Models; + +public record OperationProgress(int Current, int Total, string Message) +{ + public static OperationProgress Indeterminate(string message) => + new(0, 0, message); +} diff --git a/SharepointToolbox/Core/Models/TenantProfile.cs b/SharepointToolbox/Core/Models/TenantProfile.cs new file mode 100644 index 0000000..eac90a1 --- /dev/null +++ b/SharepointToolbox/Core/Models/TenantProfile.cs @@ -0,0 +1,8 @@ +namespace SharepointToolbox.Core.Models; + +public class TenantProfile +{ + public string Name { get; set; } = string.Empty; + public string TenantUrl { get; set; } = string.Empty; + public string ClientId { get; set; } = string.Empty; +}