From 44b56b04daf3c2f59d02405ec6a3852ec4270ce5 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Tue, 25 Mar 2025 11:15:16 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=20TriggerThemeCh?= =?UTF-8?q?anged=20=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/DefaultThemeProvider.cs | 16 +++++++++++----- src/BootstrapBlazor/Services/IThemeProvider.cs | 5 +++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/BootstrapBlazor/Services/DefaultThemeProvider.cs b/src/BootstrapBlazor/Services/DefaultThemeProvider.cs index 397a7b4800a..9e1b80baf6c 100644 --- a/src/BootstrapBlazor/Services/DefaultThemeProvider.cs +++ b/src/BootstrapBlazor/Services/DefaultThemeProvider.cs @@ -20,11 +20,6 @@ public async ValueTask SetThemeAsync(string themeName) { var module = await jsRuntime.LoadUtility(); await module.SetThemeAsync(themeName); - - if (ThemeChangedAsync is not null) - { - await ThemeChangedAsync(themeName); - } } /// @@ -35,4 +30,15 @@ public async ValueTask SetThemeAsync(string themeName) var module = await jsRuntime.LoadUtility(); return await module.GetThemeAsync(); } + + /// + /// + /// + public void TriggerThemeChanged() + { + if (ThemeChangedAsync is not null) + { + ThemeChangedAsync(string.Empty); + } + } } diff --git a/src/BootstrapBlazor/Services/IThemeProvider.cs b/src/BootstrapBlazor/Services/IThemeProvider.cs index 070c9040cdb..987e724dd42 100644 --- a/src/BootstrapBlazor/Services/IThemeProvider.cs +++ b/src/BootstrapBlazor/Services/IThemeProvider.cs @@ -27,4 +27,9 @@ public interface IThemeProvider /// The callback when theme changed /// Func? ThemeChangedAsync { get; set; } + + /// + /// Trigger the theme changed event + /// + void TriggerThemeChanged(); } From 826e5e26fa2b5f0da4396a780b13dbf1a18cf5d5 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Tue, 25 Mar 2025 11:22:36 +0800 Subject: [PATCH 2/3] =?UTF-8?q?refactor:=20=E5=AE=9E=E7=8E=B0=20TriggerThe?= =?UTF-8?q?meChanged=20=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BootstrapBlazor/Services/DefaultThemeProvider.cs | 7 ++----- src/BootstrapBlazor/Services/IThemeProvider.cs | 3 ++- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/BootstrapBlazor/Services/DefaultThemeProvider.cs b/src/BootstrapBlazor/Services/DefaultThemeProvider.cs index 9e1b80baf6c..18007dbc13d 100644 --- a/src/BootstrapBlazor/Services/DefaultThemeProvider.cs +++ b/src/BootstrapBlazor/Services/DefaultThemeProvider.cs @@ -34,11 +34,8 @@ public async ValueTask SetThemeAsync(string themeName) /// /// /// - public void TriggerThemeChanged() + public void TriggerThemeChanged(string themeName) { - if (ThemeChangedAsync is not null) - { - ThemeChangedAsync(string.Empty); - } + ThemeChangedAsync?.Invoke(themeName); } } diff --git a/src/BootstrapBlazor/Services/IThemeProvider.cs b/src/BootstrapBlazor/Services/IThemeProvider.cs index 987e724dd42..2592815770b 100644 --- a/src/BootstrapBlazor/Services/IThemeProvider.cs +++ b/src/BootstrapBlazor/Services/IThemeProvider.cs @@ -31,5 +31,6 @@ public interface IThemeProvider /// /// Trigger the theme changed event /// - void TriggerThemeChanged(); + /// The name of the theme to set. + void TriggerThemeChanged(string themeName); } From 0fe8fd047efb7051a14d37ffe0b85f8b7be7676b Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Tue, 25 Mar 2025 11:48:50 +0800 Subject: [PATCH 3/3] =?UTF-8?q?test:=20=E6=9B=B4=E6=96=B0=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/UnitTest/Services/ThemeProviderTest.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/UnitTest/Services/ThemeProviderTest.cs b/test/UnitTest/Services/ThemeProviderTest.cs index 0f09ed404db..98201c1b6bf 100644 --- a/test/UnitTest/Services/ThemeProviderTest.cs +++ b/test/UnitTest/Services/ThemeProviderTest.cs @@ -12,12 +12,15 @@ public async Task SetTheme_Ok() { var themeName = ""; var themeProviderService = Context.Services.GetRequiredService(); + themeProviderService.TriggerThemeChanged("light"); + themeProviderService.ThemeChangedAsync = async theme => { themeName = theme; await Task.CompletedTask; }; await themeProviderService.SetThemeAsync("light"); + themeProviderService.TriggerThemeChanged("light"); Assert.Equal("light", themeName); }