Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion app/src/main/java/com/tpc/nudj/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,15 @@ class MainActivity : ComponentActivity() {
ClubLandingScreen()
}
entry<ScreenRoute.App.ClubVerificationScreen>{
ClubVerificationScreen(onNavigationBack = {})
ClubVerificationScreen(
onNavigationBack = {
backStack.removeLastOrNull()
},
onNavigateToDashboard = {
backStack.clear()
backStack.add(ScreenRoute.App.ClubDashboard)
}
)
}
entry<ScreenRoute.App.UserDetailsInput> {
DemoScreen(text = "User Details Input")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ import kotlinx.coroutines.launch
@Composable
fun ClubVerificationScreen(
viewModel: ClubVerificationViewModel = hiltViewModel(),
onNavigationBack: () -> Unit
onNavigationBack: () -> Unit,
onNavigateToDashboard: () -> Unit
) {
val clubVerificationUiState by viewModel.clubVerificationUiState.collectAsStateWithLifecycle()

Expand All @@ -57,15 +58,14 @@ fun ClubVerificationScreen(
onBackClick = onNavigationBack,
snackbarHostState = snackbarHostState,
onCheckStatusClick = {
viewModel.onCheckStatusClick()
scope.launch {
val message = if(clubVerificationUiState.isVerified){
"Verified"
} else {
"Not Verified"
viewModel.onCheckStatusClick(
onApproved = onNavigateToDashboard,
onMessage = { message ->
scope.launch {
snackbarHostState.showSnackbar(message)
}
}
snackbarHostState.showSnackbar(message)
}
)
}
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@ package com.tpc.nudj.ui.screen.auth.clubVerification

data class ClubVerificationUiState(
val isLoading: Boolean = false,
val isVerified: Boolean = false
)
val isVerified: Boolean = false,
val verificationStatus: String = "pending"
)
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.tpc.nudj.viewmodels.auth.clubVerification

import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelStore
import androidx.lifecycle.viewModelScope
import com.google.firebase.auth.FirebaseAuth
import com.tpc.nudj.repository.user.UserRepository
import com.tpc.nudj.ui.screen.auth.clubVerification.ClubVerificationUiState
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
Expand All @@ -15,22 +15,47 @@ import javax.inject.Inject


@HiltViewModel
class ClubVerificationViewModel @Inject constructor() : ViewModel() {
class ClubVerificationViewModel @Inject constructor(
private val userRepository: UserRepository
) : ViewModel() {
private val _clubVerificationUiState = MutableStateFlow(ClubVerificationUiState())
val clubVerificationUiState:StateFlow<ClubVerificationUiState> =
val clubVerificationUiState: StateFlow<ClubVerificationUiState> =
_clubVerificationUiState.asStateFlow()

fun onCheckStatusClick() {
private val auth = FirebaseAuth.getInstance()

fun onCheckStatusClick(onApproved: () -> Unit, onMessage: (String) -> Unit) {
val uid = auth.currentUser?.uid ?: return
viewModelScope.launch {
_clubVerificationUiState.update {
it.copy(isLoading = true)
}

delay(1000)

_clubVerificationUiState.update {
it.copy(isLoading = false)
try {
val status = userRepository.fetchClubVerificationStatus(uid)
_clubVerificationUiState.update {
it.copy(
isLoading = false,
verificationStatus = status,
isVerified = status == "approved"
)
}

when (status) {
"approved" -> {
onMessage("Verification Successful!")
onApproved()
}
"pending" -> onMessage("Verification is still pending. Please wait.")
"rejected" -> onMessage("Verification rejected. Please contact support.")
else -> onMessage("Current status: $status")
}
} catch (e: Exception) {
_clubVerificationUiState.update {
it.copy(isLoading = false)
}
onMessage("Error checking status. Please try again.")
}
}
}
}
}