package com.peachpasswords.ui /** * Every navigation destination in the app. [route] is the concrete route used * with `navController.navigate(...)`; parameterized destinations expose a * `ROUTE` pattern (with `{arg}` placeholders) for registration in the graph. */ sealed class PeachNav(val route: String) { data object Onboarding : PeachNav("onboarding") data object Lock : PeachNav("lock") data object VaultList : PeachNav("vault") data object VaultSearch : PeachNav("vault/search") /** The notes surface itself — [NotesMode]'s table of contents, with no note * open yet. Reached from the entry-deck chrome's "Notes" action. */ data object Notes : PeachNav("notes") data class EntryDetail(val id: String) : PeachNav("entry/$id") { companion object { const val ROUTE = "entry/{id}" fun of(id: String) = "entry/$id" } } data class NotesMode(val id: String) : PeachNav("notes/$id") { companion object { const val ROUTE = "notes/{id}" fun of(id: String) = "notes/$id" } } data class EntryEdit( val id: String?, val prefillUrl: String? = null, val prefillUsername: String? = null, val prefillEmail: String? = null, ) : PeachNav( "edit?id=${id ?: ""}" + "&prefillUrl=${prefillUrl ?: ""}" + "&prefillUsername=${prefillUsername ?: ""}" + "&prefillEmail=${prefillEmail ?: ""}", ) { companion object { const val ROUTE = "edit?id={id}&prefillUrl={prefillUrl}&prefillUsername={prefillUsername}&prefillEmail={prefillEmail}" fun of( id: String?, prefillUrl: String? = null, prefillUsername: String? = null, prefillEmail: String? = null, ) = "edit?id=${id ?: ""}" + "&prefillUrl=${prefillUrl ?: ""}" + "&prefillUsername=${prefillUsername ?: ""}" + "&prefillEmail=${prefillEmail ?: ""}" } } data object Settings : PeachNav("settings") data object CodexGenerate : PeachNav("codex/generate") data object CodexRestore : PeachNav("codex/restore") data object CodePair : PeachNav("pair/code") data object AdoptVault : PeachNav("adopt-vault") data object Health : PeachNav("health") data object Trash : PeachNav("trash") data object Import : PeachNav("import") data object Export : PeachNav("export") data object Panic : PeachNav("panic") data object RecoverySetup : PeachNav("recovery/setup") data object RecoveryView : PeachNav("recovery/view") data object RecoveryEntry : PeachNav("recovery/entry") /** Check / download / install a newer release from Kepr. */ data object Update : PeachNav("update") /** Post-update changelog for the version now running, shown once. */ data object WhatsNew : PeachNav("whatsnew") }