commit b49fa4b5c7f00c51d4c9a52218aef1ac9bfead78
parent 48c54e435214be9f4dab7484b082f63abd03df4e
Author: Marc Stibane <marc@taler.net>
Date: Sat, 31 Oct 2026 18:13:54 +0100
Mailbox, messages
Diffstat:
1 file changed, 30 insertions(+), 0 deletions(-)
diff --git a/TalerWallet1/Controllers/Controller.swift b/TalerWallet1/Controllers/Controller.swift
@@ -135,6 +135,7 @@ class Controller: ObservableObject {
@Published var scannedURLs: [ScannedURL] = []
@Published var contacts: [ContactEntry] = []
@Published var mailboxConfiguration: MailboxConfiguration? = nil
+ @Published var messages: [MailboxMessage] = []
@Published var backendState: BackendState = .none // only used for launch animation
@Published var currencyTicker: Int = 0 // updates whenever a new currency is added
@@ -386,6 +387,17 @@ class Controller: ObservableObject {
}
return nil
}
+ // MARK: -
+ @MainActor
+ @discardableResult
+ func createMailbox() async ->MailboxConfiguration? {
+ if mailboxConfiguration == nil {
+ let model = WalletModel.shared
+ let configuration = try? await model.initializeMailbox()
+ mailboxConfiguration = configuration
+ }
+ return mailboxConfiguration
+ }
@MainActor
@discardableResult
func loadContacts(_ stack: CallStack) async -> Int? {
@@ -405,6 +417,24 @@ class Controller: ObservableObject {
}
return nil
}
+ @MainActor
+ func refreshMailbox(_ stack: CallStack) async {
+ // Do we have a mailbox?
+ let model = WalletModel.shared
+ if let mailboxConfiguration {
+ if let response = try? await model.refreshMailbox(mailboxConfiguration) {
+ messages = response.messages
+#if DEBUG // TODO: tell user?
+ if let expiration = response.mailboxExpiration {
+ if expiration != mailboxConfiguration.expiration {
+ let expirationDate = TalerDater.dateString(expiration)
+ self.logger.log("••Mailbox expiration changed: \(expirationDate.0)")
+ }
+ }
+#endif
+ }
+ }
+ }
// MARK: -
@MainActor
@discardableResult