diff --git a/BTCPayServer/Controllers/AppsController.cs b/BTCPayServer/Controllers/AppsController.cs index 0d8e649d7..f4b65e8c9 100644 --- a/BTCPayServer/Controllers/AppsController.cs +++ b/BTCPayServer/Controllers/AppsController.cs @@ -73,6 +73,8 @@ namespace BTCPayServer.Controllers return app.StoreName; case nameof(app.AppType): return app.AppType; + case nameof(app.ViewStyle): + return app.ViewStyle; default: return app.Id; } diff --git a/BTCPayServer/Models/AppViewModels/ListAppsViewModel.cs b/BTCPayServer/Models/AppViewModels/ListAppsViewModel.cs index b7b3d61a2..ee9d0287d 100644 --- a/BTCPayServer/Models/AppViewModels/ListAppsViewModel.cs +++ b/BTCPayServer/Models/AppViewModels/ListAppsViewModel.cs @@ -9,6 +9,7 @@ namespace BTCPayServer.Models.AppViewModels public string StoreId { get; set; } public string AppName { get; set; } public string AppType { get; set; } + public string ViewStyle { get; set; } public bool IsOwner { get; set; } public string UpdateAction { get { return "Update" + AppType; } } diff --git a/BTCPayServer/Services/Apps/AppService.cs b/BTCPayServer/Services/Apps/AppService.cs index 3ca2af0b2..6cc37a929 100644 --- a/BTCPayServer/Services/Apps/AppService.cs +++ b/BTCPayServer/Services/Apps/AppService.cs @@ -5,6 +5,7 @@ using System.IO; using System.Linq; using System.Threading.Tasks; using BTCPayServer.Client.Models; +using BTCPayServer.Controllers; using BTCPayServer.Data; using BTCPayServer.Models.AppViewModels; using BTCPayServer.Payments; @@ -232,7 +233,7 @@ namespace BTCPayServer.Services.Apps { using (var ctx = _ContextFactory.CreateContext()) { - return await ctx.UserStore + var listApps = await ctx.UserStore .Where(us => (allowNoUser && string.IsNullOrEmpty(userId) || us.ApplicationUserId == userId) && (storeId == null || us.StoreDataId == storeId)) @@ -248,8 +249,39 @@ namespace BTCPayServer.Services.Apps Id = app.Id }) .ToArrayAsync(); + + foreach (ListAppsViewModel.ListAppViewModel app in listApps) + { + app.ViewStyle = await GetAppViewStyleAsync(app.Id, app.AppType); + } + + return listApps; } } + + public async Task GetAppViewStyleAsync(string appId, string appType) + { + AppType appTypeEnum = Enum.Parse(appType); + AppData appData = await GetApp(appId, appTypeEnum, false); + var settings = appData.GetSettings(); + + string style; + switch (appTypeEnum) + { + case AppType.PointOfSale: + string posViewStyle = (settings.EnableShoppingCart ? PosViewType.Cart : settings.DefaultView).ToString(); + style = typeof(PosViewType).DisplayName(posViewStyle); + break; + case AppType.Crowdfund: + style = string.Empty; + break; + default: + style = string.Empty; + break; + } + + return style; + } public async Task> GetApps(string[] appIds, bool includeStore = false) { diff --git a/BTCPayServer/Views/Apps/ListApps.cshtml b/BTCPayServer/Views/Apps/ListApps.cshtml index 68323adcc..0b57d020b 100644 --- a/BTCPayServer/Views/Apps/ListApps.cshtml +++ b/BTCPayServer/Views/Apps/ListApps.cshtml @@ -5,6 +5,7 @@ var storeNameSortOrder = (string)ViewData["StoreNameSortOrder"]; var appNameSortOrder = (string)ViewData["AppNameSortOrder"]; var appTypeSortOrder = (string)ViewData["AppTypeSortOrder"]; + var viewStyleSortOrder = (string)ViewData["ViewStyleSortOrder"]; var sortByDesc = "Sort by descending..."; var sortByAsc = "Sort by ascending..."; } @@ -68,6 +69,18 @@ + + + View Style + + + Actions @@ -87,6 +100,7 @@ @app.AppName @typeof(AppType).DisplayName(app.AppType) + @app.ViewStyle @if (app.IsOwner) {