diff --git a/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Model/GlobalNavigationNodeDto.cs b/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Model/GlobalNavigationNodeDto.cs index f337b8a..add5902 100644 --- a/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Model/GlobalNavigationNodeDto.cs +++ b/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Model/GlobalNavigationNodeDto.cs @@ -19,6 +19,8 @@ public class GlobalNavigationNodeDto public string Url { get; set; } = string.Empty; + public string MatchPattern { get; set; } = string.Empty; + public string Icon { get; set; } = string.Empty; public bool IsHidden { get; set; } diff --git a/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Service/IGlobalNavService.cs b/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Service/IGlobalNavService.cs index 6de76d7..97ec4bf 100644 --- a/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Service/IGlobalNavService.cs +++ b/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Service/IGlobalNavService.cs @@ -7,5 +7,7 @@ public interface IGlobalNavService { Task> GetGlobalNavigationsByClientIdAsync(string clientId); + Task> GetMenusByPmIdentityAsync(string pmIdentity); + Task> GetVisibleAppEntriesByClientIdAsync(string clientId); } diff --git a/src/Contrib.Wasm/Masa.Contrib.StackSdks.Sapp.Wasm/Service/GlobalNavService.cs b/src/Contrib.Wasm/Masa.Contrib.StackSdks.Sapp.Wasm/Service/GlobalNavService.cs index ac6e6dd..962c8c7 100644 --- a/src/Contrib.Wasm/Masa.Contrib.StackSdks.Sapp.Wasm/Service/GlobalNavService.cs +++ b/src/Contrib.Wasm/Masa.Contrib.StackSdks.Sapp.Wasm/Service/GlobalNavService.cs @@ -21,6 +21,13 @@ public async Task> GetGlobalNavigationsByClientIdAs return result ?? new(); } + public async Task> GetMenusByPmIdentityAsync(string pmIdentity) + { + var requestUri = $"{GLOBAL_NAV_ROUTE_PREFIX}/menus/by-pm-identity/{pmIdentity}"; + var result = await _caller.GetAsync>(requestUri); + return result ?? new(); + } + public async Task> GetVisibleAppEntriesByClientIdAsync(string clientId) { var requestUri = $"{GLOBAL_NAV_ROUTE_PREFIX}/app-entries/by-client-id/{clientId}"; diff --git a/src/Contrib/Masa.Contrib.StackSdks.Sapp/Service/GlobalNavService.cs b/src/Contrib/Masa.Contrib.StackSdks.Sapp/Service/GlobalNavService.cs index ac6e6dd..962c8c7 100644 --- a/src/Contrib/Masa.Contrib.StackSdks.Sapp/Service/GlobalNavService.cs +++ b/src/Contrib/Masa.Contrib.StackSdks.Sapp/Service/GlobalNavService.cs @@ -21,6 +21,13 @@ public async Task> GetGlobalNavigationsByClientIdAs return result ?? new(); } + public async Task> GetMenusByPmIdentityAsync(string pmIdentity) + { + var requestUri = $"{GLOBAL_NAV_ROUTE_PREFIX}/menus/by-pm-identity/{pmIdentity}"; + var result = await _caller.GetAsync>(requestUri); + return result ?? new(); + } + public async Task> GetVisibleAppEntriesByClientIdAsync(string clientId) { var requestUri = $"{GLOBAL_NAV_ROUTE_PREFIX}/app-entries/by-client-id/{clientId}"; diff --git a/src/Contrib/Tests/Masa.Contrib.StackSdks.Sapp.Tests/GlobalNavServiceTest.cs b/src/Contrib/Tests/Masa.Contrib.StackSdks.Sapp.Tests/GlobalNavServiceTest.cs index 77129c6..f443fbb 100644 --- a/src/Contrib/Tests/Masa.Contrib.StackSdks.Sapp.Tests/GlobalNavServiceTest.cs +++ b/src/Contrib/Tests/Masa.Contrib.StackSdks.Sapp.Tests/GlobalNavServiceTest.cs @@ -73,4 +73,38 @@ public async Task TestGetVisibleAppEntriesByClientIdWhenNullAsync(string clientI Assert.AreEqual(0, result.Count); } + + [TestMethod] + [DataRow("pm.identity")] + public async Task TestGetMenusByPmIdentityAsync(string pmIdentity) + { + var data = new List { new() }; + + var requestUri = $"api/global-nav/menus/by-pm-identity/{pmIdentity}"; + var caller = new Mock(); + caller.Setup(provider => provider.GetAsync>(requestUri, default)).ReturnsAsync(data).Verifiable(); + var sappClient = new SappClient(caller.Object); + + var result = await sappClient.GlobalNavService.GetMenusByPmIdentityAsync(pmIdentity); + caller.Verify(provider => provider.GetAsync>(requestUri, default), Times.Once); + + Assert.AreEqual(1, result.Count); + } + + [TestMethod] + [DataRow("pm.identity")] + public async Task TestGetMenusByPmIdentityWhenNullAsync(string pmIdentity) + { + List? data = null; + + var requestUri = $"api/global-nav/menus/by-pm-identity/{pmIdentity}"; + var caller = new Mock(); + caller.Setup(provider => provider.GetAsync>(It.IsAny(), default)).ReturnsAsync(data).Verifiable(); + var sappClient = new SappClient(caller.Object); + + var result = await sappClient.GlobalNavService.GetMenusByPmIdentityAsync(pmIdentity); + caller.Verify(provider => provider.GetAsync>(requestUri, default), Times.Once); + + Assert.AreEqual(0, result.Count); + } }