Der Aufmacher blendet über, statt zu blättern
Der gespiegelte Ausschnitt hinter der Seitenleiste war nicht das Problem — JellyTV macht es genauso. Auffällig wurde er erst durch die Bewegung: beim seitlichen Durchblättern wanderten das echte und das gespiegelte Stück gegeneinander, und die Naht dazwischen war das auffälligste Ding auf dem Bildschirm. Jetzt rutscht das neue Bild 32 Punkte herein und blendet dabei über das alte. Nichts wandert weit genug, als dass ein Versatz auffiele. Wischen blättert weiter, nach vorn wie zurück; das nächste Bild wird geholt, solange das aktuelle noch steht, sonst blendet der Aufmacher auf eine graue Fläche über. Dazu ein Testziel, das die App mit der Attrappe in einen Zustand fährt und fotografiert. Der Grund ist ein wiederkehrender Fehler: Aussagen über das Aussehen waren Vermutungen, weil niemand hinsehen konnte — der Simulator kennt keinen Befehl fürs Antippen, und dieses Xcode bringt kein Simulator-Fenster mehr mit. Damit ist „sieht es so aus?" eine Frage, die sich beantworten lässt. Die Startargument-Anmeldung an der Attrappe steht unter #if DEBUG und führt am Schlüsselbund vorbei: kein echter Server, kein echtes Konto, kein echter Token. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
7faa16be9c
commit
7155f50bac
@@ -203,6 +203,10 @@ final class FlixySession {
|
||||
|
||||
/// Versucht, mit einem bereits gespeicherten Token weiterzumachen.
|
||||
func restore() async {
|
||||
#if DEBUG
|
||||
if await adoptStubServerIfRequested() { return }
|
||||
#endif
|
||||
|
||||
switch storedKind {
|
||||
case .jellyfin:
|
||||
if await restoreJellyfin() { return }
|
||||
@@ -483,6 +487,44 @@ final class FlixySession {
|
||||
/// mehreren Schritten mit eigener Bedienung (Adresse, Code, Rückfall auf
|
||||
/// Passwort) und gehört deshalb in ein eigenes Modell. Hier kommt nur das
|
||||
/// Ergebnis an: ein Konto und ein Weg dorthin.
|
||||
#if DEBUG
|
||||
/// Meldet sich an der Attrappe aus `Tools/JellyfinStub` an.
|
||||
///
|
||||
/// Nur in der Entwicklung und nur auf ausdrückliches Kommando:
|
||||
/// `-FlixyStubServer http://127.0.0.1:8096` als Startargument. Der Weg
|
||||
/// führt bewusst **am Schlüsselbund vorbei** und schreibt nichts fort —
|
||||
/// so lässt sich die Oberfläche ansehen, prüfen und fotografieren, ohne
|
||||
/// dass je ein echter Server, ein echtes Konto oder ein echter Token im
|
||||
/// Spiel wäre. Genau daran hat es bisher gefehlt: Aussagen über das
|
||||
/// Aussehen waren Vermutungen, weil niemand hinsehen konnte.
|
||||
private func adoptStubServerIfRequested() async -> Bool {
|
||||
guard let raw = defaults.string(forKey: "FlixyStubServer"),
|
||||
let baseURL = URL(string: raw)
|
||||
else { return false }
|
||||
|
||||
let account = JellyfinAccount(
|
||||
userID: "user-1",
|
||||
userName: "Attrappe",
|
||||
token: "stub-token",
|
||||
isAdministrator: true
|
||||
)
|
||||
let client = JellyfinClient(baseURL: baseURL, identity: jellyfinIdentity, token: account.token)
|
||||
let backend = JellyfinBackend(client: client, account: account, serverName: "Attrappe")
|
||||
|
||||
kind = .jellyfin
|
||||
jellyfinAccount = account
|
||||
self.backend = backend
|
||||
|
||||
do {
|
||||
libraries = try await backend.libraries().filter(\.isSupported)
|
||||
phase = .ready
|
||||
} catch {
|
||||
phase = .failed(message: ErrorText.describe(error))
|
||||
}
|
||||
return true
|
||||
}
|
||||
#endif
|
||||
|
||||
func adoptJellyfin(
|
||||
client: JellyfinClient,
|
||||
account: JellyfinAccount,
|
||||
|
||||
Reference in New Issue
Block a user