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>
42 lines
1.9 KiB
Swift
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")!
|
|
}
|