Fix downloading manga into existing cbz
parent
f32ff00b68
commit
277d575485
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<string name="account_type_sync" translatable="false">org.kotatsu.debug.sync</string>
|
||||||
|
</resources>
|
||||||
@ -0,0 +1,48 @@
|
|||||||
|
package org.koitharu.kotatsu.local.ui
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import androidx.hilt.work.HiltWorker
|
||||||
|
import androidx.work.BackoffPolicy
|
||||||
|
import androidx.work.Constraints
|
||||||
|
import androidx.work.CoroutineWorker
|
||||||
|
import androidx.work.ExistingWorkPolicy
|
||||||
|
import androidx.work.OneTimeWorkRequestBuilder
|
||||||
|
import androidx.work.WorkManager
|
||||||
|
import androidx.work.WorkerParameters
|
||||||
|
import dagger.assisted.Assisted
|
||||||
|
import dagger.assisted.AssistedInject
|
||||||
|
import org.koitharu.kotatsu.local.domain.LocalMangaRepository
|
||||||
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
|
@HiltWorker
|
||||||
|
class LocalStorageCleanupWorker @AssistedInject constructor(
|
||||||
|
@Assisted appContext: Context,
|
||||||
|
@Assisted params: WorkerParameters,
|
||||||
|
private val localMangaRepository: LocalMangaRepository,
|
||||||
|
) : CoroutineWorker(appContext, params) {
|
||||||
|
|
||||||
|
override suspend fun doWork(): Result {
|
||||||
|
return if (localMangaRepository.cleanup()) {
|
||||||
|
Result.success()
|
||||||
|
} else {
|
||||||
|
Result.retry()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
|
||||||
|
private const val TAG = "cleanup"
|
||||||
|
|
||||||
|
fun enqueue(context: Context) {
|
||||||
|
val constraints = Constraints.Builder()
|
||||||
|
.setRequiresBatteryNotLow(true)
|
||||||
|
.build()
|
||||||
|
val request = OneTimeWorkRequestBuilder<ImportWorker>()
|
||||||
|
.setConstraints(constraints)
|
||||||
|
.addTag(TAG)
|
||||||
|
.setBackoffCriteria(BackoffPolicy.LINEAR, 1, TimeUnit.MINUTES)
|
||||||
|
.build()
|
||||||
|
WorkManager.getInstance(context).enqueueUniqueWork(TAG, ExistingWorkPolicy.KEEP, request)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
package org.koitharu.kotatsu.utils.ext
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.net.ConnectivityManager
|
||||||
|
import android.net.Network
|
||||||
|
import android.net.NetworkCapabilities
|
||||||
|
import android.os.Build
|
||||||
|
|
||||||
|
val Context.connectivityManager: ConnectivityManager
|
||||||
|
get() = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
|
||||||
|
|
||||||
|
fun ConnectivityManager.isOnline(): Boolean {
|
||||||
|
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
|
activeNetwork?.let { isOnline(it) } ?: false
|
||||||
|
} else {
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
activeNetworkInfo?.isConnected == true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun ConnectivityManager.isOnline(network: Network): Boolean {
|
||||||
|
val capabilities = getNetworkCapabilities(network)
|
||||||
|
return capabilities != null && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
|
||||||
|
}
|
||||||
@ -1,8 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
|
<sync-adapter
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:accountType="@string/account_type_sync"
|
android:accountType="@string/account_type_sync"
|
||||||
android:allowParallelSyncs="false"
|
android:allowParallelSyncs="false"
|
||||||
android:contentAuthority="org.koitharu.kotatsu.favourites"
|
android:contentAuthority="${applicationId}.favourites"
|
||||||
android:isAlwaysSyncable="true"
|
android:isAlwaysSyncable="true"
|
||||||
android:supportsUploading="true"
|
android:supportsUploading="true"
|
||||||
android:userVisible="true" />
|
android:userVisible="true" />
|
||||||
@ -1,8 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
|
<sync-adapter
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:accountType="@string/account_type_sync"
|
android:accountType="@string/account_type_sync"
|
||||||
android:allowParallelSyncs="false"
|
android:allowParallelSyncs="false"
|
||||||
android:contentAuthority="org.koitharu.kotatsu.history"
|
android:contentAuthority="${applicationId}.history"
|
||||||
android:isAlwaysSyncable="true"
|
android:isAlwaysSyncable="true"
|
||||||
android:supportsUploading="true"
|
android:supportsUploading="true"
|
||||||
android:userVisible="true" />
|
android:userVisible="true" />
|
||||||
Loading…
Reference in New Issue