diff --git a/ClashX Dashboard Kit/Sources/ClashX Dashboard Kit/DashboardViewContoller.swift b/ClashX Dashboard Kit/Sources/ClashX Dashboard Kit/DashboardViewContoller.swift index 71ca5fd..b7af820 100644 --- a/ClashX Dashboard Kit/Sources/ClashX Dashboard Kit/DashboardViewContoller.swift +++ b/ClashX Dashboard Kit/Sources/ClashX Dashboard Kit/DashboardViewContoller.swift @@ -32,6 +32,10 @@ public class DashboardWindowController: NSWindowController { ConfigManager.shared.overrideApiURL = .init(string: apiURL) ConfigManager.shared.overrideSecret = secret } + + public func reload() { + NotificationCenter.default.post(name: .reloadDashboard, object: nil) + } } extension DashboardWindowController: NSWindowDelegate { diff --git a/ClashX Dashboard Kit/Sources/ClashX Dashboard Kit/NotificationNames.swift b/ClashX Dashboard Kit/Sources/ClashX Dashboard Kit/NotificationNames.swift index 88d61c1..a3cf2a5 100644 --- a/ClashX Dashboard Kit/Sources/ClashX Dashboard Kit/NotificationNames.swift +++ b/ClashX Dashboard Kit/Sources/ClashX Dashboard Kit/NotificationNames.swift @@ -7,6 +7,7 @@ import Foundation extension NSNotification.Name { + static let reloadDashboard = NSNotification.Name("ReloadDashboard") static let sidebarItemChanged = NSNotification.Name("SidebarItemChanged") static let toolbarSearchString = NSNotification.Name("ToolbarSearchString") diff --git a/ClashX Dashboard Kit/Sources/ClashX Dashboard Kit/Views/SidebarView/SidebarListView.swift b/ClashX Dashboard Kit/Sources/ClashX Dashboard Kit/Views/SidebarView/SidebarListView.swift index b543425..e19e4c0 100644 --- a/ClashX Dashboard Kit/Sources/ClashX Dashboard Kit/Views/SidebarView/SidebarListView.swift +++ b/ClashX Dashboard Kit/Sources/ClashX Dashboard Kit/Views/SidebarView/SidebarListView.swift @@ -11,6 +11,9 @@ struct SidebarListView: View { @Binding var selectionName: SidebarItem? + @State private var reloadID = UUID().uuidString + + var body: some View { List { NavigationLink(destination: OverviewView(), @@ -66,6 +69,10 @@ struct SidebarListView: View { } } .listStyle(.sidebar) + .id(reloadID) + .onReceive(NotificationCenter.default.publisher(for: .reloadDashboard)) { _ in + reloadID = UUID().uuidString + } } }