Skip to content

Commit

Permalink
feat: navigation component in compose (#2182)
Browse files Browse the repository at this point in the history
  • Loading branch information
Aditya-gupta99 committed Aug 9, 2024
1 parent 035deec commit f1d9c3c
Show file tree
Hide file tree
Showing 17 changed files with 581 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
Expand Down Expand Up @@ -75,6 +76,7 @@ import kotlinx.coroutines.flow.flowOf

@Composable
fun CenterListScreen(
paddingValues: PaddingValues,
createNewCenter: () -> Unit,
syncClicked: (List<Center>) -> Unit,
onCenterSelect: (Center) -> Unit
Expand All @@ -89,6 +91,7 @@ fun CenterListScreen(
}

CenterListScreen(
paddingValues = paddingValues,
state = state,
createNewCenter = createNewCenter,
onRefresh = {
Expand All @@ -102,6 +105,7 @@ fun CenterListScreen(

@Composable
fun CenterListScreen(
paddingValues : PaddingValues,
state: CenterListUiState,
createNewCenter: () -> Unit,
onRefresh: () -> Unit,
Expand Down Expand Up @@ -136,7 +140,7 @@ fun CenterListScreen(
}

Scaffold(
modifier = Modifier,
modifier = Modifier.padding(paddingValues),
topBar = {
if (isInSelectionMode) {
SelectionModeTopAppBar(
Expand Down Expand Up @@ -568,6 +572,7 @@ private fun CenterListScreenPreview(
@PreviewParameter(CenterListUiStateProvider::class) centerListUiState: CenterListUiState
) {
CenterListScreen(
paddingValues = PaddingValues(),
state = centerListUiState,
createNewCenter = {},
onRefresh = {},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import androidx.compose.foundation.border
import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
Expand Down Expand Up @@ -75,6 +76,7 @@ import com.mifos.feature.client.R

@Composable
fun ClientListScreen(
paddingValues: PaddingValues,
createNewClient: () -> Unit,
syncClicked: (List<Client>) -> Unit,
onClientSelect: (Client) -> Unit,
Expand Down Expand Up @@ -113,7 +115,7 @@ fun ClientListScreen(

Scaffold(
modifier = Modifier
.padding(),
.padding(paddingValues),
topBar = {
if (isInSelectionMode.value) {
SelectionModeTopAppBar(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
Expand Down Expand Up @@ -79,6 +80,7 @@ import kotlinx.coroutines.flow.Flow

@Composable
fun GroupsListRoute(
paddingValues: PaddingValues,
onAddGroupClick: () -> Unit,
onGroupClick: (Group) -> Unit,
onSyncClick: (List<Group>) -> Unit,
Expand All @@ -103,7 +105,8 @@ fun GroupsListRoute(

GroupsListScreen(
modifier = Modifier
.fillMaxSize(),
.fillMaxSize()
.padding(paddingValues),
lazyListState = lazyListState,
swipeRefreshState = swipeRefreshState,
selectedItems = selectedItems,
Expand Down Expand Up @@ -275,7 +278,7 @@ private fun LazyListScope.successState(
isSelected: (Group) -> Boolean,
onGroupClick: (Group) -> Unit,
onSelectItem: (Group) -> Unit
){
) {
items(
count = pagingItems.itemCount
) { index ->
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
@file:OptIn(
ExperimentalMaterialApi::class,
ExperimentalPermissionsApi::class
ExperimentalMaterialApi::class
)

package com.mifos.feature.path_tracking
Expand Down Expand Up @@ -53,7 +52,6 @@ import androidx.core.content.ContextCompat
import androidx.core.content.ContextCompat.registerReceiver
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.google.accompanist.permissions.ExperimentalPermissionsApi
import com.google.android.gms.maps.model.CameraPosition
import com.google.android.gms.maps.model.LatLng
import com.google.gson.Gson
Expand All @@ -75,7 +73,6 @@ import com.mifos.feature.path.tracking.R

@Composable
fun PathTrackingScreen(
userId: Int,
onBackPressed: () -> Unit,
onPathTrackingClick: (List<UserLatLng>) -> Unit
) {
Expand All @@ -92,7 +89,7 @@ fun PathTrackingScreen(
override fun onReceive(context: Context, intent: Intent) {
val action = intent.action
if (Constants.STOP_TRACKING == action) {
viewModel.loadPathTracking(userId)
viewModel.loadPathTracking()
}
}
}
Expand All @@ -109,18 +106,18 @@ fun PathTrackingScreen(
}

LaunchedEffect(Unit) {
viewModel.loadPathTracking(userId)
viewModel.loadPathTracking()
}

PathTrackingScreen(
state = state,
onBackPressed = onBackPressed,
onRetry = {
viewModel.loadPathTracking(userId)
viewModel.loadPathTracking()
},
onPathTrackingClick = onPathTrackingClick,
onRefresh = {
viewModel.refreshCenterList(userId)
viewModel.refreshCenterList()
},
refreshState = refreshState,
userStatus = userStatus,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,15 @@ class PathTrackingViewModel @Inject constructor(
private val _userStatus = MutableStateFlow(prefManager.userStatus)
val userStatus = _userStatus.asStateFlow()

fun refreshCenterList(userId: Int) {
fun refreshCenterList() {
_isRefreshing.value = true
loadPathTracking(userId)
loadPathTracking()
_isRefreshing.value = false
}


fun loadPathTracking(userId: Int) = viewModelScope.launch(Dispatchers.IO) {
getUserPathTrackingUseCase(userId).collect { result ->
fun loadPathTracking() = viewModelScope.launch(Dispatchers.IO) {
getUserPathTrackingUseCase(prefManager.getUserId()).collect { result ->
when (result) {
is Resource.Error -> _pathTrackingUiState.value =
PathTrackingUiState.Error(R.string.feature_path_tracking_failed_to_load_path_tracking)
Expand Down
4 changes: 4 additions & 0 deletions mifosng-android/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@
android:name="com.google.android.geo.API_KEY"
android:value="${GEO_API_KEY}" />

<activity android:name=".DashboardActivity"
android:exported="true"
/>

<activity
android:name=".activity.splashscreen.SplashScreenActivity"
android:exported="true"
Expand Down
Loading

0 comments on commit f1d9c3c

Please sign in to comment.