taler-ios

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

commit 11b736d9630c417dd43238a29cf56d0ba4e52c50
parent 73d015f8c3ca83cf2af3bb34ad7e51aac8dd1ca0
Author: Marc Stibane <marc@taler.net>
Date:   Fri, 21 Aug 2026 16:25:58 +0200

MIGRATE_DB, log nativeDB ? 20 : 50

Diffstat:
MTalerWallet1/Backend/WalletCore.swift | 8++++++--
MTalerWallet1/Controllers/Controller.swift | 9+++------
MTalerWallet1/Controllers/PublicConstants.swift | 3+++
MTalerWallet1/Model/WalletModel.swift | 12+++++++-----
4 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/TalerWallet1/Backend/WalletCore.swift b/TalerWallet1/Backend/WalletCore.swift @@ -33,6 +33,7 @@ class WalletCore: QuickjsMessageHandler { var delegate: WalletBackendDelegate? var versionInfo: VersionInfo? // shown in SettingsView + var nativeDB: Bool var isObserving: Int var isLogging: Bool var logTransactions: Bool @@ -93,6 +94,7 @@ class WalletCore: QuickjsMessageHandler { } init() throws { + nativeDB = false isObserving = 0 isLogging = false logTransactions = false @@ -600,11 +602,13 @@ extension WalletCore { let timeUsed = Date.now - timeSent let millisecs = timeUsed.milliseconds if let error { - logger.error("Request \"id\":\(requestId, privacy: .public) failed after \(millisecs, privacy: .public) ms") + logger.error("Request \"id\":\(requestId, privacy: .public) failed after \(millisecs, privacy: .public) ms, error: \(error.code, privacy: .public)") } else { - if millisecs > 50 { +#if DEBUG + if millisecs > (nativeDB ? 20 : 50) { logger.info("Request \"id\":\(requestId, privacy: .public) took \(millisecs, privacy: .public) ms") } +#endif } var err: Error? = nil if let json = result, error == nil { diff --git a/TalerWallet1/Controllers/Controller.swift b/TalerWallet1/Controllers/Controller.swift @@ -545,12 +545,9 @@ class Controller: ObservableObject { backendState = .initing do { let walletCore = WalletCore.shared -#if TALER_NIGHTLY - let versionInfo = try await model.initWalletCore(setTesting: setTesting, migrateNativeDb: true) -#else - let versionInfo = try await model.initWalletCore(setTesting: setTesting, migrateNativeDb: false) -#endif - walletCore.versionInfo = versionInfo + let response = try await model.initWalletCore(setTesting: setTesting, migrateNativeDb: MIGRATE_DB) + walletCore.versionInfo = response.versionInfo + walletCore.nativeDB = (response.databaseBackend == "sqlite") if developerMode { // best-effort dev-mode setup: a network hiccup here must not abort // wallet-core startup (see the force `try!` at the call site) diff --git a/TalerWallet1/Controllers/PublicConstants.swift b/TalerWallet1/Controllers/PublicConstants.swift @@ -9,10 +9,13 @@ import Foundation #if TALER_WALLET let TALER_LOGO = "taler-logo-2023-blue" +let MIGRATE_DB = false #elseif TALER_NIGHTLY let TALER_LOGO = "taler-logo-2023-black" +let MIGRATE_DB = true #else // GNU_TALER let TALER_LOGO = "taler-logo-2023-red" +let MIGRATE_DB = false #endif let TALER_LOGO_FULL = "taler-logo-full" let TALER_LOGO_QR = "taler-logo-qr" diff --git a/TalerWallet1/Model/WalletModel.swift b/TalerWallet1/Model/WalletModel.swift @@ -406,6 +406,10 @@ extension WalletModel { } } // MARK: - +struct InitResponse: Decodable { + var versionInfo: VersionInfo + var databaseBackend: String? +} /// A request to initialize Wallet-core fileprivate struct InitRequest: WalletBackendFormattedRequest { var persistentStoragePath: String @@ -432,19 +436,17 @@ fileprivate struct InitRequest: WalletBackendFormattedRequest { var config: Config var useNativeLogging: Bool } - struct Response: Decodable { - var versionInfo: VersionInfo - } + typealias Response = InitResponse } extension WalletModel { /// initalize Wallet-Core. Might do networking - nonisolated func initWalletCore(setTesting: Bool, migrateNativeDb: Bool, viewHandles: Bool = false) async throws -> VersionInfo { + nonisolated func initWalletCore(setTesting: Bool, migrateNativeDb: Bool, viewHandles: Bool = false) async throws -> InitResponse { let dbPath = try dbPath() // logger.debug("dbPath: \(dbPath)") let request = InitRequest(persistentStoragePath: dbPath, setTesting: setTesting, migrateNativeDb: migrateNativeDb) let response = try await sendRequest(request, viewHandles: viewHandles) // no Delay - return response.versionInfo + return response } private func dbUrl(_ folder: URL) -> URL {