feat: per device DB manager (#3641)

This commit is contained in:
Mac DeCourcy 2025-11-09 08:54:21 -08:00 committed by GitHub
parent f0b9a0ff75
commit cb8d1871c9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 643 additions and 86 deletions

View file

@ -58,6 +58,7 @@ import org.meshtastic.core.data.repository.MeshLogRepository
import org.meshtastic.core.data.repository.NodeRepository
import org.meshtastic.core.data.repository.PacketRepository
import org.meshtastic.core.data.repository.RadioConfigRepository
import org.meshtastic.core.database.DatabaseManager
import org.meshtastic.core.database.entity.MeshLog
import org.meshtastic.core.database.entity.MetadataEntity
import org.meshtastic.core.database.entity.MyNodeEntity
@ -138,6 +139,8 @@ class MeshService : Service() {
@Inject lateinit var nodeRepository: NodeRepository
@Inject lateinit var databaseManager: DatabaseManager
@Inject lateinit var mqttRepository: MQTTRepository
@Inject lateinit var serviceNotifications: MeshServiceNotifications
@ -2008,8 +2011,14 @@ class MeshService : Service() {
"SetDeviceAddress: Device address changed from ${currentAddr.anonymize} to ${deviceAddr.anonymize}",
)
meshPrefs.deviceAddress = deviceAddr
clearDatabases()
clearNotifications()
serviceScope.handledLaunch {
// Clear only in-memory caches to avoid cross-device bleed
discardNodeDB()
// Switch active on-disk DB to device-specific database
databaseManager.switchActiveDatabase(deviceAddr)
// Do not clear packet DB here; messages are per-device and should persist
clearNotifications()
}
} else {
Timber.d("SetDeviceAddress: Device address is unchanged, ignoring.")
}