Deck-Liste mit Web-Parität: alle eigenen Decks aus cardecky-api, Card-/Due-Counts pro Deck (Web-Pattern: separate Calls), Pull-to- Refresh, Offline-Read via SwiftData, Inbox-Banner für Marketplace- Forks. - Deck-Codable-DTO mit snake_case-CodingKeys (DeckCategory, DeckVisibility, FsrsSettings) - ISO8601-Date-Decoder mit Fractional-Seconds-Toleranz - CardsAPI.listDecks() + cardCount() + dueCount() - CachedDeck SwiftData-Model mit lastFetchedAt - DeckListStore (API + Cache, paralleles Counts-Fetching via TaskGroup) - DeckListView mit forest-Theme, deck.color-Streifen, Inbox-Banner - AccountView mit Sign-out - DashboardView durch DeckListView ersetzt - 6 Unit-Tests + 1 UI-Test grün Phasen-Plan: mana/docs/playbooks/CARDS_NATIVE_GREENFIELD.md Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
18 lines
488 B
Swift
18 lines
488 B
Swift
import ManaCore
|
|
import SwiftUI
|
|
|
|
/// Top-Level-Switch: Login vs Deck-Liste.
|
|
/// Ab Phase β-3 könnte hier eine Tab-Bar entstehen (Decks / Study /
|
|
/// Stats / Account) — für β-1 reicht der einfache Switch.
|
|
struct RootView: View {
|
|
@Environment(AuthClient.self) private var auth
|
|
|
|
var body: some View {
|
|
switch auth.status {
|
|
case .signedIn:
|
|
DeckListView()
|
|
case .unknown, .signedOut, .signingIn, .error:
|
|
LoginView()
|
|
}
|
|
}
|
|
}
|