blob: cfaa2b2265f39deb777a378a145e0b3916dbfe8f (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
import SwiftUI
struct AddAccountView: View {
@Environment(AppState.self) private var appState
@Environment(\.dismiss) private var dismiss
@State private var token = ""
@State private var isConnecting = false
@State private var errorMessage: String?
var body: some View {
NavigationStack {
Form {
Section {
SecureField("Personal Access Token", text: $token)
.autocorrectionDisabled()
.textInputAutocapitalization(.never)
} footer: {
Text("Generate a token at meta.sr.ht → OAuth2 clients.")
}
if let errorMessage {
Section {
Text(errorMessage)
.foregroundStyle(.red)
}
}
}
.navigationTitle("Add Account")
.navigationBarTitleDisplayMode(.inline)
.toolbar {
ToolbarItem(placement: .cancellationAction) {
Button("Cancel") { dismiss() }
.disabled(isConnecting)
}
ToolbarItem(placement: .confirmationAction) {
Button("Connect") { connect() }
.disabled(token.trimmingCharacters(in: .whitespaces).isEmpty || isConnecting)
}
}
.interactiveDismissDisabled(isConnecting)
}
}
private func connect() {
isConnecting = true
errorMessage = nil
let trimmed = token.trimmingCharacters(in: .whitespaces)
Task {
do {
try await appState.addAccount(token: trimmed)
dismiss()
} catch {
errorMessage = error.localizedDescription
}
isConnecting = false
}
}
}
|