Only fire interval reminders in riding state (#45)
* Only fire interval reminders in riding state * Update release notes
This commit is contained in:
parent
c8d77009fb
commit
f6085b09fd
@ -71,9 +71,9 @@ tasks.register("generateManifest") {
|
|||||||
"latestVersionCode" to android.defaultConfig.versionCode,
|
"latestVersionCode" to android.defaultConfig.versionCode,
|
||||||
"developer" to "timklge",
|
"developer" to "timklge",
|
||||||
"description" to "Shows in-ride alerts after a given time interval, distance or HR / power / speed / cadence out of range",
|
"description" to "Shows in-ride alerts after a given time interval, distance or HR / power / speed / cadence out of range",
|
||||||
"releaseNotes" to "* Use imperial units for temperature and tire pressure if selected\n" +
|
"releaseNotes" to "* Only show reminders while riding\n" +
|
||||||
"* Add additional trigger types for ambient and CORE temperature, gradient and tire pressure\n" +
|
"* Limit reminder title length in list\n" +
|
||||||
"* Add additional beep patterns for Karoo 3"
|
"* Use imperial units for temperature and tire pressure if selected\n"
|
||||||
)
|
)
|
||||||
|
|
||||||
val gson = groovy.json.JsonBuilder(manifest).toPrettyString()
|
val gson = groovy.json.JsonBuilder(manifest).toPrettyString()
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import io.hammerhead.karooext.models.DataType
|
|||||||
import io.hammerhead.karooext.models.HardwareType
|
import io.hammerhead.karooext.models.HardwareType
|
||||||
import io.hammerhead.karooext.models.InRideAlert
|
import io.hammerhead.karooext.models.InRideAlert
|
||||||
import io.hammerhead.karooext.models.PlayBeepPattern
|
import io.hammerhead.karooext.models.PlayBeepPattern
|
||||||
|
import io.hammerhead.karooext.models.RideState
|
||||||
import io.hammerhead.karooext.models.StreamState
|
import io.hammerhead.karooext.models.StreamState
|
||||||
import io.hammerhead.karooext.models.TurnScreenOn
|
import io.hammerhead.karooext.models.TurnScreenOn
|
||||||
import io.hammerhead.karooext.models.UserProfile
|
import io.hammerhead.karooext.models.UserProfile
|
||||||
@ -277,8 +278,6 @@ class KarooReminderExtension : KarooExtension("karoo-reminder", BuildConfig.VERS
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
data class StreamData(val value: Double, val reminders: MutableList<Reminder>? = null, val distanceImperial: Boolean = false, val temperatureImperial: Boolean = false)
|
|
||||||
|
|
||||||
private fun startRangeExceededJob(triggerType: ReminderTrigger): Job {
|
private fun startRangeExceededJob(triggerType: ReminderTrigger): Job {
|
||||||
return CoroutineScope(Dispatchers.IO).launch {
|
return CoroutineScope(Dispatchers.IO).launch {
|
||||||
val preferences = applicationContext.dataStore.data.map { remindersJson ->
|
val preferences = applicationContext.dataStore.data.map { remindersJson ->
|
||||||
@ -306,7 +305,7 @@ class KarooReminderExtension : KarooExtension("karoo-reminder", BuildConfig.VERS
|
|||||||
ReminderTrigger.DISTANCE, ReminderTrigger.ELAPSED_TIME, ReminderTrigger.ENERGY_OUTPUT -> error("Unsupported trigger type: $triggerType")
|
ReminderTrigger.DISTANCE, ReminderTrigger.ELAPSED_TIME, ReminderTrigger.ENERGY_OUTPUT -> error("Unsupported trigger type: $triggerType")
|
||||||
}
|
}
|
||||||
|
|
||||||
karooSystem.streamDataFlow(dataType)
|
val valueStream = karooSystem.streamDataFlow(dataType)
|
||||||
.mapNotNull {
|
.mapNotNull {
|
||||||
val dataPoint = (it as? StreamState.Streaming)?.dataPoint
|
val dataPoint = (it as? StreamState.Streaming)?.dataPoint
|
||||||
|
|
||||||
@ -326,12 +325,15 @@ class KarooReminderExtension : KarooExtension("karoo-reminder", BuildConfig.VERS
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.filter { it != 0.0 }
|
.filter { it != 0.0 }
|
||||||
.combine(preferences) { value, reminders -> StreamData(value, reminders) }
|
|
||||||
.combine(karooSystem.streamUserProfile()) { streamData, profile -> streamData.copy(
|
data class StreamData(val value: Double, val reminders: MutableList<Reminder>, val distanceImperial: Boolean, val temperatureImperial: Boolean, val rideState: RideState)
|
||||||
distanceImperial = profile.preferredUnit.distance == UserProfile.PreferredUnit.UnitType.IMPERIAL,
|
|
||||||
temperatureImperial = profile.preferredUnit.temperature == UserProfile.PreferredUnit.UnitType.IMPERIAL
|
combine(valueStream, preferences, karooSystem.streamUserProfile(), karooSystem.streamRideState()) { value, reminders, profile, rideState ->
|
||||||
) }
|
StreamData(distanceImperial = profile.preferredUnit.distance == UserProfile.PreferredUnit.UnitType.IMPERIAL, temperatureImperial = profile.preferredUnit.temperature == UserProfile.PreferredUnit.UnitType.IMPERIAL,
|
||||||
.let {
|
value = value, reminders = reminders, rideState = rideState)
|
||||||
|
}.filter {
|
||||||
|
it.rideState is RideState.Recording
|
||||||
|
}.let {
|
||||||
@Suppress("KotlinConstantConditions")
|
@Suppress("KotlinConstantConditions")
|
||||||
when (triggerType){
|
when (triggerType){
|
||||||
// Tire pressure, gradient and temperature triggers do not require ongoing measurements, as measurement rate is unknown
|
// Tire pressure, gradient and temperature triggers do not require ongoing measurements, as measurement rate is unknown
|
||||||
@ -350,7 +352,7 @@ class KarooReminderExtension : KarooExtension("karoo-reminder", BuildConfig.VERS
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.map { (actualValue, reminders, distanceImperial, temperatureImperial) ->
|
.map { (actualValue, reminders, distanceImperial, temperatureImperial) ->
|
||||||
val triggered = reminders?.filter { reminder ->
|
val triggered = reminders.filter { reminder ->
|
||||||
val triggerThreshold = when(triggerType) {
|
val triggerThreshold = when(triggerType) {
|
||||||
ReminderTrigger.SPEED_LIMIT_MINIMUM_EXCEEDED, ReminderTrigger.SPEED_LIMIT_MAXIMUM_EXCEEDED -> {
|
ReminderTrigger.SPEED_LIMIT_MINIMUM_EXCEEDED, ReminderTrigger.SPEED_LIMIT_MAXIMUM_EXCEEDED -> {
|
||||||
if (distanceImperial) reminder.interval?.times(0.44704) else reminder.interval?.times(0.277778)
|
if (distanceImperial) reminder.interval?.times(0.44704) else reminder.interval?.times(0.277778)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user