/
valeriano
/
ftm
Обзор
Документация
Войти
/
valeriano
/
ftm
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
app/src/main/java/com/github/minimi/ftm/CommonNavigation.kt
109 строк
3 KB
Valeriy Blagodarniy
Refactoring and fixes
12 июн 2026, 12:15
Не верифицирован
12 июн 2026, 12:15
ac35b93
Код
Авторство
О чём код?
package com.github.minimi.ftm import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions import androidx.navigation.compose.dialog import androidx.navigation.toRoute import com.github.minimi.ftm.ui.common.CertificateDecisionDialog import com.github.minimi.ftm.ui.common.KeyDecisionDialog import com.github.minimi.ftm.ui.common.PasswordDialog import kotlinx.serialization.Serializable //region Password Route Dialog /** * Route для диалога запроса пароля */ @Serializable object PasswordDialogRoute fun NavController.navigateAskPasswordDialog( navOptions: NavOptions? = null ) = navigate(route = PasswordDialogRoute, navOptions) fun NavGraphBuilder.passwordDialog( onConfirm: (password: String?) -> Unit, ) { dialog<PasswordDialogRoute> { PasswordDialog(onConfirm = onConfirm) } } //endregion //region Key Decision Dialog /** * Route для диалога запроса принятия ключа * * @param keyChanged флаг изменился ли ключ * @param hostname для какого хоста * @param keyType тип ключа * @param fingerprint отпечаток */ @Serializable data class KeyDecisionDialogRoute( val keyChanged: Boolean, val hostname: String?, val keyType: String?, val fingerprint: String?, ) fun NavController.navigateKeyDecisionDialog( keyChanged: Boolean, hostname: String?, keyType: String?, fingerprint: String?, navOptions: NavOptions? = null ) = navigate(route = KeyDecisionDialogRoute(keyChanged, hostname, keyType, fingerprint), navOptions) fun NavGraphBuilder.keyDecisionDialog( onDecision: (Boolean) -> Unit ) { dialog<KeyDecisionDialogRoute> { entry -> val route = entry.toRoute<KeyDecisionDialogRoute>() KeyDecisionDialog( route = route, onDecision = onDecision ) } } //endregion //region Certificate Decision Dialog /** * Route для диалога запроса принятия сертификата * * @param certificateInfo информация о сертификате * @param errorInfo информация о причине запроса/ошибке сертификата */ @Serializable data class CertificateDecisionDialogRoute( val certificateInfo: String, val errorInfo: String, ) fun NavController.navigateCertificateDecisionDialog( certificateInfo: String, errorInfo: String, navOptions: NavOptions? = null ) = navigate(route = CertificateDecisionDialogRoute(certificateInfo, errorInfo), navOptions) fun NavGraphBuilder.certificateDecisionDialog( onDecision: (Boolean) -> Unit ) { dialog<CertificateDecisionDialogRoute> { entry -> val route = entry.toRoute<CertificateDecisionDialogRoute>() CertificateDecisionDialog( errorInfo = route.errorInfo, onDecision = onDecision ) } } //endregion