PluginManager: Fix multiple plugin list bug

Only entries from the first plugin list would be shown in plugins.
This was because the availableSources array was set every time a list
was iterated upon.

Signed-off-by: kingbri <bdashore3@proton.me>
This commit is contained in:
kingbri 2023-02-08 17:08:55 -05:00
parent 9ff7f5a7d5
commit 41572362c7

View file

@ -20,10 +20,9 @@ public class PluginManager: ObservableObject {
do {
let pluginLists = try PersistenceController.shared.backgroundContext.fetch(pluginListRequest)
if pluginLists.isEmpty {
availableSources = []
availableActions = []
}
// Clean availablePlugin arrays for repopulation
availableSources = []
availableActions = []
for pluginList in pluginLists {
guard let url = URL(string: pluginList.urlString) else {
@ -38,7 +37,7 @@ public class PluginManager: ObservableObject {
if let sources = pluginResponse.sources {
// Faster and more performant to map instead of a for loop
availableSources = sources.compactMap { inputJson in
availableSources += sources.compactMap { inputJson in
if checkAppVersion(minVersion: inputJson.minVersion) {
return SourceJson(
name: inputJson.name,
@ -62,7 +61,7 @@ public class PluginManager: ObservableObject {
}
if let actions = pluginResponse.actions {
availableActions = actions.compactMap { inputJson in
availableActions += actions.compactMap { inputJson in
if checkAppVersion(minVersion: inputJson.minVersion) {
return ActionJson(
name: inputJson.name,