From 68749e1931da3977a67436567ea2c349ba61b62d Mon Sep 17 00:00:00 2001 From: Norbel AMBANUMBEN Date: Fri, 4 Oct 2024 13:36:18 +0100 Subject: [PATCH 1/3] fix(workers): worker input error --- .../kotlin/org/ooni/probe/background/AppWorkerManager.kt | 2 +- .../org/ooni/probe/background/DescriptorUpdateWorker.kt | 9 +++++---- .../probe/data/repositories/TestDescriptorRepository.kt | 7 +++++++ .../org/ooni/probe/ui/descriptor/DescriptorScreen.kt | 3 ++- .../sqldelight/org/ooni/probe/data/TestDescriptor.sq | 3 +++ 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/composeApp/src/androidMain/kotlin/org/ooni/probe/background/AppWorkerManager.kt b/composeApp/src/androidMain/kotlin/org/ooni/probe/background/AppWorkerManager.kt index 6c8911987..33b8b90b7 100644 --- a/composeApp/src/androidMain/kotlin/org/ooni/probe/background/AppWorkerManager.kt +++ b/composeApp/src/androidMain/kotlin/org/ooni/probe/background/AppWorkerManager.kt @@ -80,7 +80,7 @@ class AppWorkerManager( DescriptorUpdateWorker.ManualUpdateWorkerName, ExistingWorkPolicy.REPLACE, OneTimeWorkRequestBuilder() - .setInputData(descriptors?.let { DescriptorUpdateWorker.buildWorkData(it) } ?: Data.EMPTY) + .setInputData(descriptors?.let { DescriptorUpdateWorker.buildWorkData(it.map { descriptor-> descriptor.id }) } ?: Data.EMPTY) .setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST) .build(), ) diff --git a/composeApp/src/androidMain/kotlin/org/ooni/probe/background/DescriptorUpdateWorker.kt b/composeApp/src/androidMain/kotlin/org/ooni/probe/background/DescriptorUpdateWorker.kt index e8d34c5d8..66d88bd07 100644 --- a/composeApp/src/androidMain/kotlin/org/ooni/probe/background/DescriptorUpdateWorker.kt +++ b/composeApp/src/androidMain/kotlin/org/ooni/probe/background/DescriptorUpdateWorker.kt @@ -43,9 +43,9 @@ class DescriptorUpdateWorker( override suspend fun doWork(): Result { return coroutineScope { val descriptors = getDescriptors() ?: return@coroutineScope Result.failure() - if (descriptors.isEmpty()) return@coroutineScope Result.success(buildWorkData(descriptors)) + if (descriptors.isEmpty()) return@coroutineScope Result.success(buildWorkData(descriptors.map { it.id })) dependencies.getDescriptorUpdate.invoke(descriptors) - return@coroutineScope Result.success(buildWorkData(descriptors)) + return@coroutineScope Result.success(buildWorkData(descriptors.map { it.id })) } } @@ -53,7 +53,8 @@ class DescriptorUpdateWorker( val descriptorsJson = inputData.getString(DATA_KEY_DESCRIPTORS) if (descriptorsJson != null) { try { - return json.decodeFromString>(descriptorsJson) + val ids = json.decodeFromString>(descriptorsJson) + return testDescriptorRepository.selectByRunIds(ids).first() } catch (e: Exception) { Logger.w("Could not start update worker: invalid configuration", e) return null @@ -83,7 +84,7 @@ class DescriptorUpdateWorker( } companion object { - fun buildWorkData(descriptors: List): Data { + fun buildWorkData(descriptors: List): Data { return workDataOf( DATA_KEY_DESCRIPTORS to Dependencies.buildJson().encodeToString(descriptors), ) diff --git a/composeApp/src/commonMain/kotlin/org/ooni/probe/data/repositories/TestDescriptorRepository.kt b/composeApp/src/commonMain/kotlin/org/ooni/probe/data/repositories/TestDescriptorRepository.kt index c04f271c3..8b763ebdd 100644 --- a/composeApp/src/commonMain/kotlin/org/ooni/probe/data/repositories/TestDescriptorRepository.kt +++ b/composeApp/src/commonMain/kotlin/org/ooni/probe/data/repositories/TestDescriptorRepository.kt @@ -26,6 +26,13 @@ class TestDescriptorRepository( .mapToList(backgroundDispatcher) .map { list -> list.mapNotNull { it.toModel() } } + fun selectByRunIds(ids: List) = + database.testDescriptorQueries + .selectByRunIds(ids.map { it.value }) + .asFlow() + .mapToList(backgroundDispatcher) + .map { list -> list.mapNotNull { it.toModel() } } + suspend fun createOrIgnore(models: List) { withContext(backgroundDispatcher) { database.transaction { diff --git a/composeApp/src/commonMain/kotlin/org/ooni/probe/ui/descriptor/DescriptorScreen.kt b/composeApp/src/commonMain/kotlin/org/ooni/probe/ui/descriptor/DescriptorScreen.kt index 38c83c0af..06ad3ba8c 100644 --- a/composeApp/src/commonMain/kotlin/org/ooni/probe/ui/descriptor/DescriptorScreen.kt +++ b/composeApp/src/commonMain/kotlin/org/ooni/probe/ui/descriptor/DescriptorScreen.kt @@ -208,7 +208,8 @@ fun DescriptorScreen( } if (state.isRefreshing) { UpdateProgressStatus( - modifier = Modifier.align(Alignment.BottomCenter).padding(bottom = 48.dp), + modifier = Modifier.align(Alignment.BottomCenter) + .padding(WindowInsets.navigationBars.asPaddingValues()), type = state.refreshType, ) } diff --git a/composeApp/src/commonMain/sqldelight/org/ooni/probe/data/TestDescriptor.sq b/composeApp/src/commonMain/sqldelight/org/ooni/probe/data/TestDescriptor.sq index 19933dd28..ab6d2645e 100644 --- a/composeApp/src/commonMain/sqldelight/org/ooni/probe/data/TestDescriptor.sq +++ b/composeApp/src/commonMain/sqldelight/org/ooni/probe/data/TestDescriptor.sq @@ -73,5 +73,8 @@ UPDATE TestDescriptor SET auto_update = ? WHERE runId = ?; selectAll: SELECT * FROM TestDescriptor; +selectByRunIds: +SELECT * FROM TestDescriptor WHERE runId IN ?; + deleteByRunId: DELETE FROM TestDescriptor WHERE runId = ?; From 0d3af448c8805d81f89cbbf60b1ac54212dcc9a7 Mon Sep 17 00:00:00 2001 From: Norbel AMBANUMBEN Date: Fri, 4 Oct 2024 13:41:37 +0100 Subject: [PATCH 2/3] chore: fix formatting --- .../org/ooni/probe/background/AppWorkerManager.kt | 11 ++++++++++- .../ooni/probe/background/DescriptorUpdateWorker.kt | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/composeApp/src/androidMain/kotlin/org/ooni/probe/background/AppWorkerManager.kt b/composeApp/src/androidMain/kotlin/org/ooni/probe/background/AppWorkerManager.kt index 33b8b90b7..c81c5ba5f 100644 --- a/composeApp/src/androidMain/kotlin/org/ooni/probe/background/AppWorkerManager.kt +++ b/composeApp/src/androidMain/kotlin/org/ooni/probe/background/AppWorkerManager.kt @@ -80,7 +80,16 @@ class AppWorkerManager( DescriptorUpdateWorker.ManualUpdateWorkerName, ExistingWorkPolicy.REPLACE, OneTimeWorkRequestBuilder() - .setInputData(descriptors?.let { DescriptorUpdateWorker.buildWorkData(it.map { descriptor-> descriptor.id }) } ?: Data.EMPTY) + .setInputData( + descriptors?.let { + DescriptorUpdateWorker.buildWorkData( + it.map { + descriptor -> + descriptor.id + }, + ) + } ?: Data.EMPTY, + ) .setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST) .build(), ) diff --git a/composeApp/src/androidMain/kotlin/org/ooni/probe/background/DescriptorUpdateWorker.kt b/composeApp/src/androidMain/kotlin/org/ooni/probe/background/DescriptorUpdateWorker.kt index 66d88bd07..afac9b82e 100644 --- a/composeApp/src/androidMain/kotlin/org/ooni/probe/background/DescriptorUpdateWorker.kt +++ b/composeApp/src/androidMain/kotlin/org/ooni/probe/background/DescriptorUpdateWorker.kt @@ -53,7 +53,7 @@ class DescriptorUpdateWorker( val descriptorsJson = inputData.getString(DATA_KEY_DESCRIPTORS) if (descriptorsJson != null) { try { - val ids = json.decodeFromString>(descriptorsJson) + val ids = json.decodeFromString>(descriptorsJson) return testDescriptorRepository.selectByRunIds(ids).first() } catch (e: Exception) { Logger.w("Could not start update worker: invalid configuration", e) From 29385eecbe613a55a25929f770306becf32350c8 Mon Sep 17 00:00:00 2001 From: Norbel AMBANUMBEN Date: Mon, 7 Oct 2024 11:47:12 +0100 Subject: [PATCH 3/3] chore: disable import ordering --- .editorconfig | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.editorconfig b/.editorconfig index aa25b0228..1c009d0d7 100644 --- a/.editorconfig +++ b/.editorconfig @@ -15,3 +15,5 @@ insert_final_newline = true [*.{kt,kts}] ktlint_standard_multiline-expression-wrapping = disabled ktlint_standard_string-template-indent = disabled +ktlint_standard_import-ordering = disabled +