@@ -30,9 +30,11 @@ import androidx.compose.ui.Modifier
3030import androidx.compose.ui.draw.clip
3131import androidx.compose.ui.draw.rotate
3232import androidx.compose.ui.graphics.ColorFilter
33+ import androidx.compose.ui.platform.LocalContext
3334import androidx.compose.ui.res.painterResource
3435import androidx.compose.ui.res.stringResource
3536import androidx.compose.ui.text.font.FontWeight
37+ import androidx.compose.ui.text.style.TextAlign
3638import androidx.compose.ui.unit.dp
3739import androidx.compose.ui.unit.sp
3840import androidx.core.net.toUri
@@ -51,13 +53,16 @@ import kotlin.math.min
5153import com.wafflestudio.siksha2.ui.KeywordFoodComposition
5254import com.wafflestudio.siksha2.ui.KeywordPrice
5355import com.wafflestudio.siksha2.ui.KeywordTaste
56+ import com.wafflestudio.siksha2.utils.showImageViewer
57+ import org.w3c.dom.Text
5458import timber.log.Timber
5559
5660@Composable
5761fun MenuDetailRoute (
5862 menuId : Long ,
5963 vm : MenuDetailViewModel ,
6064 onToggleLikeMenu : () -> Unit ,
65+ onToggleLikeReview : (Review ) -> Unit ,
6166 onClickLeaveReview : () -> Unit ,
6267 onNavigateToReviewPhoto : (Long ) -> Unit ,
6368 modifier : Modifier = Modifier
@@ -77,7 +82,11 @@ fun MenuDetailRoute(
7782 imageReviews = imageReviews,
7883 keywordDist = keywordDist ? : KeywordDist .Empty ,
7984 onToggleLikeMenu = onToggleLikeMenu,
80- onClickLeaveReview = onClickLeaveReview,
85+ onToggleLikeReview = onToggleLikeReview,
86+ onClickLeaveReview = {
87+ vm.notifySendReviewWaiting()
88+ onClickLeaveReview()
89+ },
8190 onNavigateToReviewPhoto = { menu?.let { onNavigateToReviewPhoto(it.id) } },
8291 modifier = modifier
8392 )
@@ -90,6 +99,7 @@ fun MenuDetailScreen(
9099 imageReviews : LazyPagingItems <Review >,
91100 keywordDist : KeywordDist ,
92101 onToggleLikeMenu : () -> Unit ,
102+ onToggleLikeReview : (Review ) -> Unit ,
93103 onClickLeaveReview : () -> Unit ,
94104 onNavigateToReviewPhoto : () -> Unit ,
95105 modifier : Modifier = Modifier
@@ -102,7 +112,8 @@ fun MenuDetailScreen(
102112 }
103113
104114 LazyColumn (
105- modifier = modifier
115+ modifier = modifier,
116+ horizontalAlignment = Alignment .CenterHorizontally
106117 ) {
107118 item {
108119 Column (
@@ -149,6 +160,7 @@ fun MenuDetailScreen(
149160 MenuKeywordStats (
150161 keywordDist.keywords,
151162 keywordDist.keywordCounts,
163+ keywordDist.keywordTotals,
152164 keywordIcons = listOf (
153165 { KeywordTaste () },
154166 { KeywordPrice () },
@@ -176,11 +188,13 @@ fun MenuDetailScreen(
176188 item {
177189 Spacer (Modifier .height(10 .dp).fillMaxWidth().background(SikshaTheme .colors.Gray100 ))
178190 }
179- item {
180- BriefImageReviews (
181- imageReviews = imageReviews,
182- onNavigateToReviewPhoto = onNavigateToReviewPhoto
183- )
191+ if (imageReviews.itemCount > 0 ) {
192+ item {
193+ BriefImageReviews (
194+ imageReviews = imageReviews,
195+ onNavigateToReviewPhoto = onNavigateToReviewPhoto
196+ )
197+ }
184198 }
185199 item {
186200 Box (
@@ -197,22 +211,35 @@ fun MenuDetailScreen(
197211 )
198212 }
199213 }
200- items(
201- reviews.itemCount,
202- key = reviews.itemKey { it.id }
203- ) { idx ->
204- val review = reviews[idx]
205- if (review != null ) {
206- MenuReviewItem (
207- userName = review.userId.toString(),
208- menuRating = review.score.toFloat(),
209- timeText = review.createdAt,
210- reviewText = review.comment,
211- isLiked = review.isLiked,
212- likeCount = review.likeCount ? : 0L ,
213- keywords = review.keywordReviews.filterNotNull().filter { it.isNotBlank() },
214- imageUris = review.etc.images?.map { it.toUri() } ? : listOf (),
215- modifier = Modifier .padding(horizontal = 14 .dp)
214+ if (reviews.itemCount > 0 ) {
215+ items(
216+ reviews.itemCount,
217+ key = reviews.itemKey { it.id }
218+ ) { idx ->
219+ val review = reviews[idx]
220+ if (review != null ) {
221+ MenuReviewItem (
222+ userName = review.userId.toString(),
223+ menuRating = review.score.toFloat(),
224+ timeText = review.createdAt,
225+ reviewText = review.comment,
226+ isLiked = review.isLiked,
227+ likeCount = review.likeCount,
228+ keywords = review.keywordReviews.filter { it != " " } as List <String >,
229+ onToggleLike = { onToggleLikeReview(review) },
230+ imageUris = review.etc.images?.map { it.toUri() } ? : listOf (),
231+ modifier = Modifier .padding(horizontal = 14 .dp)
232+ )
233+ }
234+ }
235+ } else {
236+ item {
237+ Text (
238+ text = stringResource(R .string.menu_detail_no_review),
239+ fontSize = 15 .sp,
240+ color = SikshaTheme .colors.Black ,
241+ textAlign = TextAlign .Center ,
242+ modifier = Modifier .padding(top = 30 .dp)
216243 )
217244 }
218245 }
@@ -226,6 +253,7 @@ fun BriefImageReviews(
226253 modifier : Modifier = Modifier
227254) {
228255 val imagePreviewScrollState = rememberScrollState()
256+ val context = LocalContext .current
229257 Box (
230258 modifier = modifier
231259 .fillMaxWidth()
@@ -251,7 +279,7 @@ fun BriefImageReviews(
251279 )
252280 }
253281 Row (
254- modifier = Modifier
282+ modifier = Modifier .fillMaxWidth()
255283 .padding(horizontal = 16 .dp)
256284 .horizontalScroll(imagePreviewScrollState),
257285 horizontalArrangement = Arrangement .spacedBy(8 .dp)
@@ -275,7 +303,10 @@ fun BriefImageReviews(
275303 imageUri = it!! .toUri(),
276304 modifier = Modifier
277305 .size(120 .dp)
278- .clip(RoundedCornerShape (10 .dp))
306+ .clip(RoundedCornerShape (10 .dp)),
307+ onClick = {
308+ context.showImageViewer(listOf (it), 0 )
309+ }
279310 )
280311 }
281312 } else {
0 commit comments