PeachNav.kt

2.9 KB · raw

1package com.peachpasswords.ui23/**4 * Every navigation destination in the app. [route] is the concrete route used5 * with `navController.navigate(...)`; parameterized destinations expose a6 * `ROUTE` pattern (with `{arg}` placeholders) for registration in the graph.7 */8sealed class PeachNav(val route: String) {9    data object Onboarding : PeachNav("onboarding")10    data object Lock : PeachNav("lock")11    data object VaultList : PeachNav("vault")12    data object VaultSearch : PeachNav("vault/search")1314    /** The notes surface itself — [NotesMode]'s table of contents, with no note15     * open yet. Reached from the entry-deck chrome's "Notes" action. */16    data object Notes : PeachNav("notes")1718    data class EntryDetail(val id: String) : PeachNav("entry/$id") {19        companion object {20            const val ROUTE = "entry/{id}"21            fun of(id: String) = "entry/$id"22        }23    }2425    data class NotesMode(val id: String) : PeachNav("notes/$id") {26        companion object {27            const val ROUTE = "notes/{id}"28            fun of(id: String) = "notes/$id"29        }30    }3132    data class EntryEdit(33        val id: String?,34        val prefillUrl: String? = null,35        val prefillUsername: String? = null,36        val prefillEmail: String? = null,37    ) : PeachNav(38        "edit?id=${id ?: ""}" +39            "&prefillUrl=${prefillUrl ?: ""}" +40            "&prefillUsername=${prefillUsername ?: ""}" +41            "&prefillEmail=${prefillEmail ?: ""}",42    ) {43        companion object {44            const val ROUTE = "edit?id={id}&prefillUrl={prefillUrl}&prefillUsername={prefillUsername}&prefillEmail={prefillEmail}"45            fun of(46                id: String?,47                prefillUrl: String? = null,48                prefillUsername: String? = null,49                prefillEmail: String? = null,50            ) = "edit?id=${id ?: ""}" +51                "&prefillUrl=${prefillUrl ?: ""}" +52                "&prefillUsername=${prefillUsername ?: ""}" +53                "&prefillEmail=${prefillEmail ?: ""}"54        }55    }5657    data object Settings : PeachNav("settings")58    data object CodexGenerate : PeachNav("codex/generate")59    data object CodexRestore : PeachNav("codex/restore")60    data object CodePair : PeachNav("pair/code")61    data object AdoptVault : PeachNav("adopt-vault")62    data object Health : PeachNav("health")63    data object Trash : PeachNav("trash")64    data object Import : PeachNav("import")65    data object Export : PeachNav("export")66    data object Panic : PeachNav("panic")67    data object RecoverySetup : PeachNav("recovery/setup")68    data object RecoveryView : PeachNav("recovery/view")69    data object RecoveryEntry : PeachNav("recovery/entry")7071    /** Check / download / install a newer release from Kepr. */72    data object Update : PeachNav("update")7374    /** Post-update changelog for the version now running, shown once. */75    data object WhatsNew : PeachNav("whatsnew")76}