Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 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
Original file line number Diff line number Diff line change
Expand Up @@ -372,9 +372,7 @@ internal fun AuthenticatedNavbarNavigationScreenContent(
)
},
hasDatatables = navController::navigateDataTableList,
onNavigateToSearch = { type ->
navController.navigateToSearchRecord(type)
},
onNavigateToSearch = navController::navigateToSearchRecord,
)

searchRecordNavigation(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,30 +152,28 @@ import kotlin.time.ExperimentalTime
*/

@Composable
internal fun CreateNewClientScreen(
internal fun CreateNewClientScreenRoute(
navigateBack: () -> Unit,
navigateToCreateLoanAccount: (Int) -> Unit,
hasDatatables: (datatables: List<DataTableEntity>, clientPayload: ClientPayloadEntity) -> Unit,
Comment thread
therajanmaurya marked this conversation as resolved.
viewmodel: CreateNewClientViewModel = koinViewModel(),
) {
val uiState by viewmodel.createNewClientUiState.collectAsStateWithLifecycle()
val officeList by viewmodel.showOffices.collectAsStateWithLifecycle()
val staffInOffice by viewmodel.staffInOffices.collectAsStateWithLifecycle()

LaunchedEffect(key1 = Unit) {
viewmodel.loadOfficeAndClientTemplate()
}

CreateNewClientScreen(
uiState = uiState,
officeList = officeList,
staffInOffices = staffInOffice,
navigateToCreateLoanAccount = navigateToCreateLoanAccount,
onRetry = { viewmodel.loadOfficeAndClientTemplate() },
navigateBack = navigateBack,
loadStaffInOffice = { viewmodel.loadStaffInOffices(it) },
createClient = { viewmodel.createClient(clientPayload = it) },
uploadImage = { id ->
viewmodel.uploadImage(id)
},
navigateBack = navigateBack,
hasDatatables = hasDatatables,
onImageSelected = {
viewmodel.updateSelectedImage(it)
Expand All @@ -189,6 +187,7 @@ internal fun CreateNewClientScreen(
onRetry: () -> Unit,
officeList: List<OfficeEntity>,
staffInOffices: List<StaffEntity>,
navigateToCreateLoanAccount: (Int) -> Unit,
loadStaffInOffice: (officeId: Int) -> Unit,
navigateBack: () -> Unit,
onImageSelected: (PlatformFile?) -> Unit,
Expand Down Expand Up @@ -235,7 +234,7 @@ internal fun CreateNewClientScreen(
if (createClientWithImage) {
uploadImage(uiState.id)
} else {
navigateBack.invoke()
navigateToCreateLoanAccount(uiState.id)
}
}

Expand All @@ -255,7 +254,7 @@ internal fun CreateNewClientScreen(
duration = SnackbarDuration.Long,
)
}
navigateBack.invoke()
navigateToCreateLoanAccount(uiState.clientId)
}

is CreateNewClientUiState.ShowWaitingForCheckerApproval -> {
Expand Down Expand Up @@ -1325,7 +1324,7 @@ private class CreateNewClientScreenPreviewProvider :
),
CreateNewClientUiState.ShowProgressbar,
CreateNewClientUiState.ShowClientCreatedSuccessfully(Res.string.feature_client_client_created_successfully),
CreateNewClientUiState.OnImageUploadSuccess(Res.string.feature_client_Image_Upload_Successful),
CreateNewClientUiState.OnImageUploadSuccess(Res.string.feature_client_Image_Upload_Successful, 2),
Comment thread
therajanmaurya marked this conversation as resolved.
CreateNewClientUiState.ShowWaitingForCheckerApproval(Res.string.feature_client_waiting_for_checker_approval),
)
}
Expand All @@ -1345,6 +1344,7 @@ private fun PreviewCreateNewClientScreen(
createClient = { },
uploadImage = { _ -> },
onImageSelected = {},
navigateToCreateLoanAccount = { },
) { _, _ ->
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ sealed class CreateNewClientUiState {

data class ShowStringError(val message: String) : CreateNewClientUiState()

data class OnImageUploadSuccess(val message: StringResource) : CreateNewClientUiState()
data class OnImageUploadSuccess(val message: StringResource, val clientId: Int) : CreateNewClientUiState()

data class ShowClientTemplate(
val clientsTemplate: ClientsTemplateEntity,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import com.mifos.room.entities.organisation.OfficeEntity
import com.mifos.room.entities.organisation.StaffEntity
import com.mifos.room.entities.templates.clients.ClientsTemplateEntity
import io.github.vinceglb.filekit.PlatformFile
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.catch
Expand Down Expand Up @@ -64,6 +65,10 @@ class CreateNewClientViewModel(
selectedImage.value = image
}

init {
loadOfficeAndClientTemplate()
}

fun loadOfficeAndClientTemplate() {
_createNewClientUiState.value = CreateNewClientUiState.ShowProgressbar
// todo combine these 2
Expand Down Expand Up @@ -107,6 +112,7 @@ class CreateNewClientViewModel(
is DataState.Error ->
_createNewClientUiState.value =
CreateNewClientUiState.ShowError(Res.string.feature_client_failed_to_fetch_staffs)

DataState.Loading -> Unit
is DataState.Success -> _staffInOffices.value = result.data
}
Expand Down Expand Up @@ -150,6 +156,7 @@ class CreateNewClientViewModel(
CreateNewClientUiState.ShowClientCreatedSuccessfully(
Res.string.feature_client_client_created_successfully,
)
delay(1000)
_createNewClientUiState.value = CreateNewClientUiState.SetClientId(it)
} ?: run {
_createNewClientUiState.value =
Expand All @@ -176,7 +183,10 @@ class CreateNewClientViewModel(
repository.uploadClientImage(id, requestFile)

_createNewClientUiState.value =
CreateNewClientUiState.OnImageUploadSuccess(Res.string.feature_client_Image_Upload_Successful)
CreateNewClientUiState.OnImageUploadSuccess(
Res.string.feature_client_Image_Upload_Successful,
id,
)
} catch (e: Exception) {
_createNewClientUiState.value =
CreateNewClientUiState.ShowError(Res.string.feature_client_Image_Upload_Failed)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ import com.mifos.feature.client.clientUpcomingCharges.navigateToClientUpcomingCh
import com.mifos.feature.client.clientUpdateDefaultAccount.navigateToUpdateDefaultAccountRoute
import com.mifos.feature.client.clientUpdateDefaultAccount.updateDefaultAccountDestination
import com.mifos.feature.client.clientsList.ClientListScreen
import com.mifos.feature.client.createNewClient.CreateNewClientScreen
import com.mifos.feature.client.createNewClient.CreateNewClientScreenRoute
import com.mifos.feature.client.createShareAccount.createShareAccountDestination
import com.mifos.feature.client.createShareAccount.navigateToCreateShareAccountRoute
import com.mifos.feature.client.documentPreviewScreen.createDocumentPreviewRoute
Expand Down Expand Up @@ -184,6 +184,7 @@ fun NavGraphBuilder.clientNavGraph(
createClientRoute(
onBackPressed = navController::popBackStack,
hasDatatables = hasDatatables,
navigateToCreateLoanAccount = navController::navigateToNewLoanAccountRoute,
Comment thread
itsPronay marked this conversation as resolved.
Outdated
)
Comment thread
itsPronay marked this conversation as resolved.
clientProfileDestination(
onNavigateBack = navController::popBackStack,
Expand Down Expand Up @@ -504,13 +505,15 @@ fun NavGraphBuilder.clientSurveyQuestionRoute(

fun NavGraphBuilder.createClientRoute(
onBackPressed: () -> Unit,
navigateToCreateLoanAccount: (Int) -> Unit,
hasDatatables: KFunction4<List<DataTableEntity>, Any?, Int, MutableList<List<FormWidgetDTO>>, Unit>,
Comment thread
therajanmaurya marked this conversation as resolved.
) {
composable(
route = ClientScreens.CreateClientScreen.route,
) {
CreateNewClientScreen(
CreateNewClientScreenRoute(
navigateBack = onBackPressed,
navigateToCreateLoanAccount = navigateToCreateLoanAccount,
hasDatatables = { datatables, clientPayload ->
hasDatatables(datatables, clientPayload, Constants.CREATE_CLIENT, mutableListOf())
},
Expand Down
Loading