From 9ae8f5eb54af5b528d404286774789e92cfac953 Mon Sep 17 00:00:00 2001 From: Francesco <100066266+cranci1@users.noreply.github.com> Date: Sat, 5 Apr 2025 16:24:12 +0200 Subject: [PATCH] module refresh crash fixed --- .../SettingsSubViews/SettingsViewModule.swift | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/Sora/Views/SettingsView/SettingsSubViews/SettingsViewModule.swift b/Sora/Views/SettingsView/SettingsSubViews/SettingsViewModule.swift index 1535f67..db620b8 100644 --- a/Sora/Views/SettingsView/SettingsSubViews/SettingsViewModule.swift +++ b/Sora/Views/SettingsView/SettingsSubViews/SettingsViewModule.swift @@ -16,6 +16,7 @@ struct SettingsViewModule: View { @State private var isLoading = false @State private var isRefreshing = false @State private var moduleUrl: String = "" + @State private var refreshTask: Task? var body: some View { VStack { @@ -113,23 +114,30 @@ struct SettingsViewModule: View { }) .refreshable { isRefreshing = true - await moduleManager.refreshModules() - isRefreshing = false + refreshTask?.cancel() + refreshTask = Task { + await moduleManager.refreshModules() + isRefreshing = false + } } } .onAppear { - Task { + refreshTask = Task { await moduleManager.refreshModules() } } - .alert(isPresented: .constant(errorMessage != nil)) { - Alert( - title: Text("Error"), - message: Text(errorMessage ?? "Unknown error"), - dismissButton: .default(Text("OK")) { - errorMessage = nil - } - ) + .onDisappear { + refreshTask?.cancel() + } + .alert("Error", isPresented: Binding( + get: { errorMessage != nil }, + set: { if !$0 { errorMessage = nil } } + )) { + Button("OK") { + errorMessage = nil + } + } message: { + Text(errorMessage ?? "Unknown error") } }