mirror of
https://github.com/d4rken-org/capod.git
synced 2026-09-15 02:36:12 -04:00
UpgradeRepo gains the canonical shape: settledness rides each Info emission, plus storeSite/upgradeSite/betaSite and a suspend refresh(). getSponsorUrl() is replaced by upgradeSite (FOSS only, GPlay keeps the heart icon hidden). UpgradeRepoExtensions is the canonical file with isPro/isProSettled/isProForUi. UpgradeRepoGplay folds its parallel isSettled flow into Info.isSettled (behaviour preserving) and implements refresh() as a bounded, unthrottled call to the existing billing refresh. UpgradeControlFoss is settled from its first emission and no-ops refresh(). Interactive gates move to isProForUi so a paying user isn't bounced to the upgrade screen during the GPlay cold-start race: the device-settings and press-controls pro gates, the theme setters, and the widget confirm action, which now goes through a sealed ConfirmOutcome so the activity can only return RESULT_OK for an entitled, valid configuration. Presentation paths that can't reach a suspending gate (general settings theme items, overview device limit) render the upgrade branch only when the entitlement is hard-locked: settled, error-free and not pro.