mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-03 23:58:55 +01:00 
			
		
		
		
	@@ -42,6 +42,7 @@ import eu.kanade.tachiyomi.data.backup.BackupCreateJob
 | 
			
		||||
import eu.kanade.tachiyomi.data.backup.BackupFileValidator
 | 
			
		||||
import eu.kanade.tachiyomi.data.backup.BackupRestoreJob
 | 
			
		||||
import eu.kanade.tachiyomi.data.cache.ChapterCache
 | 
			
		||||
import eu.kanade.tachiyomi.data.download.DownloadCache
 | 
			
		||||
import eu.kanade.tachiyomi.util.storage.DiskUtil
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.DeviceUtil
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.copyToClipboard
 | 
			
		||||
@@ -100,6 +101,7 @@ object SettingsDataScreen : SearchableSettings {
 | 
			
		||||
 | 
			
		||||
                val file = UniFile.fromUri(context, uri)
 | 
			
		||||
                storageDirPref.set(file.uri.toString())
 | 
			
		||||
                Injekt.get<DownloadCache>().invalidateCache()
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,7 @@ import eu.kanade.tachiyomi.util.system.workManager
 | 
			
		||||
import logcat.LogPriority
 | 
			
		||||
import tachiyomi.core.util.system.logcat
 | 
			
		||||
import tachiyomi.domain.backup.service.BackupPreferences
 | 
			
		||||
import tachiyomi.domain.storage.service.StoragePreferences
 | 
			
		||||
import tachiyomi.domain.storage.service.StorageManager
 | 
			
		||||
import uy.kohesive.injekt.Injekt
 | 
			
		||||
import uy.kohesive.injekt.api.get
 | 
			
		||||
import java.util.Date
 | 
			
		||||
@@ -43,6 +43,8 @@ class BackupCreateJob(private val context: Context, workerParams: WorkerParamete
 | 
			
		||||
 | 
			
		||||
        val uri = inputData.getString(LOCATION_URI_KEY)?.toUri()
 | 
			
		||||
            ?: getAutomaticBackupLocation()
 | 
			
		||||
            ?: return Result.failure()
 | 
			
		||||
 | 
			
		||||
        val flags = inputData.getInt(BACKUP_FLAGS_KEY, BackupCreateFlags.AutomaticDefaults)
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
@@ -75,13 +77,9 @@ class BackupCreateJob(private val context: Context, workerParams: WorkerParamete
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun getAutomaticBackupLocation(): Uri {
 | 
			
		||||
        val storagePreferences = Injekt.get<StoragePreferences>()
 | 
			
		||||
        return storagePreferences.baseStorageDirectory().get().let {
 | 
			
		||||
            val dir = UniFile.fromUri(context, it.toUri())
 | 
			
		||||
                .createDirectory(StoragePreferences.BACKUP_DIR)
 | 
			
		||||
            dir.uri
 | 
			
		||||
        }
 | 
			
		||||
    private fun getAutomaticBackupLocation(): Uri? {
 | 
			
		||||
        val storageManager = Injekt.get<StorageManager>()
 | 
			
		||||
        return storageManager.getAutomaticBackupsDirectory()?.uri
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    companion object {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,20 +1,15 @@
 | 
			
		||||
package eu.kanade.tachiyomi.data.download
 | 
			
		||||
 | 
			
		||||
import android.content.Context
 | 
			
		||||
import androidx.core.net.toUri
 | 
			
		||||
import com.hippo.unifile.UniFile
 | 
			
		||||
import eu.kanade.tachiyomi.source.Source
 | 
			
		||||
import eu.kanade.tachiyomi.util.storage.DiskUtil
 | 
			
		||||
import kotlinx.coroutines.CoroutineScope
 | 
			
		||||
import kotlinx.coroutines.Dispatchers
 | 
			
		||||
import kotlinx.coroutines.flow.launchIn
 | 
			
		||||
import kotlinx.coroutines.flow.onEach
 | 
			
		||||
import logcat.LogPriority
 | 
			
		||||
import tachiyomi.core.i18n.stringResource
 | 
			
		||||
import tachiyomi.core.util.system.logcat
 | 
			
		||||
import tachiyomi.domain.chapter.model.Chapter
 | 
			
		||||
import tachiyomi.domain.manga.model.Manga
 | 
			
		||||
import tachiyomi.domain.storage.service.StoragePreferences
 | 
			
		||||
import tachiyomi.domain.storage.service.StorageManager
 | 
			
		||||
import tachiyomi.i18n.MR
 | 
			
		||||
import uy.kohesive.injekt.Injekt
 | 
			
		||||
import uy.kohesive.injekt.api.get
 | 
			
		||||
@@ -27,27 +22,11 @@ import uy.kohesive.injekt.api.get
 | 
			
		||||
 */
 | 
			
		||||
class DownloadProvider(
 | 
			
		||||
    private val context: Context,
 | 
			
		||||
    storagePreferences: StoragePreferences = Injekt.get(),
 | 
			
		||||
    private val storageManager: StorageManager = Injekt.get(),
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    private val scope = CoroutineScope(Dispatchers.IO)
 | 
			
		||||
 | 
			
		||||
    private var _downloadsDir: UniFile? =
 | 
			
		||||
        storagePreferences.baseStorageDirectory().get().let(::getDownloadsLocation)
 | 
			
		||||
    val downloadsDir: UniFile?
 | 
			
		||||
        get() = _downloadsDir
 | 
			
		||||
 | 
			
		||||
    init {
 | 
			
		||||
        storagePreferences.baseStorageDirectory().changes()
 | 
			
		||||
            .onEach { _downloadsDir = getDownloadsLocation(it) }
 | 
			
		||||
            .launchIn(scope)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun getDownloadsLocation(dir: String): UniFile? {
 | 
			
		||||
        return UniFile.fromUri(context, dir.toUri())
 | 
			
		||||
            ?.createDirectory(StoragePreferences.DOWNLOADS_DIR)
 | 
			
		||||
            ?.also { DiskUtil.createNoMediaFile(it, context) }
 | 
			
		||||
    }
 | 
			
		||||
        get() = storageManager.getDownloadsDirectory()
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns the download directory for a manga. For internal use only.
 | 
			
		||||
 
 | 
			
		||||
@@ -35,6 +35,7 @@ import tachiyomi.data.Mangas
 | 
			
		||||
import tachiyomi.data.StringListColumnAdapter
 | 
			
		||||
import tachiyomi.data.UpdateStrategyColumnAdapter
 | 
			
		||||
import tachiyomi.domain.source.service.SourceManager
 | 
			
		||||
import tachiyomi.domain.storage.service.StorageManager
 | 
			
		||||
import tachiyomi.source.local.image.LocalCoverManager
 | 
			
		||||
import tachiyomi.source.local.io.LocalSourceFileSystem
 | 
			
		||||
import uy.kohesive.injekt.api.InjektModule
 | 
			
		||||
@@ -125,8 +126,9 @@ class AppModule(val app: Application) : InjektModule {
 | 
			
		||||
        addSingletonFactory { ImageSaver(app) }
 | 
			
		||||
 | 
			
		||||
        addSingletonFactory { AndroidStorageFolderProvider(app) }
 | 
			
		||||
        addSingletonFactory { LocalSourceFileSystem(app, get<AndroidStorageFolderProvider>()) }
 | 
			
		||||
        addSingletonFactory { LocalSourceFileSystem(get()) }
 | 
			
		||||
        addSingletonFactory { LocalCoverManager(app, get()) }
 | 
			
		||||
        addSingletonFactory { StorageManager(app, get()) }
 | 
			
		||||
 | 
			
		||||
        // Asynchronously init expensive components for a faster cold start
 | 
			
		||||
        ContextCompat.getMainExecutor(app).execute {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user