taler-ios

iOS apps for GNU Taler (wallet)
Log | Files | Refs | README | LICENSE

commit 7ce06672376df083997693aba832afba5c82ac1e
parent 2426812a6cca3bb56960b7a5395c9d8b1b2feea2
Author: Marc Stibane <marc@taler.net>
Date:   Thu, 16 Jul 2026 09:31:57 +0200

ErrorBanner

Diffstat:
MTalerWallet1/Views/Main/ErrorView.swift | 54+++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 53 insertions(+), 1 deletion(-)

diff --git a/TalerWallet1/Views/Main/ErrorView.swift b/TalerWallet1/Views/Main/ErrorView.swift @@ -8,6 +8,58 @@ import SwiftUI import taler_swift +enum BannerType { + case error + case networkUnavailable + case warning5sec +} + +struct ErrorBanner: View { + let type: BannerType + + init(_ type: BannerType) { + self.type = type + } + + var errorText: String { + switch type { + case .error: + return "An error occurred…" + case .networkUnavailable: + return "Network unavailable!" + case .warning5sec: + return "Network is slow…" + } + } + + var errorColor: Color { + switch type { + case .error: + return .red + case .networkUnavailable: + return .red + case .warning5sec: + return .yellow + } + } + + var body: some View { + Text(errorText) + .foregroundStyle(.white) + .frame(maxWidth: .infinity, alignment: .leading) + .padding() + .background { + RoundedRectangle(cornerRadius: 15) + .fill(errorColor) + } + .padding(.horizontal) + .transition(.asymmetric( + insertion: .move(edge: .top), + removal: .move(edge: .top) + )) + } +} + enum ErrorData { case message(title: String, message: String) case error(Error) @@ -49,7 +101,7 @@ struct ErrorView: View { case .walletCoreError(let walletBackendResponseError): if let responseError = walletBackendResponseError { let code = responseError.code - if code == 7002 || code == 7032 { + if code == 7002 || code == 7005 || code == 7032 { self.init(stack, title: internetError, message: responseError.hint ?? internetMessage,