Upstream changes (#23)

This commit is contained in:
2024-07-11 02:12:32 +03:00
committed by GitHub
parent 8a6378f509
commit 3503ecffab
906 changed files with 23577 additions and 24115 deletions
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
</manifest>
@@ -0,0 +1,102 @@
package com.meloda.app.fast.auth
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavHostController
import androidx.navigation.navigation
import com.meloda.app.fast.auth.captcha.model.CaptchaArguments
import com.meloda.app.fast.auth.captcha.navigation.captchaRoute
import com.meloda.app.fast.auth.captcha.navigation.navigateToCaptcha
import com.meloda.app.fast.auth.captcha.navigation.setCaptchaResult
import com.meloda.app.fast.auth.twofa.model.TwoFaArguments
import com.meloda.app.fast.auth.twofa.navigation.navigateToTwoFa
import com.meloda.app.fast.auth.twofa.navigation.setTwoFaResult
import com.meloda.app.fast.auth.twofa.navigation.twoFaRoute
import com.meloda.app.fast.model.BaseError
import com.meloda.app.fast.userbanned.model.UserBannedArguments
import com.meloda.app.fast.userbanned.navigation.navigateToUserBanned
import com.meloda.app.fast.userbanned.navigation.userBannedRoute
import com.meloda.fast.auth.login.navigation.Logo
import com.meloda.fast.auth.login.navigation.loginRoute
import com.meloda.fast.auth.login.navigation.navigateToLogin
import kotlinx.serialization.Serializable
@Serializable
object AuthGraph
fun NavGraphBuilder.authNavGraph(
onError: (BaseError) -> Unit,
onNavigateToMain: () -> Unit,
navController: NavHostController
) {
navigation<AuthGraph>(
startDestination = Logo
) {
loginRoute(
onError = onError,
onNavigateToCaptcha = { arguments ->
navController.navigateToCaptcha(
CaptchaArguments(
arguments.captchaSid,
arguments.captchaImage
)
)
},
onNavigateToTwoFa = { arguments ->
navController.navigateToTwoFa(
TwoFaArguments(
validationSid = arguments.validationSid,
redirectUri = arguments.redirectUri,
phoneMask = arguments.phoneMask,
validationType = arguments.validationType,
canResendSms = arguments.canResendSms,
wrongCodeError = arguments.wrongCodeError
)
)
},
onNavigateToMain = onNavigateToMain,
onNavigateToUserBanned = { arguments ->
navController.navigateToUserBanned(
UserBannedArguments(
name = arguments.name,
message = arguments.message,
restoreUrl = arguments.restoreUrl,
accessToken = arguments.accessToken
)
)
},
onNavigateToCredentials = navController::navigateToLogin,
navController = navController
)
twoFaRoute(
onBack = navController::navigateUp,
onResult = { code ->
navController.popBackStack()
navController.setTwoFaResult(code)
}
)
captchaRoute(
onBack = navController::navigateUp,
onResult = { code ->
navController.popBackStack()
navController.setCaptchaResult(code)
}
)
userBannedRoute(onBack = navController::navigateUp)
}
}
fun NavController.navigateToAuth(clearBackStack: Boolean = false) {
val navController = this
this.navigate(AuthGraph) {
if (clearBackStack) {
popUpTo(navController.graph.id) {
inclusive = true
}
}
}
}
@@ -0,0 +1,14 @@
package com.meloda.app.fast.auth
import com.meloda.app.fast.auth.captcha.di.captchaModule
import com.meloda.app.fast.auth.twofa.di.twoFaModule
import com.meloda.fast.auth.login.di.loginModule
import org.koin.dsl.module
val authModule = module {
includes(
loginModule,
twoFaModule,
captchaModule,
)
}