diff --git a/core/data/src/commonMain/kotlin/org/meshtastic/core/data/repository/PacketRepositoryImpl.kt b/core/data/src/commonMain/kotlin/org/meshtastic/core/data/repository/PacketRepositoryImpl.kt index 149c62d2b..5f32d491d 100644 --- a/core/data/src/commonMain/kotlin/org/meshtastic/core/data/repository/PacketRepositoryImpl.kt +++ b/core/data/src/commonMain/kotlin/org/meshtastic/core/data/repository/PacketRepositoryImpl.kt @@ -110,8 +110,9 @@ class PacketRepositoryImpl(private val dbManager: DatabaseProvider, private val dao.upsertContactSettings(listOf(updated)) } - override suspend fun getQueuedPackets(): List = - withContext(dispatchers.io) { dbManager.currentDb.value.packetDao().getQueuedPackets() } + override suspend fun getQueuedPackets(): List = withContext(dispatchers.io) { + dbManager.currentDb.value.packetDao().getAllDataPackets().filter { it.status == MessageStatus.QUEUED } + } suspend fun insertRoomPacket(packet: RoomPacket) = withContext(dispatchers.io) { dbManager.currentDb.value.packetDao().insert(packet) } diff --git a/core/database/src/commonMain/kotlin/org/meshtastic/core/database/dao/PacketDao.kt b/core/database/src/commonMain/kotlin/org/meshtastic/core/database/dao/PacketDao.kt index c2ef9c516..3fe4f3d15 100644 --- a/core/database/src/commonMain/kotlin/org/meshtastic/core/database/dao/PacketDao.kt +++ b/core/database/src/commonMain/kotlin/org/meshtastic/core/database/dao/PacketDao.kt @@ -338,15 +338,16 @@ interface PacketDao { ) suspend fun findPacketBySfppHash(hash: ByteString): Packet? + // Fetches all DataPackets for the current node, ordered by time. + // Callers should filter by status in Kotlin (avoids SQLite json_extract dependency). @Query( """ SELECT data FROM packet WHERE (myNodeNum = 0 OR myNodeNum = (SELECT myNodeNum FROM my_node)) - AND json_extract(data, '${"$"}.status') = 'QUEUED' ORDER BY received_time ASC """, ) - suspend fun getQueuedPackets(): List + suspend fun getAllDataPackets(): List @Query( """ diff --git a/core/database/src/commonTest/kotlin/org/meshtastic/core/database/dao/CommonPacketDaoTest.kt b/core/database/src/commonTest/kotlin/org/meshtastic/core/database/dao/CommonPacketDaoTest.kt index 71a7fef1c..cd0c9c672 100644 --- a/core/database/src/commonTest/kotlin/org/meshtastic/core/database/dao/CommonPacketDaoTest.kt +++ b/core/database/src/commonTest/kotlin/org/meshtastic/core/database/dao/CommonPacketDaoTest.kt @@ -164,7 +164,7 @@ abstract class CommonPacketDaoTest { ), ) packetDao.insert(queuedPacket) - val queued = packetDao.getQueuedPackets() + val queued = packetDao.getAllDataPackets().filter { it.status == MessageStatus.QUEUED } assertNotNull(queued) assertEquals(1, queued.size) assertEquals("Queued", queued.first().text) diff --git a/feature/widget/src/main/kotlin/org/meshtastic/feature/widget/LocalStatsWidget.kt b/feature/widget/src/main/kotlin/org/meshtastic/feature/widget/LocalStatsWidget.kt index 099b24cc3..bb4f4e27e 100644 --- a/feature/widget/src/main/kotlin/org/meshtastic/feature/widget/LocalStatsWidget.kt +++ b/feature/widget/src/main/kotlin/org/meshtastic/feature/widget/LocalStatsWidget.kt @@ -18,6 +18,7 @@ package org.meshtastic.feature.widget import android.annotation.SuppressLint import android.content.Context +import android.content.Intent import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.collectAsState @@ -36,13 +37,13 @@ import androidx.glance.Image import androidx.glance.ImageProvider import androidx.glance.LocalContext import androidx.glance.LocalSize -import androidx.glance.action.actionStartActivity import androidx.glance.action.clickable import androidx.glance.appwidget.CircularProgressIndicator import androidx.glance.appwidget.GlanceAppWidget import androidx.glance.appwidget.LinearProgressIndicator import androidx.glance.appwidget.SizeMode import androidx.glance.appwidget.action.actionRunCallback +import androidx.glance.appwidget.action.actionStartActivity import androidx.glance.appwidget.components.CircleIconButton import androidx.glance.appwidget.components.Scaffold import androidx.glance.appwidget.components.TitleBar @@ -148,10 +149,8 @@ class LocalStatsWidget : GlanceModifier.fillMaxSize() .clickable( actionStartActivity( - android.content.ComponentName( - context.packageName, - "org.meshtastic.app.MainActivity", - ), + context.packageManager.getLaunchIntentForPackage(context.packageName) + ?: Intent().setClassName(context.packageName, "org.meshtastic.app.MainActivity"), ), ), ) {