iOS: gescannter Einzelstück-Link öffnet wirklich das Stück
Universal Link oeffnete die App, sprang aber nicht aufs Stueck. Jetzt robuster: - Kaltstart wird abgefangen (AppDelegate application(_:continue:) + pending-URL), zusaetzlich zu den SwiftUI-Hooks. - Beim Link wird auf das Server-Profil gewechselt, dessen Adresse zum Host passt (sonst wuerde die UID am falschen Server gesucht). - Schlaegt das Aufloesen fehl (nicht angemeldet, UID unbekannt), erscheint jetzt eine Meldung statt stiller Nichtreaktion. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,7 @@ struct RootView: View {
|
||||
@EnvironmentObject private var display: DisplaySettings
|
||||
/// Über einen gescannten Universal Link geöffnetes Einzelstück.
|
||||
@State private var linkedItem: Item?
|
||||
@State private var linkError: String?
|
||||
|
||||
var body: some View {
|
||||
Group {
|
||||
@@ -45,12 +46,25 @@ struct RootView: View {
|
||||
}
|
||||
.task(id: router.openItemUid) {
|
||||
guard let uid = router.openItemUid else { return }
|
||||
linkedItem = try? await APIClient.shared.itemByUid(uid: uid)
|
||||
router.openItemUid = nil
|
||||
guard session.isLoggedIn else {
|
||||
linkError = "Bitte zuerst am passenden Server anmelden, dann erneut scannen."
|
||||
return
|
||||
}
|
||||
do {
|
||||
linkedItem = try await APIClient.shared.itemByUid(uid: uid)
|
||||
} catch {
|
||||
linkError = "Einzelstück \(uid) nicht gefunden: \(error.localizedDescription)"
|
||||
}
|
||||
}
|
||||
.sheet(item: $linkedItem) { it in
|
||||
NavigationStack { ItemEditView(item: it) }
|
||||
}
|
||||
.alert("Einzelstück öffnen", isPresented: Binding(
|
||||
get: { linkError != nil }, set: { if !$0 { linkError = nil } }
|
||||
)) {
|
||||
Button("OK", role: .cancel) { linkError = nil }
|
||||
} message: { Text(linkError ?? "") }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user