mirror of
https://github.com/swiftbar/SwiftBar.git
synced 2024-09-11 16:05:33 +03:00
Live update of Plugin List in Preferences #235
This commit is contained in:
parent
27cff088bd
commit
81a9e85f59
@ -3,8 +3,9 @@ import Combine
|
||||
import Foundation
|
||||
import os
|
||||
import UserNotifications
|
||||
import SwiftUI
|
||||
|
||||
class PluginManager {
|
||||
class PluginManager: ObservableObject {
|
||||
static let shared = PluginManager()
|
||||
let prefs = PreferencesStore.shared
|
||||
lazy var barItem: MenubarItem = {
|
||||
@ -15,7 +16,7 @@ class PluginManager {
|
||||
var directoryObserver: DirectoryObserver?
|
||||
#endif
|
||||
|
||||
var plugins: [Plugin] = [] {
|
||||
@Published var plugins: [Plugin] = [] {
|
||||
didSet {
|
||||
pluginsDidChange()
|
||||
}
|
||||
|
@ -1,17 +1,16 @@
|
||||
import Preferences
|
||||
import SwiftUI
|
||||
struct PluginsPreferencesView: View {
|
||||
var plugins: [Plugin] {
|
||||
delegate.pluginManager.plugins
|
||||
}
|
||||
@ObservedObject var pluginManager: PluginManager
|
||||
|
||||
var body: some View {
|
||||
VStack {
|
||||
if plugins.isEmpty {
|
||||
if pluginManager.plugins.isEmpty {
|
||||
Text(Localizable.Preferences.NoPluginsMessage.localized)
|
||||
.font(.largeTitle)
|
||||
.padding(.bottom, 50)
|
||||
} else {
|
||||
PluginsView(plugin: plugins.first!)
|
||||
PluginsView(plugin: pluginManager.plugins.first!, plugins: pluginManager.plugins)
|
||||
}
|
||||
}.frame(width: 750, height: 400)
|
||||
}
|
||||
@ -21,9 +20,7 @@ struct PluginsPreferencesView: View {
|
||||
struct PluginsView: View {
|
||||
@State var plugin: Plugin
|
||||
|
||||
var plugins: [Plugin] {
|
||||
delegate.pluginManager.plugins
|
||||
}
|
||||
var plugins: [Plugin]
|
||||
|
||||
var body: some View {
|
||||
PluginPreferencesSplitView(master: {
|
||||
|
@ -35,5 +35,5 @@ let preferencePanes: [PreferencePaneConvertible] = [
|
||||
identifier: .plugins,
|
||||
title: Localizable.Preferences.Plugins.localized,
|
||||
toolbarIcon: Preferences.PaneIdentifier.plugins.image
|
||||
) { PluginsPreferencesView().environmentObject(PreferencesStore.shared) },
|
||||
) { PluginsPreferencesView(pluginManager: PluginManager.shared).environmentObject(PreferencesStore.shared) },
|
||||
]
|
||||
|
Loading…
Reference in New Issue
Block a user