ClashX.Meta/ClashX/ViewControllers/DashboardManagerSwiftUI.swift

49 lines
1.2 KiB
Swift
Raw Normal View History

2023-06-05 21:53:53 +08:00
//
// DashboardManagerSwiftUI.swift
// ClashX Meta
//
// Copyright © 2023 west2online. All rights reserved.
//
import Cocoa
2023-06-05 22:45:13 +08:00
import RxSwift
2023-06-05 23:44:14 +08:00
import ClashX_Dashboard
2023-06-05 21:53:53 +08:00
class DashboardManager: NSObject {
2023-06-05 22:45:13 +08:00
private let disposeBag = DisposeBag()
private var inited = false
2023-06-05 21:53:53 +08:00
static let shared = DashboardManager()
2023-06-05 22:45:13 +08:00
override init() {
}
2023-06-05 21:53:53 +08:00
var dashboardWindowController: DashboardWindowController?
func show(_ sender: NSMenuItem) {
2023-06-05 22:45:13 +08:00
if !inited {
inited = true
NotificationCenter.default.rx.notification(.configFileChange).bind {
[weak self] _ in
self?.dashboardWindowController?.reload()
}.disposed(by: disposeBag)
NotificationCenter.default.rx.notification(.reloadDashboard).bind {
[weak self] _ in
self?.dashboardWindowController?.reload()
}.disposed(by: disposeBag)
}
2023-06-05 21:53:53 +08:00
if dashboardWindowController == nil {
dashboardWindowController = DashboardWindowController.create()
dashboardWindowController?.onWindowClose = {
[weak self] in
self?.dashboardWindowController = nil
}
}
dashboardWindowController?.set(ConfigManager.apiUrl, secret: ConfigManager.shared.overrideSecret ?? ConfigManager.shared.apiSecret)
dashboardWindowController?.showWindow(sender)
}
}