commit 6feccc1aac9818be26a30dfa0672947aeb8129d6
parent fcd04523e9438d0ff61812c4313fb40d9911b409
Author: Marc Stibane <marc@taler.net>
Date: Fri, 17 Jul 2026 16:41:39 +0200
Error with retry & cancel
Diffstat:
5 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/TalerWallet1/Backend/WalletCore.swift b/TalerWallet1/Backend/WalletCore.swift
@@ -185,6 +185,8 @@ extension WalletCore {
let decoded = try JSONDecoder().decode(RequestProgressError.self, from: jsonData)
DispatchQueue.main.async {
Controller.shared.lastProgressError = decoded
+ self.postNotification(.RequestProgressError,
+ userInfo: [NOTIFICATIONERROR: decoded])
}
}
}
diff --git a/TalerWallet1/Controllers/Controller.swift b/TalerWallet1/Controllers/Controller.swift
@@ -138,6 +138,7 @@ class Controller: ObservableObject {
@Published var networkUnavailable: Bool = false
@Published var slowConnection: Bool = false
@Published var stalledConnection: Bool = false
+ @Published var errorConnection: Bool = false
@Published var lastProgressError: RequestProgressError? = nil
@Published var lastProgressPhase: RequestProgressPhase? = nil
@Published var oimModeActive: Bool = false
diff --git a/TalerWallet1/Views/HelperViews/LoadingView.swift b/TalerWallet1/Views/HelperViews/LoadingView.swift
@@ -75,10 +75,10 @@ struct LoadingView: View {
.talerFont(.title3)
.padding(.vertical)
} else if isFinished == true {
- Text("Working...")
+ Text("Retrying…")
.talerFont(.title3)
} else {
- Text("Waiting for response...")
+ Text("Waiting for response…")
.talerFont(.title3)
}
}
@@ -119,13 +119,19 @@ struct LoadingView: View {
.onChange(of: controller.stalledConnection) { isStalled in
showAlert = isStalled
}
+ .onChange(of: controller.errorConnection) { isError in
+ if isError {
+// print("❗️❗️❗️ error arrived, idle waiting starts")
+ isFinished = false
+ controller.errorConnection = false
+ }
+ }
if #available(iOS 17.0, *) {
view.toolbarTitleDisplayMode(.inlineLarge)
} else {
view
}
-
}
}
// MARK: -
diff --git a/TalerWallet1/Views/HelperViews/TimeView.swift b/TalerWallet1/Views/HelperViews/TimeView.swift
@@ -26,8 +26,10 @@ struct TimeView: View {
if isFinished != nil {
DispatchQueue.main.async {
isFinished = true
- DispatchQueue.main.asyncAfter(deadline: .now() + 2.6) {
+// print("❗️❗️❗️ retrying…")
+ DispatchQueue.main.asyncAfter(deadline: .now() + 1.2) {
isFinished = nil
+// print("❗️❗️❗️ waiting for response…")
}
}
}
diff --git a/TalerWallet1/Views/Main/MainView.swift b/TalerWallet1/Views/Main/MainView.swift
@@ -300,6 +300,14 @@ struct MainView: View {
showUrlSheet = true // raise sheet
} } }
+ .onNotification(.RequestProgressError) { notification in
+ if let progress = notification.userInfo?[NOTIFICATIONERROR] as? RequestProgressError {
+ withAnimation(.easeIn(duration: BANNERDURATION)) {
+ controller.errorConnection = true
+// print("❗️❗️❗️ progress.error: \(progress.error.code) ")
+ }
+ } }
+
.onNotification(.RequestProgressPhase) { notification in
if let progress = notification.userInfo?[NOTIFICATIONPHASE] as? RequestProgressPhase {
// print(progress)