Skip to content

Commit 5835a6e

Browse files
committed
Hopefully a crash fix
ModuleManger updates cant edit the array it's reading
1 parent b9eb5f2 commit 5835a6e

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

Sora/Utlis & Misc/Modules/ModuleManager.swift

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -206,9 +206,17 @@ class ModuleManager: ObservableObject {
206206
}
207207

208208
func refreshModules() async {
209-
for (index, module) in modules.enumerated() {
209+
let modulesCopy = modules
210+
var updatedModules: [(Int, ScrapingModule)] = []
211+
212+
for (index, module) in modulesCopy.enumerated() {
210213
do {
211-
let (metadataData, _) = try await URLSession.custom.data(from: URL(string: module.metadataUrl)!)
214+
guard let metadataUrl = URL(string: module.metadataUrl) else {
215+
Logger.shared.log("Invalid metadata URL for module: \(module.metadata.sourceName)", type: "Error")
216+
continue
217+
}
218+
219+
let (metadataData, _) = try await URLSession.custom.data(from: metadataUrl)
212220
let newMetadata = try JSONDecoder().decode(ModuleMetadata.self, from: metadataData)
213221

214222
if newMetadata.version != module.metadata.version {
@@ -232,14 +240,22 @@ class ModuleManager: ObservableObject {
232240
isActive: module.isActive
233241
)
234242

235-
self.modules[index] = updatedModule
236-
self.saveModules()
237-
238-
Logger.shared.log("Updated module: \(module.metadata.sourceName) to version \(newMetadata.version)")
243+
updatedModules.append((index, updatedModule))
244+
Logger.shared.log("Prepared update for module: \(module.metadata.sourceName) to version \(newMetadata.version)")
239245
}
240246
} catch {
241247
Logger.shared.log("Failed to refresh module: \(module.metadata.sourceName) - \(error.localizedDescription)")
242248
}
243249
}
250+
251+
if !updatedModules.isEmpty {
252+
for (index, updatedModule) in updatedModules {
253+
if index < modules.count {
254+
modules[index] = updatedModule
255+
}
256+
}
257+
saveModules()
258+
Logger.shared.log("Successfully updated \(updatedModules.count) modules")
259+
}
244260
}
245261
}

0 commit comments

Comments
 (0)