fix: streamline WhatsApp login flow

This commit is contained in:
Peter Steinberger
2025-12-21 00:59:02 +01:00
parent 383097a03a
commit 98891103d0
3 changed files with 20 additions and 7 deletions

View File

@@ -84,12 +84,6 @@ struct ConnectionsSettings: View {
.buttonStyle(.bordered)
.disabled(self.store.whatsappBusy)
Button("Wait for scan") {
Task { await self.store.waitWhatsAppLogin() }
}
.buttonStyle(.bordered)
.disabled(self.store.whatsappBusy)
Spacer()
Button("Logout") {

View File

@@ -158,10 +158,11 @@ final class ConnectionsStore {
}
}
func startWhatsAppLogin(force: Bool) async {
func startWhatsAppLogin(force: Bool, autoWait: Bool = true) async {
guard !self.whatsappBusy else { return }
self.whatsappBusy = true
defer { self.whatsappBusy = false }
var shouldAutoWait = false
do {
let params: [String: AnyCodable] = [
"force": AnyCodable(force),
@@ -174,12 +175,16 @@ final class ConnectionsStore {
self.whatsappLoginMessage = result.message
self.whatsappLoginQrDataUrl = result.qrDataUrl
self.whatsappLoginConnected = nil
shouldAutoWait = autoWait && result.qrDataUrl != nil
} catch {
self.whatsappLoginMessage = error.localizedDescription
self.whatsappLoginQrDataUrl = nil
self.whatsappLoginConnected = nil
}
await self.refresh(probe: true)
if shouldAutoWait {
Task { await self.waitWhatsAppLogin() }
}
}
func waitWhatsAppLogin(timeoutMs: Int = 120_000) async {