Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,9 @@ import com.yapp.ndgl.core.base.UiIntent
import com.yapp.ndgl.core.base.UiSideEffect
import com.yapp.ndgl.core.base.UiState
import com.yapp.ndgl.core.ui.R
import com.yapp.ndgl.core.util.formatDecimal
import com.yapp.ndgl.feature.travel.model.PlaceInfo
import com.yapp.ndgl.feature.travel.model.PlacePhoto
import com.yapp.ndgl.feature.travel.model.PlaceType
import com.yapp.ndgl.feature.travel.model.PriceRange
import kotlin.time.Duration
import kotlin.time.Duration.Companion.hours

data class AddItineraryState(
val travelId: Long = 0,
Expand Down Expand Up @@ -69,28 +66,6 @@ data class SelectedPlaceDetail(
val photos: List<PlacePhoto> = emptyList(),
)

data class PlaceInfo(
val id: String = "",
val name: String = "",
val placeType: PlaceType = PlaceType.ATTRACTION,
val rating: Double? = null,
val userRatingCount: Int? = null,
val priceRange: PriceRange? = null,
val address: String? = null,
val phoneNumber: String? = null,
val openingHours: String? = null,
val googleMapsUri: String? = null,
val websiteUrl: String? = null,
val estimatedDuration: Duration = 1.hours,
val thumbnail: String? = null,
val latitude: Double = 0.0,
val longitude: Double = 0.0,
val isBookMarked: Boolean = false,
) {
val formattedRatingCount: String
get() = userRatingCount?.formatDecimal() ?: ""
}

data class SearchResult(
val googlePlaceId: String,
val name: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import com.yapp.ndgl.feature.travel.additinerary.component.SearchEmptyContent
import com.yapp.ndgl.feature.travel.additinerary.component.SearchPlaceMap
import com.yapp.ndgl.feature.travel.additinerary.component.SearchResultItem
import com.yapp.ndgl.feature.travel.additinerary.component.SearchedPlaceBottomSheet
import com.yapp.ndgl.feature.travel.model.PlaceInfo
import com.yapp.ndgl.feature.travel.model.PlaceType
import kotlin.time.Duration.Companion.hours

Expand Down Expand Up @@ -200,7 +201,7 @@ private val previewRecommendedPlaces = listOf(

private val previewSelectedPlaceDetail = SelectedPlaceDetail(
placeInfo = PlaceInfo(
id = "1",
googlePlaceId = "1",
name = "콜로세움",
placeType = PlaceType.ATTRACTION,
rating = 4.8,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@ import com.yapp.ndgl.core.util.suspendRunCatching
import com.yapp.ndgl.data.travel.repository.PlaceRepository
import com.yapp.ndgl.feature.travel.model.PlacePhoto
import com.yapp.ndgl.feature.travel.model.PlaceType
import com.yapp.ndgl.feature.travel.model.Price
import com.yapp.ndgl.feature.travel.model.PriceRange
import com.yapp.ndgl.feature.travel.model.toPlaceType
import com.yapp.ndgl.feature.travel.model.toPlaceInfo
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
Expand Down Expand Up @@ -219,38 +217,11 @@ class AddItineraryViewModel @AssistedInject constructor(
placeRepository.getPlace(placeId)
}.onSuccess { response ->
loadPlacePhotos(placeId)
val place = response.place
reduce {
val currentDetail = selectedPlaceDetail ?: SelectedPlaceDetail()

copy(
selectedPlaceDetail = currentDetail.copy(
placeInfo = PlaceInfo(
id = place.id,
name = place.name,
placeType = place.category.toPlaceType(),
rating = place.rating,
userRatingCount = place.userRatingCount,
priceRange = place.priceRange?.let {
PriceRange(
startPrice = Price(
currencyCode = it.startPrice.currencyCode,
units = it.startPrice.units,
symbol = it.startPrice.symbol,
),
endPrice = Price(currencyCode = it.endPrice.currencyCode, units = it.endPrice.units, symbol = it.endPrice.symbol),
)
},
address = place.formattedAddress,
phoneNumber = place.nationalPhoneNumber ?: place.internationalPhoneNumber,
openingHours = place.regularOpeningHours?.joinToString("\n"),
googleMapsUri = place.googleMapsUri,
websiteUrl = place.websiteUri,
thumbnail = place.thumbnail,
latitude = place.location.latitude,
longitude = place.location.longitude,
isBookMarked = false,
),
placeInfo = response.toPlaceInfo(),
),
)
}
Expand All @@ -264,7 +235,6 @@ class AddItineraryViewModel @AssistedInject constructor(
delay(1000)
val result = suspendRunCatching { placeRepository.getPlacePhotos(placeId) }
val photos = result.getOrNull()?.photos

if (!photos.isNullOrEmpty()) {
reduce {
val currentDetail = selectedPlaceDetail ?: SelectedPlaceDetail()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,9 @@ internal fun SearchPlaceMap(
) {
if (hasValidLocation) {
val pinState =
rememberMarkerState(key = "pin_${placeInfo.id}", position = LatLng(placeInfo.latitude, placeInfo.longitude))
rememberMarkerState(key = "pin_${placeInfo.googlePlaceId}", position = LatLng(placeInfo.latitude, placeInfo.longitude))
val labelState =
rememberMarkerState(key = "label_${placeInfo.id}", position = LatLng(placeInfo.latitude, placeInfo.longitude))
rememberMarkerState(key = "label_${placeInfo.googlePlaceId}", position = LatLng(placeInfo.latitude, placeInfo.longitude))

Marker(state = pinState)
MarkerComposable(
Expand Down
Loading