Hopefully a crash fix

ModuleManger updates cant edit the array it's reading
This commit is contained in:
cranci1 2025-07-14 11:07:32 +02:00
parent b9eb5f2700
commit 5835a6ef8f

View file

@ -206,9 +206,17 @@ class ModuleManager: ObservableObject {
}
func refreshModules() async {
for (index, module) in modules.enumerated() {
let modulesCopy = modules
var updatedModules: [(Int, ScrapingModule)] = []
for (index, module) in modulesCopy.enumerated() {
do {
let (metadataData, _) = try await URLSession.custom.data(from: URL(string: module.metadataUrl)!)
guard let metadataUrl = URL(string: module.metadataUrl) else {
Logger.shared.log("Invalid metadata URL for module: \(module.metadata.sourceName)", type: "Error")
continue
}
let (metadataData, _) = try await URLSession.custom.data(from: metadataUrl)
let newMetadata = try JSONDecoder().decode(ModuleMetadata.self, from: metadataData)
if newMetadata.version != module.metadata.version {
@ -232,14 +240,22 @@ class ModuleManager: ObservableObject {
isActive: module.isActive
)
self.modules[index] = updatedModule
self.saveModules()
Logger.shared.log("Updated module: \(module.metadata.sourceName) to version \(newMetadata.version)")
updatedModules.append((index, updatedModule))
Logger.shared.log("Prepared update for module: \(module.metadata.sourceName) to version \(newMetadata.version)")
}
} catch {
Logger.shared.log("Failed to refresh module: \(module.metadata.sourceName) - \(error.localizedDescription)")
}
}
if !updatedModules.isEmpty {
for (index, updatedModule) in updatedModules {
if index < modules.count {
modules[index] = updatedModule
}
}
saveModules()
Logger.shared.log("Successfully updated \(updatedModules.count) modules")
}
}
}