From 05e61c8b003a1714a4c99fbfc4414bce5b7db5a4 Mon Sep 17 00:00:00 2001 From: Lasta Apps Date: Mon, 20 Jan 2025 13:40:36 +0200 Subject: [PATCH] fix: Minor bug fixes, remove ingredient --- .../Generate_DB_migrations.xml | 25 ++++++ .../agata/data/mapers/DtoToDomainMapper.kt | 4 +- .../agata/data/mapers/EntityToDomainMapper.kt | 84 +++++++++--------- .../lastaapps/api/buffet/api/BuffetScraper.kt | 1 - .../api/buffet/data/BuffetDatabaseFactory.kt | 3 +- .../buffet/data/mappers/DtoToEntityMapper.kt | 3 +- .../data/mappers/EntityToDomainMapper.kt | 2 - .../api/buffet/data/model/DishDto.kt | 3 +- .../api/buffet/domain/model/BuffetType.kt | 4 +- .../src/commonMain/sqldelight/buffet/Dish.sq | 5 +- .../src/commonMain/sqldelight/databases/2.db | Bin 0 -> 8192 bytes .../commonMain/sqldelight/migrations/1.sqm | 22 +++++ .../api/buffet/test/BuffetScraperTest.kt | 10 +-- .../api/core/domain/model/WeekDish.kt | 3 +- .../api/core/domain/model/dish/Dish.kt | 12 --- .../main/domain/usecase/GetSelectedMenzaUC.kt | 6 +- .../today/ui/navigation/RateDishComponent.kt | 2 - .../features/today/ui/vm/DishListViewModel.kt | 2 +- .../today/ui/widget/DishComponents.kt | 16 +--- .../today/ui/widget/TodayDishDetail.kt | 26 ------ .../features/week/ui/widget/WeekDishList.kt | 2 +- .../menza/ui/components/BaseDialog.kt | 12 ++- app/src/main/res/values-cs/strings.xml | 1 - app/src/main/res/values/strings.xml | 1 - 24 files changed, 118 insertions(+), 131 deletions(-) create mode 100644 .idea/runConfigurations/Generate_DB_migrations.xml create mode 100644 api/buffet/src/commonMain/sqldelight/databases/2.db create mode 100644 api/buffet/src/commonMain/sqldelight/migrations/1.sqm diff --git a/.idea/runConfigurations/Generate_DB_migrations.xml b/.idea/runConfigurations/Generate_DB_migrations.xml new file mode 100644 index 00000000..a9c92ee1 --- /dev/null +++ b/.idea/runConfigurations/Generate_DB_migrations.xml @@ -0,0 +1,25 @@ + + + + + + + true + true + false + false + + + \ No newline at end of file diff --git a/api/agata/src/commonMain/kotlin/cz/lastaapps/menza/api/agata/data/mapers/DtoToDomainMapper.kt b/api/agata/src/commonMain/kotlin/cz/lastaapps/menza/api/agata/data/mapers/DtoToDomainMapper.kt index 76345215..9fb1a798 100644 --- a/api/agata/src/commonMain/kotlin/cz/lastaapps/menza/api/agata/data/mapers/DtoToDomainMapper.kt +++ b/api/agata/src/commonMain/kotlin/cz/lastaapps/menza/api/agata/data/mapers/DtoToDomainMapper.kt @@ -1,5 +1,5 @@ /* - * Copyright 2024, Petr Laštovička as Lasta apps, All rights reserved + * Copyright 2025, Petr Laštovička as Lasta apps, All rights reserved * * This file is part of Menza. * @@ -23,7 +23,6 @@ import cz.lastaapps.api.core.domain.model.WeekDayDish import cz.lastaapps.api.core.domain.model.WeekDish import cz.lastaapps.api.core.domain.model.WeekDishCategory import cz.lastaapps.menza.api.agata.data.model.dto.WeekDishDto -import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList import kotlinx.datetime.LocalDate @@ -64,5 +63,4 @@ private fun WeekDishDto.toDomain() = amount = amount?.trim(), priceNormal = null, priceDiscounted = null, - ingredients = persistentListOf(), ) diff --git a/api/agata/src/commonMain/kotlin/cz/lastaapps/menza/api/agata/data/mapers/EntityToDomainMapper.kt b/api/agata/src/commonMain/kotlin/cz/lastaapps/menza/api/agata/data/mapers/EntityToDomainMapper.kt index 43fc9c45..ab92b5ee 100644 --- a/api/agata/src/commonMain/kotlin/cz/lastaapps/menza/api/agata/data/mapers/EntityToDomainMapper.kt +++ b/api/agata/src/commonMain/kotlin/cz/lastaapps/menza/api/agata/data/mapers/EntityToDomainMapper.kt @@ -1,5 +1,5 @@ /* - * Copyright 2024, Petr Laštovička as Lasta apps, All rights reserved + * Copyright 2025, Petr Laštovička as Lasta apps, All rights reserved * * This file is part of Menza. * @@ -91,14 +91,13 @@ internal fun DishEntity.toDomain( photoLink = dish.photoLink, pictogram = pictograms.map(PictogramEntity::name).toImmutableList(), servingPlaces = - servingPlaces - .map { entity -> - ServingPlace( - name = entity.name, - abbrev = entity.abbrev, - ) - }.toImmutableList(), - ingredients = persistentListOf(), + servingPlaces + .map { entity -> + ServingPlace( + name = entity.name, + abbrev = entity.abbrev, + ) + }.toImmutableList(), isActive = isActive, ) } @@ -161,16 +160,16 @@ internal fun InfoEntity?.toDomain( openingTimes = openingTimes.toDomain().toImmutableList(), links = links.map { it.toDomain() }.toImmutableList(), address = - address?.let { - Address( - location = address.address.let(::LocationName), - gps = - LatLong( - lat = address.lat.toFloat(), - long = address.long.toFloat(), - ), - ) - }, + address?.let { + Address( + location = address.address.let(::LocationName), + gps = + LatLong( + lat = address.lat.toFloat(), + long = address.long.toFloat(), + ), + ) + }, ) private fun ContactEntity.toDomain() = @@ -191,25 +190,25 @@ fun List.toDomain() = name = one.servingPlaceName, abbrev = one.servingPlaceAbbrev, types = - entities1 - .groupBy { it.description } - .entries - .map { (description, entities2) -> - PlaceOpeningType( - description = description, - times = - entities2 - .map { - PlaceOpeningTime( - startDay = it.dayFrom ?: DayOfWeek.MONDAY, - endDay = it.dayTo ?: it.dayFrom ?: DayOfWeek.MONDAY, - startTime = it.timeFrom, - endTime = it.timeTo, - ) - }.sortedBy { it.startDay } - .toImmutableList(), - ) - }.toImmutableList(), + entities1 + .groupBy { it.description } + .entries + .map { (description, entities2) -> + PlaceOpeningType( + description = description, + times = + entities2 + .map { + PlaceOpeningTime( + startDay = it.dayFrom ?: DayOfWeek.MONDAY, + endDay = it.dayTo ?: it.dayFrom ?: DayOfWeek.MONDAY, + startTime = it.timeFrom, + endTime = it.timeTo, + ) + }.sortedBy { it.startDay } + .toImmutableList(), + ) + }.toImmutableList(), ) } @@ -230,10 +229,10 @@ internal fun List.toDomain(language: DataLanguage) = nameShort = null, name = value.groupName.trim(), dishList = - values - .sortedBy { it.itemOrder } - .map { it.toDomain(language) } - .toImmutableList(), + values + .sortedBy { it.itemOrder } + .map { it.toDomain(language) } + .toImmutableList(), ) }.toImmutableList() @@ -250,6 +249,5 @@ private fun StrahovEntity.toDomain(language: DataLanguage) = photoLink = photoLink, pictogram = persistentListOf(), servingPlaces = persistentListOf(), - ingredients = persistentListOf(), isActive = true, ) diff --git a/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/api/BuffetScraper.kt b/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/api/BuffetScraper.kt index 52bd1ef6..2946684e 100644 --- a/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/api/BuffetScraper.kt +++ b/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/api/BuffetScraper.kt @@ -199,7 +199,6 @@ internal class BuffetScraperImpl : BuffetScraper { type = type.removeHtml(), name = name.removeHtml(), price = price.toInt(), - ingredients = emptyList(), order = index, ) }.mapLeft { diff --git a/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/data/BuffetDatabaseFactory.kt b/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/data/BuffetDatabaseFactory.kt index acf11daf..ed0159ba 100644 --- a/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/data/BuffetDatabaseFactory.kt +++ b/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/data/BuffetDatabaseFactory.kt @@ -1,5 +1,5 @@ /* - * Copyright 2024, Petr Laštovička as Lasta apps, All rights reserved + * Copyright 2025, Petr Laštovička as Lasta apps, All rights reserved * * This file is part of Menza. * @@ -39,7 +39,6 @@ internal object BuffetDatabaseFactory { DishEntity.Adapter( buffetAdapter = BuffetAdapter, dayOfWeekAdapter = DayOfWeekAdapter, - ingredientsAdapter = StringListAdapter, ), ) } diff --git a/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/data/mappers/DtoToEntityMapper.kt b/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/data/mappers/DtoToEntityMapper.kt index c72bc934..f60b2b9b 100644 --- a/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/data/mappers/DtoToEntityMapper.kt +++ b/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/data/mappers/DtoToEntityMapper.kt @@ -1,5 +1,5 @@ /* - * Copyright 2024, Petr Laštovička as Lasta apps, All rights reserved + * Copyright 2025, Petr Laštovička as Lasta apps, All rights reserved * * This file is part of Menza. * @@ -38,7 +38,6 @@ private fun List.toEntity(buffet: BuffetType) = type = dish.type, name = dish.name, price = dish.price.toLong(), - ingredients = dish.ingredients, itemOrder = dish.order.toLong(), ) } diff --git a/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/data/mappers/EntityToDomainMapper.kt b/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/data/mappers/EntityToDomainMapper.kt index 1bd9364c..799dc18a 100644 --- a/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/data/mappers/EntityToDomainMapper.kt +++ b/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/data/mappers/EntityToDomainMapper.kt @@ -68,7 +68,6 @@ internal fun List.toDomainDays(menzaType: MenzaType.Buffet): List.toDomainWeek( amount = null, priceNormal = dish.price.toFloat(), priceDiscounted = null, - ingredients = dish.ingredients.toImmutableList(), ) }.toPersistentList(), ) diff --git a/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/data/model/DishDto.kt b/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/data/model/DishDto.kt index 29583258..edba76c5 100644 --- a/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/data/model/DishDto.kt +++ b/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/data/model/DishDto.kt @@ -1,5 +1,5 @@ /* - * Copyright 2023, Petr Laštovička as Lasta apps, All rights reserved + * Copyright 2025, Petr Laštovička as Lasta apps, All rights reserved * * This file is part of Menza. * @@ -30,6 +30,5 @@ internal data class DishDto( val type: String, val name: String, val price: Int, - val ingredients: List, val order: Int, ) diff --git a/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/domain/model/BuffetType.kt b/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/domain/model/BuffetType.kt index 29ecc70e..da562f23 100644 --- a/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/domain/model/BuffetType.kt +++ b/api/buffet/src/commonMain/kotlin/cz/lastaapps/api/buffet/domain/model/BuffetType.kt @@ -1,5 +1,5 @@ /* - * Copyright 2024, Petr Laštovička as Lasta apps, All rights reserved + * Copyright 2025, Petr Laštovička as Lasta apps, All rights reserved * * This file is part of Menza. * @@ -37,5 +37,5 @@ internal fun MenzaType.Buffet.toType(): BuffetType = internal fun BuffetType.toMenzaType() = when (this) { BuffetType.FS -> FS - BuffetType.FEL -> FS + BuffetType.FEL -> FEL } diff --git a/api/buffet/src/commonMain/sqldelight/buffet/Dish.sq b/api/buffet/src/commonMain/sqldelight/buffet/Dish.sq index 1da0b73f..1a104d86 100644 --- a/api/buffet/src/commonMain/sqldelight/buffet/Dish.sq +++ b/api/buffet/src/commonMain/sqldelight/buffet/Dish.sq @@ -3,16 +3,15 @@ import kotlin.collections.List; import kotlinx.datetime.DayOfWeek; import kotlin.String; +-- Primary key is not used as they can put really anything there and I don't want to crash because of it +-- PRIMARY KEY (buffet, dayOfWeek, type) CREATE TABLE DishEntity ( buffet TEXT AS BuffetType NOT NULL, dayOfWeek INTEGER AS DayOfWeek NOT NULL, type TEXT NOT NULL, name TEXT NOT NULL, price INTEGER NOT NULL, - ingredients TEXT AS List NOT NULL, itemOrder INTEGER NOT NULL - -- Primary key is not used as they can put really anything there and I don't want to crash because of it - -- PRIMARY KEY (buffet, dayOfWeek, type) ); getForBuffet: diff --git a/api/buffet/src/commonMain/sqldelight/databases/2.db b/api/buffet/src/commonMain/sqldelight/databases/2.db new file mode 100644 index 0000000000000000000000000000000000000000..b36fdc23ba376c54e3a9032697f890a9478f6b38 GIT binary patch literal 8192 zcmeI#K}&={6bJAb2?Al+Ze2P&Zw0ZJzCc#P5{QyJQP(j?lG4PT0*}ky_EYx^L@1Z8 z5&u6v^vzQbzuQ~gMWwS;ytS2abRmv}l;V;|2qC#Vt|5JYFf@Gc``;qP;$t`Cx8(dp z@P$AC0uX=z1Rwwb2tWV=5P$##{+z(Z$iw3xklUFv*{i)N*UzeUrR&Bg?>beXR;0tL zNYQvsr#^AA_oA?lw0hJOCtUYYbpAETO_vl8*1phftkqJb-{!7s?9_L)sV2{xwtTXC s{>2M^m9)8Sf6V=}emCc(AAtY_AOHafKmY;|fB*y_009U<;2#To0w=ylvj6}9 literal 0 HcmV?d00001 diff --git a/api/buffet/src/commonMain/sqldelight/migrations/1.sqm b/api/buffet/src/commonMain/sqldelight/migrations/1.sqm new file mode 100644 index 00000000..0c6d4904 --- /dev/null +++ b/api/buffet/src/commonMain/sqldelight/migrations/1.sqm @@ -0,0 +1,22 @@ +import cz.lastaapps.api.buffet.domain.model.BuffetType; +import kotlin.collections.List; +import kotlinx.datetime.DayOfWeek; +import kotlin.String; + +-- drop ingredients +CREATE TABLE DishEntityTmp( + buffet TEXT AS BuffetType NOT NULL, + dayOfWeek INTEGER AS DayOfWeek NOT NULL, + type TEXT NOT NULL, + name TEXT NOT NULL, + price INTEGER NOT NULL, + itemOrder INTEGER NOT NULL +); +INSERT INTO DishEntityTmp( + buffet, dayOfWeek, type, name, price, itemOrder +) +SELECT + buffet, dayOfWeek, type, name, price, itemOrder +FROM DishEntity; +DROP TABLE DishEntity; +ALTER TABLE DishEntityTmp RENAME TO DishEntity; diff --git a/api/buffet/src/jvmTest/kotlin/cz/lastaapps/api/buffet/test/BuffetScraperTest.kt b/api/buffet/src/jvmTest/kotlin/cz/lastaapps/api/buffet/test/BuffetScraperTest.kt index 2854b0f3..bfe9f7cc 100644 --- a/api/buffet/src/jvmTest/kotlin/cz/lastaapps/api/buffet/test/BuffetScraperTest.kt +++ b/api/buffet/src/jvmTest/kotlin/cz/lastaapps/api/buffet/test/BuffetScraperTest.kt @@ -96,8 +96,6 @@ class BuffetScraperTest : type shouldBe "Hlavní jídlo 2" name shouldBe "Kuřecí steak s pikantní omáčkou, hranolky" price shouldBe 139 - ingredients shouldBe - listOf() } commonTest(fel, listOf(4, 4, 3, 3, 5)) @@ -106,8 +104,6 @@ class BuffetScraperTest : type shouldBe "Hlavní jídlo 1" name shouldBe "Plněný paprikový lusk, houskové knedlíky (rýže )" price shouldBe 138 - ingredients shouldBe - listOf() } } @@ -136,8 +132,6 @@ class BuffetScraperTest : type shouldBe "Hlavní jídlo 2" name shouldBe "Smažený květák, vařené brambory, tatarská omáčka" price shouldBe 139 - ingredients shouldBe - listOf() } commonTest(fel, listOf(4, 4, 3, 3, 5)) @@ -146,8 +140,6 @@ class BuffetScraperTest : type shouldBe "Hlavní jídlo 1" name shouldBe "Smažená aljašská treska, bramborová kaše" price shouldBe 136 - ingredients shouldBe - listOf() } } @@ -190,7 +182,7 @@ private fun commonTest( // checks if all the html parts were successfully removed buffet .map { day -> - day.dishList.map { listOf(it.name, it.type, it.ingredients.toString()) } + day.dishList.map { listOf(it.name, it.type) } }.flatten() .flatten() .forEach { diff --git a/api/core/src/commonMain/kotlin/cz/lastaapps/api/core/domain/model/WeekDish.kt b/api/core/src/commonMain/kotlin/cz/lastaapps/api/core/domain/model/WeekDish.kt index 76199a29..33be1dbc 100644 --- a/api/core/src/commonMain/kotlin/cz/lastaapps/api/core/domain/model/WeekDish.kt +++ b/api/core/src/commonMain/kotlin/cz/lastaapps/api/core/domain/model/WeekDish.kt @@ -1,5 +1,5 @@ /* - * Copyright 2023, Petr Laštovička as Lasta apps, All rights reserved + * Copyright 2025, Petr Laštovička as Lasta apps, All rights reserved * * This file is part of Menza. * @@ -37,5 +37,4 @@ data class WeekDish( val amount: String?, val priceNormal: Float?, val priceDiscounted: Float?, - val ingredients: ImmutableList, ) diff --git a/api/core/src/commonMain/kotlin/cz/lastaapps/api/core/domain/model/dish/Dish.kt b/api/core/src/commonMain/kotlin/cz/lastaapps/api/core/domain/model/dish/Dish.kt index 8484e88c..777f9dcf 100644 --- a/api/core/src/commonMain/kotlin/cz/lastaapps/api/core/domain/model/dish/Dish.kt +++ b/api/core/src/commonMain/kotlin/cz/lastaapps/api/core/domain/model/dish/Dish.kt @@ -40,7 +40,6 @@ data class Dish( val photoLink: String?, val pictogram: ImmutableList, val servingPlaces: ImmutableList, - val ingredients: ImmutableList, val isActive: Boolean, val rating: Rating = Rating.empty, ) { @@ -62,7 +61,6 @@ data class Dish( persistentListOf( ServingPlace("Radnice", "R"), ), - ingredients = persistentListOf(), isActive = true, ) val soupJezeckova = @@ -81,7 +79,6 @@ data class Dish( persistentListOf( ServingPlace("Radnice", "R"), ), - ingredients = persistentListOf(), isActive = true, ) val dishHnedaOmacka = @@ -100,7 +97,6 @@ data class Dish( persistentListOf( ServingPlace("Radnice", "R"), ), - ingredients = persistentListOf(), isActive = true, ) val dishKuratko = @@ -119,7 +115,6 @@ data class Dish( persistentListOf( ServingPlace("Radnice", "R"), ), - ingredients = persistentListOf(), isActive = true, ) val dishPtacek = @@ -138,7 +133,6 @@ data class Dish( persistentListOf( ServingPlace("Radnice", "R"), ), - ingredients = persistentListOf(), isActive = true, ) val dishNoky = @@ -157,7 +151,6 @@ data class Dish( persistentListOf( ServingPlace("Radnice", "R"), ), - ingredients = persistentListOf(), isActive = true, ) val dishTux = @@ -176,7 +169,6 @@ data class Dish( persistentListOf( ServingPlace("Radnice", "R"), ), - ingredients = persistentListOf(), isActive = true, ) val dishKunda = @@ -196,7 +188,6 @@ data class Dish( persistentListOf( ServingPlace("Radnice", "R"), ), - ingredients = persistentListOf(), isActive = true, ) val dishMaxipes = @@ -215,7 +206,6 @@ data class Dish( persistentListOf( ServingPlace("Radnice", "R"), ), - ingredients = persistentListOf(), isActive = true, ) val dishMisterious = @@ -234,7 +224,6 @@ data class Dish( persistentListOf( ServingPlace("Magistrát", "J"), ), - ingredients = persistentListOf(), isActive = true, ) val desertKrtkuvDort = @@ -253,7 +242,6 @@ data class Dish( persistentListOf( ServingPlace("Radnice", "R"), ), - ingredients = persistentListOf(), isActive = true, ) } diff --git a/app/src/main/kotlin/cz/lastaapps/menza/features/main/domain/usecase/GetSelectedMenzaUC.kt b/app/src/main/kotlin/cz/lastaapps/menza/features/main/domain/usecase/GetSelectedMenzaUC.kt index 8f35b799..67b9bc94 100644 --- a/app/src/main/kotlin/cz/lastaapps/menza/features/main/domain/usecase/GetSelectedMenzaUC.kt +++ b/app/src/main/kotlin/cz/lastaapps/menza/features/main/domain/usecase/GetSelectedMenzaUC.kt @@ -1,5 +1,5 @@ /* - * Copyright 2024, Petr Laštovička as Lasta apps, All rights reserved + * Copyright 2025, Petr Laštovička as Lasta apps, All rights reserved * * This file is part of Menza. * @@ -19,10 +19,12 @@ package cz.lastaapps.menza.features.main.domain.usecase +import cz.lastaapps.api.core.domain.model.Menza import cz.lastaapps.api.main.domain.usecase.GetMenzaListUC import cz.lastaapps.core.domain.UCContext import cz.lastaapps.core.domain.UseCase import cz.lastaapps.menza.features.main.domain.SelectedMenzaRepo +import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged @@ -31,7 +33,7 @@ class GetSelectedMenzaUC internal constructor( private val repo: SelectedMenzaRepo, private val getMenzaList: GetMenzaListUC, ) : UseCase(context) { - suspend operator fun invoke() = + suspend operator fun invoke(): Flow = combine( repo.getSelectedMenza(), getMenzaList(), diff --git a/app/src/main/kotlin/cz/lastaapps/menza/features/today/ui/navigation/RateDishComponent.kt b/app/src/main/kotlin/cz/lastaapps/menza/features/today/ui/navigation/RateDishComponent.kt index c2934b87..cbe3fc4d 100644 --- a/app/src/main/kotlin/cz/lastaapps/menza/features/today/ui/navigation/RateDishComponent.kt +++ b/app/src/main/kotlin/cz/lastaapps/menza/features/today/ui/navigation/RateDishComponent.kt @@ -20,7 +20,6 @@ package cz.lastaapps.menza.features.today.ui.navigation import androidx.compose.runtime.Composable -import androidx.compose.ui.window.DialogProperties import com.arkivanov.decompose.ComponentContext import cz.lastaapps.api.core.domain.model.DishOriginDescriptor import cz.lastaapps.menza.features.today.ui.screen.RateDishScreen @@ -55,7 +54,6 @@ internal class DefaultRateDishComponent( internal fun RateDishContent(component: RateDishComponent) { BaseDialog( onDismissRequest = component::dismiss, - properties = DialogProperties(dismissOnClickOutside = false), ) { RateDishScreen( viewModel = component.viewModel, diff --git a/app/src/main/kotlin/cz/lastaapps/menza/features/today/ui/vm/DishListViewModel.kt b/app/src/main/kotlin/cz/lastaapps/menza/features/today/ui/vm/DishListViewModel.kt index a2c682d5..c55dbd60 100644 --- a/app/src/main/kotlin/cz/lastaapps/menza/features/today/ui/vm/DishListViewModel.kt +++ b/app/src/main/kotlin/cz/lastaapps/menza/features/today/ui/vm/DishListViewModel.kt @@ -87,7 +87,7 @@ internal class DishListViewModel( log.i { "Registered a new: $newMenza" } updateState { - if (selectedMenza?.getOrNull()?.type != newMenza?.type) { + if (selectedMenza?.getOrNull()?.type != newMenza?.type || newMenza == null) { copy( selectedMenza = newMenza.toOption(), items = persistentListOf(), diff --git a/app/src/main/kotlin/cz/lastaapps/menza/features/today/ui/widget/DishComponents.kt b/app/src/main/kotlin/cz/lastaapps/menza/features/today/ui/widget/DishComponents.kt index f7d2e2ab..255b5641 100644 --- a/app/src/main/kotlin/cz/lastaapps/menza/features/today/ui/widget/DishComponents.kt +++ b/app/src/main/kotlin/cz/lastaapps/menza/features/today/ui/widget/DishComponents.kt @@ -1,5 +1,5 @@ /* - * Copyright 2024, Petr Laštovička as Lasta apps, All rights reserved + * Copyright 2025, Petr Laštovička as Lasta apps, All rights reserved * * This file is part of Menza. * @@ -136,9 +136,9 @@ internal fun DishRatingBadge( ) { Surface( modifier = - modifier - .shadow(4.dp, shape = CircleShape) - .clip(MaterialTheme.shapes.medium), + modifier + .shadow(4.dp, shape = CircleShape) + .clip(MaterialTheme.shapes.medium), // .clickable { onRating() } color = MaterialTheme.colorScheme.inversePrimary, ) { @@ -226,13 +226,5 @@ internal fun DishInfoRow( ) } } - dish.ingredients.takeIf { it.isNotEmpty() }?.let { ingredients -> - Text( - text = ingredients.joinToString(separator = ", "), - modifier = Modifier.weight(1f), - textAlign = TextAlign.End, - style = MaterialTheme.typography.bodySmall, - ) - } } } diff --git a/app/src/main/kotlin/cz/lastaapps/menza/features/today/ui/widget/TodayDishDetail.kt b/app/src/main/kotlin/cz/lastaapps/menza/features/today/ui/widget/TodayDishDetail.kt index e6f41ac9..da7c32c3 100644 --- a/app/src/main/kotlin/cz/lastaapps/menza/features/today/ui/widget/TodayDishDetail.kt +++ b/app/src/main/kotlin/cz/lastaapps/menza/features/today/ui/widget/TodayDishDetail.kt @@ -134,11 +134,6 @@ fun TodayDishDetail( allergens = dish.allergens, ) } - AnimatedAppearance(350.milliseconds, enter = slideInVertically { it } + fadeIn()) { - Ingredients( - ingredients = dish.ingredients, - ) - } } } @@ -429,27 +424,6 @@ private fun AllergenIdBadge( } } -@Composable -private fun Ingredients( - ingredients: ImmutableList, - modifier: Modifier = Modifier, -) { - if (ingredients.isEmpty()) return - - Column( - modifier = modifier, - verticalArrangement = Arrangement.spacedBy(Padding.Smaller), - ) { - Text( - text = stringResource(R.string.today_info_ingredients_title), - style = MaterialTheme.typography.titleLarge, - ) - ingredients.forEach { ingredient -> - Text(text = ingredient) - } - } -} - @Composable private fun DishImageInfo( dish: Dish, diff --git a/app/src/main/kotlin/cz/lastaapps/menza/features/week/ui/widget/WeekDishList.kt b/app/src/main/kotlin/cz/lastaapps/menza/features/week/ui/widget/WeekDishList.kt index 1639f022..e17d747f 100644 --- a/app/src/main/kotlin/cz/lastaapps/menza/features/week/ui/widget/WeekDishList.kt +++ b/app/src/main/kotlin/cz/lastaapps/menza/features/week/ui/widget/WeekDishList.kt @@ -195,7 +195,7 @@ private fun rememberDateFormatter(): @Composable (LocalDate) -> String { char(' ') dayOfMonth(padding = NONE) char('.') - monthNumber() + monthNumber(padding = NONE) char('.') } diff --git a/app/src/main/kotlin/cz/lastaapps/menza/ui/components/BaseDialog.kt b/app/src/main/kotlin/cz/lastaapps/menza/ui/components/BaseDialog.kt index 556c1113..7f4f568d 100644 --- a/app/src/main/kotlin/cz/lastaapps/menza/ui/components/BaseDialog.kt +++ b/app/src/main/kotlin/cz/lastaapps/menza/ui/components/BaseDialog.kt @@ -1,5 +1,5 @@ /* - * Copyright 2024, Petr Laštovička as Lasta apps, All rights reserved + * Copyright 2025, Petr Laštovička as Lasta apps, All rights reserved * * This file is part of Menza. * @@ -46,7 +46,15 @@ fun BaseDialog( ) { Dialog( onDismissRequest = onDismissRequest, - properties = properties, + // TODO remove when fixed + // If a predictive back gesture is started, the dialog is dismissed right away, + // because uses clicks outside + properties = + DialogProperties( + dismissOnBackPress = properties.dismissOnBackPress, + dismissOnClickOutside = false, + usePlatformDefaultWidth = properties.usePlatformDefaultWidth, + ), ) { val sourceBackground = remember { MutableInteractionSource() } val sourceSurface = remember { MutableInteractionSource() } diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 0748add6..4c207aed 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -191,7 +191,6 @@ Alergeny Jídlo bez alergenů Alergeny nejsou dostupné - Ingredience Nepodařilo se načíst obrázek Neznámý alergen Server vrátil neplatná data diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3a71efb6..62e64b97 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -207,7 +207,6 @@ Allergens Dish without any allergens Dish allergens aren\'t known - Ingredients Failed to load the image Unknown allergen Server returned invalid data