Half-done open method
Fix unauthorized profile access Fix VisitCard date formatting?
This commit is contained in:
parent
b65a8bb883
commit
3782f2fc97
7
data/src/main/java/com/nto/data/models/ScanResult.kt
Normal file
7
data/src/main/java/com/nto/data/models/ScanResult.kt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
package com.nto.data.models
|
||||||
|
|
||||||
|
enum class ScanResult {
|
||||||
|
OK,
|
||||||
|
CANCELED,
|
||||||
|
ERROR
|
||||||
|
}
|
@ -10,7 +10,7 @@ enum class VisitType {
|
|||||||
data class VisitCardDTO(
|
data class VisitCardDTO(
|
||||||
val name: String = "",
|
val name: String = "",
|
||||||
val id: Long = Long.MAX_VALUE,
|
val id: Long = Long.MAX_VALUE,
|
||||||
val dateString: LocalDateTime = LocalDateTime.now(),
|
val date: LocalDateTime = LocalDateTime.now(),
|
||||||
val visitType: VisitType = VisitType.CARD_ENTRY,
|
val visitType: VisitType = VisitType.CARD_ENTRY,
|
||||||
val qrCode: QRDTO = QRDTO()
|
val qrCode: QRDTO = QRDTO()
|
||||||
)
|
)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.nto.data.repository
|
package com.nto.data.repository
|
||||||
|
|
||||||
import com.nto.data.models.LoginResult
|
import com.nto.data.models.LoginResult
|
||||||
|
import com.nto.data.models.ScanResult
|
||||||
import com.nto.data.models.UserDTO
|
import com.nto.data.models.UserDTO
|
||||||
import com.nto.data.models.cards.VisitCardDTO
|
import com.nto.data.models.cards.VisitCardDTO
|
||||||
import com.nto.data.models.cards.VisitCardWrapper
|
import com.nto.data.models.cards.VisitCardWrapper
|
||||||
@ -12,4 +13,5 @@ interface DataRepository {
|
|||||||
suspend fun getLogin(): String
|
suspend fun getLogin(): String
|
||||||
suspend fun getInfo(): UserDTO
|
suspend fun getInfo(): UserDTO
|
||||||
suspend fun getVisits(id: String?): VisitCardWrapper
|
suspend fun getVisits(id: String?): VisitCardWrapper
|
||||||
|
suspend fun open(): ScanResult
|
||||||
}
|
}
|
@ -3,6 +3,7 @@ package com.nto.data.repository
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Context.MODE_PRIVATE
|
import android.content.Context.MODE_PRIVATE
|
||||||
import com.nto.data.models.LoginResult
|
import com.nto.data.models.LoginResult
|
||||||
|
import com.nto.data.models.ScanResult
|
||||||
import com.nto.data.models.UserDTO
|
import com.nto.data.models.UserDTO
|
||||||
import com.nto.data.models.cards.VisitCardWrapper
|
import com.nto.data.models.cards.VisitCardWrapper
|
||||||
import com.nto.data.utils.Provider
|
import com.nto.data.utils.Provider
|
||||||
@ -22,7 +23,8 @@ class DataRepositoryImpl @Inject constructor(@ApplicationContext private val con
|
|||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun saveToken(token: String, login: String) {
|
override suspend fun saveToken(token: String, login: String) {
|
||||||
context.getSharedPreferences("auth", MODE_PRIVATE).edit().putString("token", token).putString("login", login).apply()
|
context.getSharedPreferences("auth", MODE_PRIVATE).edit().putString("token", token)
|
||||||
|
.putString("login", login).apply()
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun getToken(): String {
|
override suspend fun getToken(): String {
|
||||||
@ -48,4 +50,13 @@ class DataRepositoryImpl @Inject constructor(@ApplicationContext private val con
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override suspend fun open(): ScanResult {
|
||||||
|
val result = Provider.provideRetrofit().open(getToken()).execute()
|
||||||
|
return when (result.code()) {
|
||||||
|
200 -> ScanResult.OK
|
||||||
|
400, 403 -> ScanResult.CANCELED
|
||||||
|
else -> ScanResult.ERROR
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -16,4 +16,7 @@ interface RetrofitApi {
|
|||||||
|
|
||||||
@GET("visits/{login}/visits")
|
@GET("visits/{login}/visits")
|
||||||
fun getVisits(@Header("Authorization") token: String): Call<List<VisitCardDTO>>
|
fun getVisits(@Header("Authorization") token: String): Call<List<VisitCardDTO>>
|
||||||
|
|
||||||
|
@GET("visit/open")
|
||||||
|
fun open(@Header("Authorization") token: String): Call<ResponseBody>
|
||||||
}
|
}
|
@ -1,6 +1,7 @@
|
|||||||
package com.nto.domain.repository
|
package com.nto.domain.repository
|
||||||
|
|
||||||
import com.nto.data.models.LoginResult
|
import com.nto.data.models.LoginResult
|
||||||
|
import com.nto.data.models.ScanResult
|
||||||
import com.nto.data.models.UserDTO
|
import com.nto.data.models.UserDTO
|
||||||
import com.nto.data.models.cards.VisitCardWrapper
|
import com.nto.data.models.cards.VisitCardWrapper
|
||||||
|
|
||||||
@ -10,4 +11,5 @@ interface DomainRepository {
|
|||||||
suspend fun getToken(): String?
|
suspend fun getToken(): String?
|
||||||
suspend fun getInfo(): UserDTO
|
suspend fun getInfo(): UserDTO
|
||||||
suspend fun getVisits(id: String): VisitCardWrapper
|
suspend fun getVisits(id: String): VisitCardWrapper
|
||||||
|
suspend fun open(): ScanResult
|
||||||
}
|
}
|
@ -1,6 +1,7 @@
|
|||||||
package com.nto.domain.repository
|
package com.nto.domain.repository
|
||||||
|
|
||||||
import com.nto.data.models.LoginResult
|
import com.nto.data.models.LoginResult
|
||||||
|
import com.nto.data.models.ScanResult
|
||||||
import com.nto.data.models.UserDTO
|
import com.nto.data.models.UserDTO
|
||||||
import com.nto.data.models.cards.VisitCardWrapper
|
import com.nto.data.models.cards.VisitCardWrapper
|
||||||
import com.nto.data.repository.DataRepositoryImpl
|
import com.nto.data.repository.DataRepositoryImpl
|
||||||
@ -47,4 +48,8 @@ class DomainRepositoryImpl @Inject constructor(private val dataRepositoryImpl: D
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override suspend fun open(): ScanResult {
|
||||||
|
return dataRepositoryImpl.open()
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -0,0 +1,4 @@
|
|||||||
|
package com.nto.domain.usecase
|
||||||
|
|
||||||
|
class ScanUseCase {
|
||||||
|
}
|
@ -26,7 +26,7 @@ class MainActivity : ComponentActivity() {
|
|||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContent {
|
setContent {
|
||||||
NTOTheme {
|
NTOTheme {
|
||||||
//XML SUCKS! We use Jetpack Compose btw :>-
|
//XML SUCKS! We use Jetpack Compose btw :>
|
||||||
this.window.statusBarColor = NTOTheme.colors.primaryText.toArgb()
|
this.window.statusBarColor = NTOTheme.colors.primaryText.toArgb()
|
||||||
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
|
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
|
||||||
val navController = rememberNavController()
|
val navController = rememberNavController()
|
||||||
|
@ -15,7 +15,7 @@ fun Navigation(navController: NavHostController, modifier: Modifier = Modifier)
|
|||||||
NavHost(
|
NavHost(
|
||||||
navController = navController,
|
navController = navController,
|
||||||
modifier = modifier,
|
modifier = modifier,
|
||||||
startDestination = Destinations.Login
|
startDestination = Destinations.Profile
|
||||||
) {
|
) {
|
||||||
composable<Destinations.Login> {
|
composable<Destinations.Login> {
|
||||||
LoginScreen(navController)
|
LoginScreen(navController)
|
||||||
|
@ -24,6 +24,7 @@ import com.nto.data.models.cards.VisitCardDTO
|
|||||||
import com.nto.data.models.cards.VisitType
|
import com.nto.data.models.cards.VisitType
|
||||||
import com.nto.presentation.R
|
import com.nto.presentation.R
|
||||||
import com.nto.presentation.theme.NTOTheme
|
import com.nto.presentation.theme.NTOTheme
|
||||||
|
import java.text.SimpleDateFormat
|
||||||
import java.time.format.DateTimeFormatter
|
import java.time.format.DateTimeFormatter
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
@ -59,7 +60,7 @@ fun VisitCard(data: VisitCardDTO, modifier: Modifier = Modifier) {
|
|||||||
}
|
}
|
||||||
Column(horizontalAlignment = Alignment.End) {
|
Column(horizontalAlignment = Alignment.End) {
|
||||||
Text(
|
Text(
|
||||||
text = data.dateString.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME),
|
text = SimpleDateFormat.getDateInstance().format(data.date),
|
||||||
style = NTOTheme.typography.displaySmall,
|
style = NTOTheme.typography.displaySmall,
|
||||||
fontSize = 12.sp,
|
fontSize = 12.sp,
|
||||||
color = NTOTheme.colors.disabledText
|
color = NTOTheme.colors.disabledText
|
||||||
|
@ -70,7 +70,7 @@ fun ProfileScreen(
|
|||||||
|
|
||||||
LaunchedEffect(Unit) {
|
LaunchedEffect(Unit) {
|
||||||
if (state.isUnauthorized) {
|
if (state.isUnauthorized) {
|
||||||
//navController.navigate(Destinations.Login)
|
navController.navigate(Destinations.Login)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ import com.nto.data.models.Position
|
|||||||
import com.nto.data.models.UserDTO
|
import com.nto.data.models.UserDTO
|
||||||
import com.nto.data.models.cards.VisitCardDTO
|
import com.nto.data.models.cards.VisitCardDTO
|
||||||
import com.nto.presentation.R
|
import com.nto.presentation.R
|
||||||
|
import java.text.SimpleDateFormat
|
||||||
import java.time.format.DateTimeFormatter
|
import java.time.format.DateTimeFormatter
|
||||||
|
|
||||||
data class ProfileState(
|
data class ProfileState(
|
||||||
@ -20,7 +21,7 @@ data class ProfileState(
|
|||||||
this.firstName = o.firstName
|
this.firstName = o.firstName
|
||||||
this.secondName = o.secondName
|
this.secondName = o.secondName
|
||||||
this.thirdName = o.thirdName
|
this.thirdName = o.thirdName
|
||||||
this.lastOpen = o.lastVisit.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)
|
this.lastOpen = SimpleDateFormat.getDateInstance().format(o.lastVisit)
|
||||||
this.job = translatePosition(o.position, context)
|
this.job = translatePosition(o.position, context)
|
||||||
this.isUnauthorized = o.isUnauthorized
|
this.isUnauthorized = o.isUnauthorized
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user