pageta-native/Sources/Core/AppConfig.swift
Till JS 99967b5531 Theme-Pass Pilot: pageta verdrahtet (Unlock-Gating live)
appSlug "pageta" + ThemePassStore (@Observable): markiert beim Start die
eigene App als besucht (Keychain cross-app + Server best-effort) und holt
die triedApps-Union. PagetaThemeGallery reicht unlocked = allCases.filter{
isUnlocked(triedApps:)} + onLockedTap (öffnet mana-ev.ch/apps/<slug>) in die
geteilte Galerie. Baseline + paper(=pageta-Signatur) sofort frei, Rest gesperrt
bis die jeweilige App ausprobiert wird. Keychain-Pfad sofort aktiv; cross-device
nach mana-auth-Deploy. Build grün, on-device verifiziert.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 15:32:26 +02:00

42 lines
1.9 KiB
Swift

import Foundation
import ManaCore
/// App-spezifische Konfiguration für Pageta-Native.
///
/// `manaAppConfig` adoptiert `ManaAppConfig` aus ManaCore — Authentifizierung,
/// Keychain und App-Group.
///
/// `apiBaseURL` ist separat (ManaCore weiß nichts von pageta-api). Zeigt
/// auf `api.pageta.com` — die Co-Domain ist seit 2026-05-18 Lead-Domain
/// für Native-Surfaces (AASA + Universal-Links). `pageta.mana.how` läuft
/// parallel weiter, wird aber Native-seitig nicht angesprochen.
enum AppConfig {
/// App-Group für Daten-Sharing App ↔ (zukünftig) Widget + ShareExt.
/// Mit π-0 noch ungenutzt, aber identisch zur Bundle-ID strukturiert.
static let appGroupIdentifier = "group.ev.mana.pageta"
static let manaAppConfig: ManaAppConfig = DefaultManaAppConfig(
authBaseURL: URL(string: "https://auth.mana.how")!,
keychainService: ManaSharedKeychainGroup,
// Explizit auf TeamID.BundleID statt nil. Vermeidet Logout bei
// TestFlight-Cert-Drift (siehe mana-swift-core v1.5.1).
keychainAccessGroup: ManaSharedKeychainGroup,
appGroup: appGroupIdentifier,
// softFirst: ein einzelner 401 beim Cold-Launch wiped die
// persistierte Session NICHT — User bleibt drin. Wipe erst
// beim zweiten 401 in Folge oder nach einem erfolgreichen
// Refresh in diesem Prozess. Verhindert TestFlight-Update-
// Logouts durch transiente Server-Glitches (z.B. mana-auth-
// /refresh-Regression 2026-05-19). Siehe mana-swift-core v1.8.0.
refreshFailurePolicy: .softFirst,
// Theme-Pass: pageta ist die Signatur-Quelle für „Papier".
appSlug: "pageta"
)
static let apiBaseURL = URL(string: "https://api.pageta.com")!
/// Event-sourced platform URL (`mana-sync` / sync2). Aktiv seit
/// π-11 (2026-05-20); übernimmt user-owned Lese-Listen- und
/// Highlight-Daten von der retired `pageta-api/articles`-Route.
static let syncURL = URL(string: "https://sync2.mana.how")!
}