From 528bdcaeccd974a89990bbc39683bb9b1004faba Mon Sep 17 00:00:00 2001 From: Darkeye14 Date: Sat, 9 Nov 2024 17:57:31 +0530 Subject: [PATCH] Center sync issues resolved --- .../center/center_list/ui/CenterListScreen.kt | 20 +- .../center/navigation/CenterNavigation.kt | 26 +- .../SyncCentersDialogScreen.kt | 11 +- .../mifosxdroid/adapters/CenterAdapter.kt | 52 ---- .../adapters/CentersListAdapter.kt | 108 --------- .../mifosxdroid/components/Navigation.kt | 21 +- .../res/layout/activity_center_details.xml | 55 ----- .../main/res/layout/activity_center_list.xml | 14 -- .../res/layout/fragment_center_details.xml | 223 ------------------ .../main/res/layout/fragment_center_list.xml | 30 --- .../main/res/layout/fragment_centers_list.xml | 55 ----- .../main/res/navigation/home_nav_graph.xml | 5 - 12 files changed, 41 insertions(+), 579 deletions(-) delete mode 100644 mifosng-android/src/main/java/com/mifos/mifosxdroid/adapters/CenterAdapter.kt delete mode 100644 mifosng-android/src/main/java/com/mifos/mifosxdroid/adapters/CentersListAdapter.kt delete mode 100644 mifosng-android/src/main/res/layout/activity_center_details.xml delete mode 100644 mifosng-android/src/main/res/layout/activity_center_list.xml delete mode 100644 mifosng-android/src/main/res/layout/fragment_center_details.xml delete mode 100755 mifosng-android/src/main/res/layout/fragment_center_list.xml delete mode 100755 mifosng-android/src/main/res/layout/fragment_centers_list.xml diff --git a/feature/center/src/main/java/com/mifos/feature/center/center_list/ui/CenterListScreen.kt b/feature/center/src/main/java/com/mifos/feature/center/center_list/ui/CenterListScreen.kt index 0be04d07e41..d537100acd4 100644 --- a/feature/center/src/main/java/com/mifos/feature/center/center_list/ui/CenterListScreen.kt +++ b/feature/center/src/main/java/com/mifos/feature/center/center_list/ui/CenterListScreen.kt @@ -72,6 +72,7 @@ import com.mifos.core.designsystem.theme.White import com.mifos.core.objects.group.Center import com.mifos.core.ui.components.SelectionModeTopAppBar import com.mifos.feature.center.R +import com.mifos.feature.center.sync_centers_dialog.SyncCenterDialogScreen import kotlinx.coroutines.flow.flowOf @Composable @@ -105,7 +106,7 @@ fun CenterListScreen( @Composable fun CenterListScreen( - paddingValues : PaddingValues, + paddingValues: PaddingValues, state: CenterListUiState, createNewCenter: () -> Unit, onRefresh: () -> Unit, @@ -121,6 +122,9 @@ fun CenterListScreen( isInSelectionMode = false selectedItems.clear() } + val sync = remember { + mutableStateOf(false) + } BackHandler(enabled = isInSelectionMode) { resetSelectionMode() } @@ -149,8 +153,9 @@ fun CenterListScreen( actions = { FilledTonalButton( onClick = { + sync.value = true syncClicked(selectedItems.toList()) - resetSelectionMode() + // resetSelectionMode() }, ) { Icon( @@ -210,6 +215,17 @@ fun CenterListScreen( is CenterListUiState.CenterListDb -> CenterListDbContent(centerList = state.centers) } + if (sync.value) { + SyncCenterDialogScreen( + dismiss = { + sync.value = false + selectedItems.clear() + resetSelectionMode() + }, + hide = { sync.value = false }, + centers = selectedItems.toList() + ) + } PullRefreshIndicator( refreshing = refreshState, state = pullRefreshState, diff --git a/feature/center/src/main/java/com/mifos/feature/center/navigation/CenterNavigation.kt b/feature/center/src/main/java/com/mifos/feature/center/navigation/CenterNavigation.kt index 829b6eaeabb..290ef29f5ed 100644 --- a/feature/center/src/main/java/com/mifos/feature/center/navigation/CenterNavigation.kt +++ b/feature/center/src/main/java/com/mifos/feature/center/navigation/CenterNavigation.kt @@ -29,7 +29,7 @@ fun NavGraphBuilder.centerNavGraph( centerListScreenRoute( paddingValues = paddingValues, createNewCenter = navController::navigateCreateCenterScreenRoute, - syncClicked = navController::navigateSyncCentersDialog, // TODO open sync dialog inside center list screen + syncClicked = { }, // TODO open sync dialog inside center list screen onCenterSelect = navController::navigateCenterDetailsScreenRoute ) centerDetailScreenRoute( @@ -45,10 +45,7 @@ fun NavGraphBuilder.centerNavGraph( createCenterScreenRoute( onCreateSuccess = navController::popBackStack ) - syncCentersDialogRoute( - dismiss = navController::popBackStack, - hide = navController::popBackStack, - ) + } } @@ -116,25 +113,6 @@ fun NavGraphBuilder.createCenterScreenRoute( } } -fun NavGraphBuilder.syncCentersDialogRoute( - dismiss : ()->Unit, - hide : ()->Unit, -) { - composable( - route = CenterScreens.SyncCenterPayloadsScreen.route, - arguments = listOf(navArgument(Constants.CENTER, builder = { type = NavType.IntType })) - ) { - SyncCenterDialogScreen( - dismiss = dismiss, - hide = hide, - ) - } -} - -fun NavController.navigateSyncCentersDialog(list: List
) { - navigate(CenterScreens.SyncCenterPayloadsScreen.arguments(list)) -} - fun NavController.navigateCenterDetailsScreenRoute(centerId: Int) { navigate(CenterScreens.CenterDetailScreen.argument(centerId)) } diff --git a/feature/center/src/main/java/com/mifos/feature/center/sync_centers_dialog/SyncCentersDialogScreen.kt b/feature/center/src/main/java/com/mifos/feature/center/sync_centers_dialog/SyncCentersDialogScreen.kt index 42dfbade825..5f061af69d4 100644 --- a/feature/center/src/main/java/com/mifos/feature/center/sync_centers_dialog/SyncCentersDialogScreen.kt +++ b/feature/center/src/main/java/com/mifos/feature/center/sync_centers_dialog/SyncCentersDialogScreen.kt @@ -1,5 +1,6 @@ package com.mifos.feature.center.sync_centers_dialog +import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -19,6 +20,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign @@ -102,7 +104,8 @@ fun SyncGroupDialogContent( Column( modifier = Modifier .fillMaxWidth() - .padding(8.dp), + .padding(8.dp) + .background(Color.Yellow), horizontalAlignment = Alignment.CenterHorizontally ) { Text( @@ -181,14 +184,14 @@ fun SyncGroupDialogContent( Row( modifier = Modifier.fillMaxWidth() ) { - if (uiData.isSyncSuccess) { + FilledTonalButton( onClick = { okClicked() }, modifier = Modifier.weight(1f) ) { Text(text = stringResource(id = R.string.feature_center_dialog_action_ok)) } - } else { + FilledTonalButton( onClick = { cancelClicked() }, modifier = Modifier.weight(1f) @@ -204,7 +207,7 @@ fun SyncGroupDialogContent( ) { Text(text = stringResource(id = R.string.feature_center_hide)) } - } + } } } diff --git a/mifosng-android/src/main/java/com/mifos/mifosxdroid/adapters/CenterAdapter.kt b/mifosng-android/src/main/java/com/mifos/mifosxdroid/adapters/CenterAdapter.kt deleted file mode 100644 index d78ecef9c22..00000000000 --- a/mifosng-android/src/main/java/com/mifos/mifosxdroid/adapters/CenterAdapter.kt +++ /dev/null @@ -1,52 +0,0 @@ -/* - * This project is licensed under the open source MPL V2. - * See https://github.com/openMF/android-client/blob/master/LICENSE.md - */ -package com.mifos.mifosxdroid.adapters - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.BaseAdapter -import com.mifos.core.objects.db.MeetingCenter -import com.mifos.mifosxdroid.R -import com.mifos.mifosxdroid.databinding.RowCenterItemBinding - -class CenterAdapter(context: Context?, centers: List) : BaseAdapter() { - private val layoutInflater: LayoutInflater - private val centers: List - - init { - layoutInflater = LayoutInflater.from(context) - this.centers = centers - } - - override fun getCount(): Int { - return centers.size - } - - override fun getItem(i: Int): MeetingCenter { - return centers[i] - } - - override fun getItemId(i: Int): Long { - return 0 - } - - override fun getView(i: Int, view: View, viewGroup: ViewGroup): View { - val binding: RowCenterItemBinding = view.tag as RowCenterItemBinding - val center = centers[i] - binding.tvCenterName.text = center.name - - if (center.isSynced == 1) { - binding.ivCenterSynced.setImageResource(R.drawable.ic_content_import_export) - } - - return view - } -} - - - - diff --git a/mifosng-android/src/main/java/com/mifos/mifosxdroid/adapters/CentersListAdapter.kt b/mifosng-android/src/main/java/com/mifos/mifosxdroid/adapters/CentersListAdapter.kt deleted file mode 100644 index 1a9490fb9c0..00000000000 --- a/mifosng-android/src/main/java/com/mifos/mifosxdroid/adapters/CentersListAdapter.kt +++ /dev/null @@ -1,108 +0,0 @@ -package com.mifos.mifosxdroid.adapters - -import android.graphics.Color -import android.os.Build -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.RecyclerView -import com.mifos.core.objects.group.Center -import com.mifos.mifosxdroid.R -import com.mifos.mifosxdroid.core.SelectableAdapter -import com.mifos.mifosxdroid.views.CircularImageView -import com.mifos.utils.Utils - - -class CentersListAdapter( - val onCenterClick: (Int) -> Unit, - val onCenterLongClick: (Int) -> Unit -) : SelectableAdapter() { - - private var centers: List
= ArrayList() - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - val viewHolder = ViewHolder( - LayoutInflater.from(parent.context) - .inflate(R.layout.row_center_list_item, parent, false) - ) - viewHolder.itemView.setOnClickListener { - if (viewHolder.adapterPosition != RecyclerView.NO_POSITION) - onCenterClick(viewHolder.adapterPosition) - } - viewHolder.itemView.setOnLongClickListener { - if (viewHolder.adapterPosition != RecyclerView.NO_POSITION) - onCenterLongClick(viewHolder.adapterPosition) - return@setOnLongClickListener true - } - return viewHolder - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val center = centers[position] - holder.apply { - tvAccountNumber.text = String.format( - itemView.context.getString(R.string.centerList_account_prefix), center.accountNo - ) - tvCenterId.text = center.id.toString() - tvCenterName.text = center.name - if (center.staffId != null) { - tvStaffId.text = center.staffId.toString() - tvStaffName.text = center.staffName - } else { - tvStaffId.text = "" - tvStaffName.setText(R.string.no_staff) - } - tvOfficeId.text = center.officeId.toString() - tvOfficeName.text = center.officeName - ivStatusIndicator.setImageDrawable( - Utils.setCircularBackground( - if (center.active == true) R.color.light_green else R.color.light_red, - itemView.context - ) - ) - - //Changing the Color of Selected Centers - viewSelectedOverlay.setBackgroundColor( - if (isSelected(position)) { - if (Build.VERSION.SDK_INT >= 23) { - ContextCompat.getColor(itemView.context, R.color.primary) - } else { - itemView.context.resources.getColor(R.color.primary) - } - } else Color.WHITE - ) - ivSyncStatus.visibility = if (center.sync) View.VISIBLE else View.INVISIBLE - } - } - - - fun setCenters(centers: List
) { - this.centers = centers - notifyDataSetChanged() - } - - fun getItem(position: Int) = centers[position] - - - override fun getItemId(i: Int) = 0L - - override fun getItemCount() = centers.size - - - class ViewHolder(v: View) : RecyclerView.ViewHolder(v) { - val ivStatusIndicator: CircularImageView = v.findViewById(R.id.iv_status_indicator) - val tvAccountNumber: TextView = v.findViewById(R.id.tv_account_number) - val tvCenterName: TextView = v.findViewById(R.id.tv_center_name) - val tvCenterId: TextView = v.findViewById(R.id.tv_center_id) - val tvStaffName: TextView = v.findViewById(R.id.tv_staff_name) - val tvStaffId: TextView = v.findViewById(R.id.tv_staff_id) - val tvOfficeName: TextView = v.findViewById(R.id.tv_office_name) - val tvOfficeId: TextView = v.findViewById(R.id.tv_office_id) - val viewSelectedOverlay: View = v.findViewById(R.id.card_view) - val ivSyncStatus: ImageView = v.findViewById(R.id.iv_sync_status) - } - -} \ No newline at end of file diff --git a/mifosng-android/src/main/java/com/mifos/mifosxdroid/components/Navigation.kt b/mifosng-android/src/main/java/com/mifos/mifosxdroid/components/Navigation.kt index 4bccaa8e42b..a6e137faff6 100644 --- a/mifosng-android/src/main/java/com/mifos/mifosxdroid/components/Navigation.kt +++ b/mifosng-android/src/main/java/com/mifos/mifosxdroid/components/Navigation.kt @@ -14,7 +14,6 @@ import com.mifos.feature.activate.navigation.navigateToActivateScreen import com.mifos.feature.center.navigation.centerNavGraph import com.mifos.feature.center.navigation.navigateCenterDetailsScreenRoute import com.mifos.feature.center.navigation.navigateCreateCenterScreenRoute -import com.mifos.feature.center.navigation.navigateSyncCentersDialog import com.mifos.feature.checker_inbox_task.navigation.checkerInboxTaskGraph import com.mifos.feature.client.navigation.clientNavGraph import com.mifos.feature.client.navigation.navigateClientDetailsScreen @@ -117,7 +116,12 @@ fun Navigation( savingsNavGraph( navController = navController, onBackPressed = navController::popBackStack, - loadMoreSavingsAccountInfo = { navController.navigateToDataTable(Constants.DATA_TABLE_NAME_SAVINGS, it) }, + loadMoreSavingsAccountInfo = { + navController.navigateToDataTable( + Constants.DATA_TABLE_NAME_SAVINGS, + it + ) + }, loadDocuments = { navController.navigateToDocumentListScreen( it, @@ -171,11 +175,10 @@ fun Navigation( paddingValues = padding, onActivateCenter = navController::navigateToActivateScreen, addSavingsAccount = { -// TODO() check this logic navController.navigateToAddSavingsAccount(it, 0, true) }, - ) + ) reportNavGraph( navController = navController @@ -209,12 +212,16 @@ fun Navigation( dataTableNavGraph( navController = navController, - clientCreated = { client , userStatus -> + clientCreated = { client, userStatus -> navController.popBackStack() navController.popBackStack() - Toast.makeText(context, context.resources.getString(R.string.client) + MifosResponseHandler.response, Toast.LENGTH_LONG).show() + Toast.makeText( + context, + context.resources.getString(R.string.client) + MifosResponseHandler.response, + Toast.LENGTH_LONG + ).show() - if(userStatus == Constants.USER_ONLINE){ + if (userStatus == Constants.USER_ONLINE) { client.clientId?.let { navController.navigateClientDetailsScreen(it) } } } diff --git a/mifosng-android/src/main/res/layout/activity_center_details.xml b/mifosng-android/src/main/res/layout/activity_center_details.xml deleted file mode 100644 index 26400d179e9..00000000000 --- a/mifosng-android/src/main/res/layout/activity_center_details.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - -