diff --git a/build.gradle.kts b/build.gradle.kts
index f5909e1..2cf16c4 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -5,4 +5,5 @@ plugins {
alias(libs.plugins.kotlin.compose) apply false
alias(libs.plugins.android.library) apply false
alias(libs.plugins.hilt) apply false
+ id("org.jetbrains.kotlin.plugin.serialization") version "1.7.10" apply false
}
\ No newline at end of file
diff --git a/data/build.gradle.kts b/data/build.gradle.kts
index 93b6d2b..1c36f88 100644
--- a/data/build.gradle.kts
+++ b/data/build.gradle.kts
@@ -3,6 +3,7 @@ plugins {
alias(libs.plugins.kotlin.android)
id("kotlin-kapt")
id("com.google.dagger.hilt.android")
+ id("org.jetbrains.kotlin.plugin.serialization")
}
android {
@@ -47,4 +48,5 @@ dependencies {
implementation(libs.retrofit)
implementation(libs.converter.gson)
+ implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.2")
}
\ No newline at end of file
diff --git a/data/src/main/java/com/nto/data/utils/Constants.kt b/data/src/main/java/com/nto/data/utils/Constants.kt
index be7d551..e13ba6b 100644
--- a/data/src/main/java/com/nto/data/utils/Constants.kt
+++ b/data/src/main/java/com/nto/data/utils/Constants.kt
@@ -1,9 +1,20 @@
package com.nto.data.utils
-sealed class Destinations{
+import kotlinx.serialization.Serializable
+
+sealed class Destinations {
+ @Serializable
object Login
+
+ @Serializable
object Profile
+
+ @Serializable
object Scan
+
+ @Serializable
object Admin
+
+ @Serializable
object Options
}
\ No newline at end of file
diff --git a/presentation/build.gradle.kts b/presentation/build.gradle.kts
index 40c7d65..b2c55ab 100644
--- a/presentation/build.gradle.kts
+++ b/presentation/build.gradle.kts
@@ -4,6 +4,7 @@ plugins {
alias(libs.plugins.kotlin.compose)
id("kotlin-kapt")
id("com.google.dagger.hilt.android")
+ id("org.jetbrains.kotlin.plugin.serialization")
}
android {
@@ -69,8 +70,9 @@ dependencies {
kapt(libs.hilt.compiler)
implementation(libs.hilt)
implementation (libs.hilt.navigation)
- implementation(libs.navigation)
-
+ implementation("com.journeyapps:zxing-android-embedded:4.3.0")
+ implementation("androidx.navigation:navigation-compose:2.8.3")
lintChecks(libs.lint.checks)
lintChecks(libs.lint.checks.compose)
+ implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.2")
}
\ No newline at end of file
diff --git a/presentation/src/main/AndroidManifest.xml b/presentation/src/main/AndroidManifest.xml
index df16903..6531e46 100644
--- a/presentation/src/main/AndroidManifest.xml
+++ b/presentation/src/main/AndroidManifest.xml
@@ -2,12 +2,12 @@
+
\ No newline at end of file
diff --git a/presentation/src/main/java/com/nto/presentation/CustomCaptureActivity.kt b/presentation/src/main/java/com/nto/presentation/CustomCaptureActivity.kt
new file mode 100644
index 0000000..3cb8e75
--- /dev/null
+++ b/presentation/src/main/java/com/nto/presentation/CustomCaptureActivity.kt
@@ -0,0 +1,5 @@
+package com.nto.presentation
+
+import com.journeyapps.barcodescanner.CaptureActivity
+
+class CustomCaptureActivity : CaptureActivity()
\ No newline at end of file
diff --git a/presentation/src/main/java/com/nto/presentation/composable/Destinations.kt b/presentation/src/main/java/com/nto/presentation/composable/Destinations.kt
new file mode 100644
index 0000000..2f312cf
--- /dev/null
+++ b/presentation/src/main/java/com/nto/presentation/composable/Destinations.kt
@@ -0,0 +1 @@
+package com.nto.presentation.composable
diff --git a/presentation/src/main/java/com/nto/presentation/composable/Navigation.kt b/presentation/src/main/java/com/nto/presentation/composable/Navigation.kt
index ef9c063..9c133b6 100644
--- a/presentation/src/main/java/com/nto/presentation/composable/Navigation.kt
+++ b/presentation/src/main/java/com/nto/presentation/composable/Navigation.kt
@@ -14,21 +14,21 @@ fun Navigation(navController: NavHostController, modifier: Modifier = Modifier)
NavHost(
navController = navController,
modifier = modifier,
- startDestination = Destinations.Login.toString()
+ startDestination = Destinations.Profile
) {
- composable(Destinations.Login.toString()) {
+ composable {
LoginScreen(navController)
}
- composable(Destinations.Profile.toString()){
+ composable {
ProfileScreen(navController)
}
- composable(Destinations.Scan.toString()){
+ composable {
//TODO
}
- composable(Destinations.Admin.toString()){
+ composable {
//TODO
}
- composable(Destinations.Options.toString()){
+ composable {
//TODO
}
}
diff --git a/presentation/src/main/java/com/nto/presentation/screens/loginScreen/LoginViewModel.kt b/presentation/src/main/java/com/nto/presentation/screens/loginScreen/LoginViewModel.kt
index 86c2d36..995baca 100644
--- a/presentation/src/main/java/com/nto/presentation/screens/loginScreen/LoginViewModel.kt
+++ b/presentation/src/main/java/com/nto/presentation/screens/loginScreen/LoginViewModel.kt
@@ -51,7 +51,7 @@ class LoginViewModel @Inject constructor(private val useCase: LoginUseCase, @App
}
if (result.successful) {
Dispatchers.Main {
- navController.navigate(Destinations.Profile.toString())
+ navController.navigate(Destinations.Profile)
}
}
}
diff --git a/presentation/src/main/java/com/nto/presentation/screens/profileScreen/ProfileScreen.kt b/presentation/src/main/java/com/nto/presentation/screens/profileScreen/ProfileScreen.kt
index 170576d..f4ccfac 100644
--- a/presentation/src/main/java/com/nto/presentation/screens/profileScreen/ProfileScreen.kt
+++ b/presentation/src/main/java/com/nto/presentation/screens/profileScreen/ProfileScreen.kt
@@ -1,5 +1,8 @@
package com.nto.presentation.screens.profileScreen
+import android.content.ContentValues.TAG
+import android.util.Log
+import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.border
@@ -35,6 +38,9 @@ import androidx.compose.ui.unit.sp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.NavController
import androidx.navigation.compose.rememberNavController
+import com.journeyapps.barcodescanner.ScanContract
+import com.journeyapps.barcodescanner.ScanOptions
+import com.nto.presentation.CustomCaptureActivity
import com.nto.presentation.R
import com.nto.presentation.composable.DecoratedButton
import com.nto.presentation.composable.cards.VisitCard
@@ -48,7 +54,16 @@ fun ProfileScreen(
viewModel: ProfileViewModel = hiltViewModel(),
) {
val state = viewModel.state.collectAsState().value
-
+ val scannerLauncher = rememberLauncherForActivityResult(
+ contract = ScanContract(),
+ onResult = { result -> Log.i(TAG, "scanned code: ${result.contents}") }
+ )
+ val scanOptions = ScanOptions()
+ scanOptions.setPrompt("")
+ scanOptions.setBeepEnabled(false)
+ scanOptions.setDesiredBarcodeFormats(ScanOptions.QR_CODE)
+ scanOptions.setOrientationLocked(false)
+ scanOptions.setCaptureActivity(CustomCaptureActivity::class.java)
Column(
modifier = modifier.background(NTOTheme.colors.primaryBackground)
) {
@@ -210,10 +225,11 @@ fun ProfileScreen(
stringResource(R.string.lablel_scan),
false,
modifier = Modifier
- .padding(10.dp)
+ .padding(bottom = 10.dp)
.fillMaxWidth()
- .height(50.dp)
+ .height(62.dp)
) {
+ scannerLauncher.launch(scanOptions)
viewModel.scan(navController)
}
}
diff --git a/presentation/src/main/java/com/nto/presentation/screens/profileScreen/ProfileViewModel.kt b/presentation/src/main/java/com/nto/presentation/screens/profileScreen/ProfileViewModel.kt
index 384b7d2..e783a79 100644
--- a/presentation/src/main/java/com/nto/presentation/screens/profileScreen/ProfileViewModel.kt
+++ b/presentation/src/main/java/com/nto/presentation/screens/profileScreen/ProfileViewModel.kt
@@ -35,11 +35,11 @@ class ProfileViewModel @Inject constructor(private val useCase: ProfileUseCase)
}
fun scan(navController: NavController) {
- navController.navigate(Destinations.Scan.toString())
+ navController.navigate(Destinations.Scan)
}
fun option(navController: NavController) {
- navController.navigate(Destinations.Options.toString())
+ navController.navigate(Destinations.Options)
}
init {
diff --git a/presentation/src/main/java/com/nto/presentation/screens/scanResult/ScanResultScreen.kt b/presentation/src/main/java/com/nto/presentation/screens/scanResult/ScanResultScreen.kt
new file mode 100644
index 0000000..ebc1bd4
--- /dev/null
+++ b/presentation/src/main/java/com/nto/presentation/screens/scanResult/ScanResultScreen.kt
@@ -0,0 +1,2 @@
+package com.nto.presentation.screens.scanResult
+