From fc5592ff7576688a1e4f0a28daba1371ad254f08 Mon Sep 17 00:00:00 2001 From: AntsyLich <59261191+AntsyLich@users.noreply.github.com> Date: Sun, 27 Sep 2026 22:44:15 +0600 Subject: [PATCH] Don't bring back extension stores removed during a refresh A store's refreshed details are written only if the store still exists when its fetch returns, so one removed while its index was loading stays removed. The unused get query becomes contains. --- .../extension/repository/ExtensionStoreRepositoryImpl.kt | 4 ++++ data/src/main/sqldelight/tachiyomi/data/extension_store.sq | 6 ++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/data/src/main/java/mihon/data/extension/repository/ExtensionStoreRepositoryImpl.kt b/data/src/main/java/mihon/data/extension/repository/ExtensionStoreRepositoryImpl.kt index 4f63f4132..4a7bb4712 100644 --- a/data/src/main/java/mihon/data/extension/repository/ExtensionStoreRepositoryImpl.kt +++ b/data/src/main/java/mihon/data/extension/repository/ExtensionStoreRepositoryImpl.kt @@ -1,6 +1,7 @@ package mihon.data.extension.repository import app.cash.sqldelight.async.coroutines.awaitAsList +import app.cash.sqldelight.async.coroutines.awaitAsOne import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import dev.zacsweers.metro.Inject @@ -49,6 +50,9 @@ class ExtensionStoreRepositoryImpl( service.fetch(store.index_url) .mapCatching { database.transaction { + if (!database.extension_storeQueries.contains(store.index_url).awaitAsOne()) { + return@transaction + } upsert(it) if (store.index_url != it.indexUrl) { database.extension_storeQueries.delete(store.index_url) diff --git a/data/src/main/sqldelight/tachiyomi/data/extension_store.sq b/data/src/main/sqldelight/tachiyomi/data/extension_store.sq index 8f98bcf6d..b30583262 100644 --- a/data/src/main/sqldelight/tachiyomi/data/extension_store.sq +++ b/data/src/main/sqldelight/tachiyomi/data/extension_store.sq @@ -11,10 +11,8 @@ CREATE TABLE extension_store( extension_list_url TEXT ); -get: -SELECT * -FROM extension_store -WHERE index_url = :indexUrl; +contains: +SELECT EXISTS(SELECT 0 FROM extension_store WHERE index_url = :indexUrl); getAll: SELECT *