Live update of Plugin List in Preferences #235

This commit is contained in:
Alex Mazanov 2021-10-29 11:08:24 -04:00
parent 27cff088bd
commit 81a9e85f59
3 changed files with 9 additions and 11 deletions

View File

@ -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()
}

View File

@ -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: {

View File

@ -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) },
]