refactor(#1940): Improve firmware version comparison (#1952)

This commit is contained in:
James Rich 2025-05-27 16:19:03 -05:00 committed by GitHub
parent 6e4a5b2812
commit 41349ad9cc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 9 additions and 1 deletions

View file

@ -20,6 +20,7 @@ package com.geeksville.mesh.database.entity
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
import com.geeksville.mesh.model.DeviceVersion
import com.geeksville.mesh.network.model.NetworkFirmwareRelease
import kotlinx.serialization.Serializable
@ -73,6 +74,12 @@ data class FirmwareRelease(
val releaseType: FirmwareReleaseType = FirmwareReleaseType.STABLE,
)
fun FirmwareReleaseEntity.asDeviceVersion(): DeviceVersion {
return DeviceVersion(
id.substringBeforeLast(".").replace("v", "")
)
}
enum class FirmwareReleaseType {
STABLE,
ALPHA

View file

@ -20,6 +20,7 @@ package com.geeksville.mesh.repository.api
import com.geeksville.mesh.database.dao.FirmwareReleaseDao
import com.geeksville.mesh.database.entity.FirmwareReleaseEntity
import com.geeksville.mesh.database.entity.FirmwareReleaseType
import com.geeksville.mesh.database.entity.asDeviceVersion
import com.geeksville.mesh.database.entity.asEntity
import com.geeksville.mesh.network.model.NetworkFirmwareRelease
import dagger.Lazy
@ -52,7 +53,7 @@ class FirmwareReleaseLocalDataSource @Inject constructor(
withContext(Dispatchers.IO) {
val releases = firmwareReleaseDao.getReleasesByType(releaseType)
val latestRelease =
releases?.firstOrNull()
releases?.maxBy { it.asDeviceVersion() }
return@withContext latestRelease
}
}