Use Set for opening hours instead of list

This commit is contained in:
MM20 2025-04-18 23:41:17 +02:00
parent 30f11565cf
commit c9241320af
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389
3 changed files with 8 additions and 7 deletions

View File

@ -26,7 +26,10 @@ data class OpeningHours(
sealed interface OpeningSchedule {
data object TwentyFourSeven : OpeningSchedule
@Serializable
data class Hours(@Serializable val openingHours: List<OpeningHours>) : OpeningSchedule
data class Hours(@Serializable val openingHours: Set<OpeningHours>) : OpeningSchedule {
@Deprecated("Use the constructor with Set<OpeningHours> instead.")
constructor(openingHours: List<OpeningHours>) : this(openingHours.toSet())
}
}
/**

View File

@ -44,7 +44,7 @@ object OpeningScheduleSerializer : KSerializer<OpeningSchedule> {
)
} catch (e: SerializationException) {
Log.e("MM20", "Failed to deserialize OpeningSchedule.Hours", e)
return OpeningSchedule.Hours(openingHours = emptyList())
return OpeningSchedule.Hours(openingHours = emptySet())
}
}

View File

@ -1,11 +1,9 @@
package de.mm20.launcher2.locations.providers.openstreetmaps
import android.content.Context
import de.mm20.launcher2.ktx.flatMapNotNull
import de.mm20.launcher2.ktx.ifNullOrEmpty
import de.mm20.launcher2.ktx.into
import de.mm20.launcher2.ktx.map
import de.mm20.launcher2.ktx.toMultiMap
import de.mm20.launcher2.locations.OsmLocationSerializer
import de.mm20.launcher2.openstreetmaps.R
import de.mm20.launcher2.search.Location
@ -332,10 +330,10 @@ private fun Map<String, String>.categorize(context: Context): Pair<String?, Loca
}
internal fun parseOpeningSchedule(
it: String?,
openingHours: String?,
localTime: LocalDateTime = LocalDateTime.now()
): OpeningSchedule? {
val parsed = it?.toOpeningHoursOrNull(lenient = true) ?: return null
val parsed = openingHours?.toOpeningHoursOrNull(lenient = true) ?: return null
if (parsed.rules.singleOrNull()?.selector is TwentyFourSeven) {
return OpeningSchedule.TwentyFourSeven
@ -386,7 +384,7 @@ internal fun parseOpeningSchedule(
.singleOrNull()
}
val hours = mutableListOf<OpeningHours>()
val hours = mutableSetOf<OpeningHours>()
for (range in applicableRules) {