From 4fed8c6812ec5135e6b3d206ef210b617511ed5f Mon Sep 17 00:00:00 2001 From: mrFq1 <1xxbx0il0@mozmail.com> Date: Mon, 29 May 2023 23:19:11 +0800 Subject: [PATCH] feat: empty provider --- .../ContentTabs/Providers/ProvidersView.swift | 54 ++++++++++++------- 1 file changed, 35 insertions(+), 19 deletions(-) diff --git a/ClashX Dashboard/Views/ContentTabs/Providers/ProvidersView.swift b/ClashX Dashboard/Views/ContentTabs/Providers/ProvidersView.swift index 587096d..d4a2bc7 100644 --- a/ClashX Dashboard/Views/ContentTabs/Providers/ProvidersView.swift +++ b/ClashX Dashboard/Views/ContentTabs/Providers/ProvidersView.swift @@ -16,25 +16,7 @@ struct ProvidersView: View { var body: some View { NavigationView { - List { - Section("Providers") { - ProxyProvidersRowView(providerStorage: providerStorage) - RuleProvidersRowView(providerStorage: providerStorage) - } - - Text("") - - Section("Proxy Provider") { - ForEach(providerStorage.proxyProviders,id: \.id) { - ProviderRowView(proxyProvider: $0) - } - } - } - .introspectTableView { - $0.refusesFirstResponder = true - $0.doubleAction = nil - } - .listStyle(.plain) + listView EmptyView() } .searchable(text: $searchString.string) @@ -54,6 +36,40 @@ struct ProvidersView: View { } } + var listView: some View { + List { + if providerStorage.proxyProviders.isEmpty, + providerStorage.ruleProviders.isEmpty { + Text("Empty") + .padding() + } else { + Section("Providers") { + if !providerStorage.proxyProviders.isEmpty { + ProxyProvidersRowView(providerStorage: providerStorage) + } + if !providerStorage.ruleProviders.isEmpty { + RuleProvidersRowView(providerStorage: providerStorage) + } + } + } + + if !providerStorage.proxyProviders.isEmpty { + Text("") + + Section("Proxy Provider") { + ForEach(providerStorage.proxyProviders,id: \.id) { + ProviderRowView(proxyProvider: $0) + } + } + } + } + .introspectTableView { + $0.refusesFirstResponder = true + $0.doubleAction = nil + } + .listStyle(.plain) + } + func loadProviders() { ApiRequest.requestProxyProviderList { resp in providerStorage.proxyProviders = resp.allProviders.values.filter {