Skip to content

Commit

Permalink
Button click for save and delete trip
Browse files Browse the repository at this point in the history
  • Loading branch information
ksharma-xyz committed Oct 26, 2024
1 parent 416c970 commit 9ddf74d
Show file tree
Hide file tree
Showing 7 changed files with 89 additions and 57 deletions.
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
package xyz.ksharma.krail.trip.planner.ui.state.savedtrip

import xyz.ksharma.krail.trip.planner.ui.state.searchstop.model.StopItem
import xyz.ksharma.krail.trip.planner.ui.state.timetable.Trip

sealed interface SavedTripUiEvent {
data object LoadSavedTrips : SavedTripUiEvent
data class SavedTripClicked(val savedTrip: String) : SavedTripUiEvent
data class DeleteSavedTrip(val savedTrip: String) : SavedTripUiEvent
data class OnSearchButtonClicked(val fromStopItem: StopItem, val toStopItem: StopItem) :
SavedTripUiEvent
data class SavedTripClicked(val trip: Trip) : SavedTripUiEvent
data class DeleteSavedTrip(val trip: Trip) : SavedTripUiEvent
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ data class Trip(
val toStopId: String,
val toStopName: String,
) {
val tripId: String
get() = "$fromStopId$toStopId"

fun toJsonString() = Json.encodeToString(serializer(), this)

companion object {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,12 @@ import xyz.ksharma.krail.design.system.components.Text
import xyz.ksharma.krail.design.system.preview.PreviewComponent
import xyz.ksharma.krail.design.system.theme.KrailTheme
import xyz.ksharma.krail.trip.planner.ui.state.TransportMode
import xyz.ksharma.krail.trip.planner.ui.state.timetable.Trip
import xyz.ksharma.krail.design.system.R as DSR

@Composable
fun SavedTripCard(
origin: String,
destination: String,
trip: Trip,
onStarClick: () -> Unit,
onCardClick: () -> Unit,
modifier: Modifier = Modifier,
Expand Down Expand Up @@ -67,9 +67,10 @@ fun SavedTripCard(
modifier = Modifier
.padding(horizontal = 16.dp)
.weight(1f),
verticalArrangement = Arrangement.spacedBy(8.dp),
) {
Text(text = origin, style = KrailTheme.typography.bodyMedium)
Text(text = destination, style = KrailTheme.typography.bodyMedium)
Text(text = trip.fromStopName, style = KrailTheme.typography.bodyMedium)
Text(text = trip.toStopName, style = KrailTheme.typography.bodyMedium)
}

Box(
Expand Down Expand Up @@ -105,8 +106,12 @@ fun SavedTripCard(
private fun SavedTripCardPreview() {
KrailTheme {
SavedTripCard(
origin = "Edmondson Park Station",
destination = "Harris Park Station",
trip = Trip(
fromStopId = "1",
fromStopName = "Edmondson Park Station",
toStopId = "2",
toStopName = "Harris Park Station",
),
primaryTransportMode = TransportMode.Train(),
onCardClick = {},
onStarClick = {},
Expand All @@ -126,32 +131,48 @@ private fun SavedTripCardListPreview() {
verticalArrangement = Arrangement.spacedBy(16.dp),
) {
SavedTripCard(
origin = "Edmondson Park Station",
destination = "Harris Park Station",
trip = Trip(
fromStopId = "1",
fromStopName = "Edmondson Park Station",
toStopId = "2",
toStopName = "Harris Park Station",
),
primaryTransportMode = TransportMode.Train(),
onCardClick = {},
onStarClick = {},
)

SavedTripCard(
origin = "Harrington Street, Stand D",
destination = "Albert Rd, Stand A",
trip = Trip(
fromStopId = "1",
fromStopName = "Harrington Street, Stand D",
toStopId = "2",
toStopName = "Albert Rd, Stand A",
),
primaryTransportMode = TransportMode.Bus(),
onCardClick = {},
onStarClick = {},
)

SavedTripCard(
origin = "Manly Wharf",
destination = "Circular Quay Wharf",
trip = Trip(
fromStopId = "1",
fromStopName = "Manly Wharf",
toStopId = "2",
toStopName = "Circular Quay Wharf",
),
primaryTransportMode = TransportMode.Ferry(),
onCardClick = {},
onStarClick = {},
)

SavedTripCard(
origin = "Manly Wharf",
destination = "Circular Quay Wharf",
trip = Trip(
fromStopId = "1",
fromStopName = "Manly Wharf",
toStopId = "2",
toStopName = "Circular Quay Wharf",
),
primaryTransportMode = null,
onCardClick = {},
onStarClick = {},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,17 @@ internal fun NavGraphBuilder.savedTripsDestination(navController: NavHostControl
fromStopItem = toStopItem
toStopItem = bufferStop
},
onSearchButtonClick = {
if (fromStopItem != null && toStopItem != null) {
onSearchButtonClick = { fromStop, toStop ->
if (fromStop != null && toStop != null) {
navController.navigate(
TimeTableRoute(
fromStopId = fromStop.stopId,
fromStopName = fromStop.stopName,
toStopId = toStop.stopId,
toStopName = toStop.stopName,
),
)
} else if (fromStopItem != null && toStopItem != null) {
navController.navigate(
TimeTableRoute(
fromStopId = fromStopItem?.stopId!!,
Expand All @@ -88,6 +97,7 @@ internal fun NavGraphBuilder.savedTripsDestination(navController: NavHostControl
Timber.e("Select both stops")
}
},
onEvent = { event -> viewModel.onEvent(event) },
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import xyz.ksharma.krail.design.system.theme.KrailTheme
import xyz.ksharma.krail.trip.planner.ui.R
import xyz.ksharma.krail.trip.planner.ui.components.SavedTripCard
import xyz.ksharma.krail.trip.planner.ui.components.SearchStopRow
import xyz.ksharma.krail.trip.planner.ui.state.savedtrip.SavedTripUiEvent
import xyz.ksharma.krail.trip.planner.ui.state.savedtrip.SavedTripsState
import xyz.ksharma.krail.trip.planner.ui.state.searchstop.model.StopItem

Expand All @@ -33,8 +34,8 @@ fun SavedTripsScreen(
fromButtonClick: () -> Unit = {},
toButtonClick: () -> Unit = {},
onReverseButtonClick: () -> Unit = {},
onSearchButtonClick: () -> Unit = {},
// onEvent: (SavedTripUiEvent) -> Unit = {},
onSearchButtonClick: (StopItem?, StopItem?) -> Unit = { _, _ -> },
onEvent: (SavedTripUiEvent) -> Unit = {},
) {
Box(
modifier = modifier
Expand All @@ -57,10 +58,20 @@ fun SavedTripsScreen(
key = { it.fromStopId + it.toStopId },
) { trip ->
SavedTripCard(
origin = trip.fromStopName,
destination = trip.toStopName,
onStarClick = {},
onCardClick = {},
trip = trip,
onStarClick = { onEvent(SavedTripUiEvent.DeleteSavedTrip(trip)) },
onCardClick = {
onSearchButtonClick(
StopItem(
stopId = trip.fromStopId,
stopName = trip.fromStopName,
),
StopItem(
stopId = trip.toStopId,
stopName = trip.toStopName,
),
)
},
modifier = Modifier.padding(horizontal = 16.dp),
)
Spacer(modifier = Modifier.height(12.dp))
Expand All @@ -74,7 +85,7 @@ fun SavedTripsScreen(
fromButtonClick = fromButtonClick,
toButtonClick = toButtonClick,
onReverseButtonClick = onReverseButtonClick,
onSearchButtonClick = onSearchButtonClick,
onSearchButtonClick = { onSearchButtonClick(null, null) },
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@ import kotlinx.coroutines.flow.onStart
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import timber.log.Timber
import xyz.ksharma.krail.di.AppDispatchers
import xyz.ksharma.krail.di.Dispatcher
import xyz.ksharma.krail.sandook.Sandook
import xyz.ksharma.krail.sandook.di.SandookFactory
import xyz.ksharma.krail.trip.planner.ui.state.savedtrip.SavedTripUiEvent
import xyz.ksharma.krail.trip.planner.ui.state.savedtrip.SavedTripsState
import xyz.ksharma.krail.trip.planner.ui.state.timetable.Trip
import javax.inject.Inject
Expand Down Expand Up @@ -55,37 +57,25 @@ class SavedTripsViewModel @Inject constructor(
}
}

/*
fun onEvent(event: SavedTripUiEvent) {
when (event) {
is SavedTripUiEvent.DeleteSavedTrip -> onDeleteSavedTrip(event.savedTrip)
SavedTripUiEvent.LoadSavedTrips -> onLoadSavedTrips()
is SavedTripUiEvent.SavedTripClicked -> onSavedTripClicked(event.savedTrip)
is SavedTripUiEvent.OnSearchButtonClicked -> onSearchButtonClicked(event.fromStopItem, event.toStopItem)
}
}
private fun onSearchButtonClicked(fromStopItem: StopItem, toStopItem: StopItem) {
Timber.d("onSearchButtonClicked")
}
private fun onSavedTripClicked(savedTrip: String) {
Timber.d("onSavedTripClicked")
fun onEvent(event: SavedTripUiEvent) {
when (event) {
is SavedTripUiEvent.DeleteSavedTrip -> onDeleteSavedTrip(event.trip)
is SavedTripUiEvent.SavedTripClicked -> onSavedTripClicked(event.trip)
}
}

private fun onLoadSavedTrips() {
Timber.d("onLoadSavedTrips")
updateUiState {
copy(trip = "Central to Town Hall")
}
private fun onDeleteSavedTrip(savedTrip: Trip) {
Timber.d("onDeleteSavedTrip: $savedTrip")
viewModelScope.launch(context = ioDispatcher) {
sandook.remove(key = savedTrip.tripId)
loadSavedTrips()
}
}

private fun onDeleteSavedTrip(savedTrip: String) {
Timber.d("onDeleteSavedTrip")
}
private fun onSavedTripClicked(savedTrip: Trip) {
Timber.d("onSavedTripClicked: $savedTrip")
}

*/
private fun updateUiState(block: SavedTripsState.() -> SavedTripsState) {
_uiState.update(block)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,8 @@ class TimeTableViewModel @Inject constructor(
Timber.d("Save Trip Button Clicked")
tripInfo?.let { trip ->
Timber.d("Save Trip: $trip")
sandook.putString(key = trip.fromStopId + trip.toStopId, value = trip.toJsonString())
sandook.getString(key = trip.fromStopId + trip.toStopId)?.let { savedTrip ->
sandook.putString(key = trip.tripId, value = trip.toJsonString())
sandook.getString(key = trip.tripId)?.let { savedTrip ->
Timber.d("Saved Trip (Pref): ${Trip.fromJsonString(savedTrip)}")
}
updateUiState { copy(isTripSaved = true) }
Expand Down

0 comments on commit 9ddf74d

Please sign in to comment.