diff --git a/app/src/main/java/org/koitharu/kotatsu/favourites/domain/FavouritesRepository.kt b/app/src/main/java/org/koitharu/kotatsu/favourites/domain/FavouritesRepository.kt index 1db0d9b54..25a7c9f0d 100644 --- a/app/src/main/java/org/koitharu/kotatsu/favourites/domain/FavouritesRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/favourites/domain/FavouritesRepository.kt @@ -142,8 +142,8 @@ class FavouritesRepository @Inject constructor( suspend fun removeCategories(ids: Collection) { db.withTransaction { for (id in ids) { - db.favouriteCategoriesDao.delete(id) db.favouritesDao.deleteAll(id) + db.favouriteCategoriesDao.delete(id) } } // run after transaction success diff --git a/app/src/main/java/org/koitharu/kotatsu/sync/domain/SyncHelper.kt b/app/src/main/java/org/koitharu/kotatsu/sync/domain/SyncHelper.kt index 8b514a0b3..60128fb84 100644 --- a/app/src/main/java/org/koitharu/kotatsu/sync/domain/SyncHelper.kt +++ b/app/src/main/java/org/koitharu/kotatsu/sync/domain/SyncHelper.kt @@ -65,14 +65,17 @@ class SyncHelper( .url("$baseUrl/resource/$TABLE_FAVOURITES") .post(data.toRequestBody()) .build() - val response = httpClient.newCall(request).execute().parseJsonOrNull() ?: return - val timestamp = response.getLong(FIELD_TIMESTAMP) - val categoriesResult = upsertFavouriteCategories(response.getJSONArray(TABLE_FAVOURITE_CATEGORIES), timestamp) - syncResult.stats.numDeletes += categoriesResult.first().count?.toLong() ?: 0L - syncResult.stats.numInserts += categoriesResult.drop(1).sumOf { it.count?.toLong() ?: 0L } - val favouritesResult = upsertFavourites(response.getJSONArray(TABLE_FAVOURITES), timestamp) - syncResult.stats.numDeletes += favouritesResult.first().count?.toLong() ?: 0L - syncResult.stats.numInserts += favouritesResult.drop(1).sumOf { it.count?.toLong() ?: 0L } + val response = httpClient.newCall(request).execute().parseJsonOrNull() + if (response != null) { + val timestamp = response.getLong(FIELD_TIMESTAMP) + val categoriesResult = + upsertFavouriteCategories(response.getJSONArray(TABLE_FAVOURITE_CATEGORIES), timestamp) + syncResult.stats.numDeletes += categoriesResult.first().count?.toLong() ?: 0L + syncResult.stats.numInserts += categoriesResult.drop(1).sumOf { it.count?.toLong() ?: 0L } + val favouritesResult = upsertFavourites(response.getJSONArray(TABLE_FAVOURITES), timestamp) + syncResult.stats.numDeletes += favouritesResult.first().count?.toLong() ?: 0L + syncResult.stats.numInserts += favouritesResult.drop(1).sumOf { it.count?.toLong() ?: 0L } + } gcFavourites() } @@ -84,13 +87,15 @@ class SyncHelper( .url("$baseUrl/resource/$TABLE_HISTORY") .post(data.toRequestBody()) .build() - val response = httpClient.newCall(request).execute().parseJsonOrNull() ?: return - val result = upsertHistory( - json = response.getJSONArray(TABLE_HISTORY), - timestamp = response.getLong(FIELD_TIMESTAMP), - ) - syncResult.stats.numDeletes += result.first().count?.toLong() ?: 0L - syncResult.stats.numInserts += result.drop(1).sumOf { it.count?.toLong() ?: 0L } + val response = httpClient.newCall(request).execute().parseJsonOrNull() + if (response != null) { + val result = upsertHistory( + json = response.getJSONArray(TABLE_HISTORY), + timestamp = response.getLong(FIELD_TIMESTAMP), + ) + syncResult.stats.numDeletes += result.first().count?.toLong() ?: 0L + syncResult.stats.numInserts += result.drop(1).sumOf { it.count?.toLong() ?: 0L } + } gcHistory() }