diff --git a/wear/src/main/java/io/homeassistant/companion/android/tiles/CameraTile.kt b/wear/src/main/java/io/homeassistant/companion/android/tiles/CameraTile.kt index 8cc0b0671..4de307d62 100644 --- a/wear/src/main/java/io/homeassistant/companion/android/tiles/CameraTile.kt +++ b/wear/src/main/java/io/homeassistant/companion/android/tiles/CameraTile.kt @@ -28,7 +28,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.cancel import kotlinx.coroutines.guava.future -import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking import kotlinx.coroutines.withContext import okhttp3.OkHttpClient import okhttp3.Request @@ -185,16 +185,17 @@ class CameraTile : TileService() { builder.build() } - override fun onTileAddEvent(requestParams: EventBuilders.TileAddEvent) { - serviceScope.launch { - AppDatabase.getInstance(this@CameraTile) - .cameraTileDao() - .add(CameraTile(id = requestParams.tileId)) + override fun onTileAddEvent(requestParams: EventBuilders.TileAddEvent) = runBlocking { + withContext(Dispatchers.IO) { + val dao = AppDatabase.getInstance(this@CameraTile).cameraTileDao() + if (dao.get(requestParams.tileId) == null) { + dao.add(CameraTile(id = requestParams.tileId)) + } // else already existing, don't overwrite existing tile data } } - override fun onTileRemoveEvent(requestParams: EventBuilders.TileRemoveEvent) { - serviceScope.launch { + override fun onTileRemoveEvent(requestParams: EventBuilders.TileRemoveEvent) = runBlocking { + withContext(Dispatchers.IO) { AppDatabase.getInstance(this@CameraTile) .cameraTileDao() .delete(requestParams.tileId)