浏览代码

Reorganize some util files

arkon 5 年之前
父节点
当前提交
9f9de27a57

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt

@@ -7,8 +7,8 @@ import com.google.gson.Gson
 import com.jakewharton.disklrucache.DiskLruCache
 import eu.kanade.tachiyomi.data.database.models.Chapter
 import eu.kanade.tachiyomi.source.model.Page
-import eu.kanade.tachiyomi.util.DiskUtil
-import eu.kanade.tachiyomi.util.saveTo
+import eu.kanade.tachiyomi.util.storage.DiskUtil
+import eu.kanade.tachiyomi.util.storage.saveTo
 import okhttp3.Response
 import okio.buffer
 import okio.sink

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/data/cache/CoverCache.kt

@@ -1,7 +1,7 @@
 package eu.kanade.tachiyomi.data.cache
 
 import android.content.Context
-import eu.kanade.tachiyomi.util.DiskUtil
+import eu.kanade.tachiyomi.util.storage.DiskUtil
 import java.io.File
 import java.io.IOException
 import java.io.InputStream

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt

@@ -9,7 +9,7 @@ import eu.kanade.tachiyomi.data.database.models.Manga
 import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 import eu.kanade.tachiyomi.data.preference.getOrDefault
 import eu.kanade.tachiyomi.source.Source
-import eu.kanade.tachiyomi.util.DiskUtil
+import eu.kanade.tachiyomi.util.storage.DiskUtil
 import uy.kohesive.injekt.injectLazy
 
 /**

+ 2 - 0
app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt

@@ -14,6 +14,8 @@ import eu.kanade.tachiyomi.source.model.Page
 import eu.kanade.tachiyomi.source.online.HttpSource
 import eu.kanade.tachiyomi.source.online.fetchAllImageUrlsFromPageList
 import eu.kanade.tachiyomi.util.*
+import eu.kanade.tachiyomi.util.storage.DiskUtil
+import eu.kanade.tachiyomi.util.storage.saveTo
 import kotlinx.coroutines.async
 import okhttp3.Response
 import rx.Observable

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationHandler.kt

@@ -5,7 +5,7 @@ import android.content.Context
 import android.content.Intent
 import android.net.Uri
 import eu.kanade.tachiyomi.ui.main.MainActivity
-import eu.kanade.tachiyomi.util.getUriCompat
+import eu.kanade.tachiyomi.util.storage.getUriCompat
 import java.io.File
 
 /**

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt

@@ -13,8 +13,8 @@ import eu.kanade.tachiyomi.data.download.DownloadManager
 import eu.kanade.tachiyomi.data.download.DownloadService
 import eu.kanade.tachiyomi.data.library.LibraryUpdateService
 import eu.kanade.tachiyomi.ui.reader.ReaderActivity
-import eu.kanade.tachiyomi.util.DiskUtil
-import eu.kanade.tachiyomi.util.getUriCompat
+import eu.kanade.tachiyomi.util.storage.DiskUtil
+import eu.kanade.tachiyomi.util.storage.getUriCompat
 import eu.kanade.tachiyomi.util.notificationManager
 import eu.kanade.tachiyomi.util.toast
 import uy.kohesive.injekt.injectLazy

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/data/updater/UpdaterService.kt

@@ -10,8 +10,8 @@ import eu.kanade.tachiyomi.network.GET
 import eu.kanade.tachiyomi.network.NetworkHelper
 import eu.kanade.tachiyomi.network.ProgressListener
 import eu.kanade.tachiyomi.network.newCallWithProgress
-import eu.kanade.tachiyomi.util.getUriCompat
-import eu.kanade.tachiyomi.util.saveTo
+import eu.kanade.tachiyomi.util.storage.getUriCompat
+import eu.kanade.tachiyomi.util.storage.saveTo
 import timber.log.Timber
 import uy.kohesive.injekt.injectLazy
 import java.io.File

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstaller.kt

@@ -10,7 +10,7 @@ import android.os.Build
 import com.jakewharton.rxrelay.PublishRelay
 import eu.kanade.tachiyomi.extension.model.Extension
 import eu.kanade.tachiyomi.extension.model.InstallStep
-import eu.kanade.tachiyomi.util.getUriCompat
+import eu.kanade.tachiyomi.util.storage.getUriCompat
 import rx.Observable
 import rx.android.schedulers.AndroidSchedulers
 import timber.log.Timber

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt

@@ -7,8 +7,8 @@ import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.source.model.*
 import eu.kanade.tachiyomi.util.ChapterRecognition
 import eu.kanade.tachiyomi.util.ComparatorUtil.CaseInsensitiveNaturalComparator
-import eu.kanade.tachiyomi.util.DiskUtil
-import eu.kanade.tachiyomi.util.EpubFile
+import eu.kanade.tachiyomi.util.storage.DiskUtil
+import eu.kanade.tachiyomi.util.storage.EpubFile
 import eu.kanade.tachiyomi.util.ImageUtil
 import junrar.Archive
 import junrar.rarfile.FileHeader

+ 1 - 0
app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt

@@ -30,6 +30,7 @@ import eu.kanade.tachiyomi.ui.reader.viewer.pager.R2LPagerViewer
 import eu.kanade.tachiyomi.ui.reader.viewer.pager.VerticalPagerViewer
 import eu.kanade.tachiyomi.ui.reader.viewer.webtoon.WebtoonViewer
 import eu.kanade.tachiyomi.util.*
+import eu.kanade.tachiyomi.util.storage.getUriCompat
 import eu.kanade.tachiyomi.widget.SimpleAnimationListener
 import eu.kanade.tachiyomi.widget.SimpleSeekBarListener
 import kotlinx.android.synthetic.main.reader_activity.*

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt

@@ -21,7 +21,7 @@ import eu.kanade.tachiyomi.ui.reader.loader.DownloadPageLoader
 import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
 import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
 import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters
-import eu.kanade.tachiyomi.util.DiskUtil
+import eu.kanade.tachiyomi.util.storage.DiskUtil
 import eu.kanade.tachiyomi.util.ImageUtil
 import rx.Completable
 import rx.Observable

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/EpubPageLoader.kt

@@ -2,7 +2,7 @@ package eu.kanade.tachiyomi.ui.reader.loader
 
 import eu.kanade.tachiyomi.source.model.Page
 import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
-import eu.kanade.tachiyomi.util.EpubFile
+import eu.kanade.tachiyomi.util.storage.EpubFile
 import rx.Observable
 import java.io.File
 

+ 1 - 0
app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsBackupController.kt

@@ -21,6 +21,7 @@ import eu.kanade.tachiyomi.ui.base.controller.DialogController
 import eu.kanade.tachiyomi.ui.base.controller.popControllerWithTag
 import eu.kanade.tachiyomi.ui.base.controller.requestPermissionsSafe
 import eu.kanade.tachiyomi.util.*
+import eu.kanade.tachiyomi.util.storage.getUriCompat
 import java.io.File
 import java.util.concurrent.TimeUnit
 import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys

+ 42 - 0
app/src/main/java/eu/kanade/tachiyomi/util/PreferenceExtensions.kt

@@ -0,0 +1,42 @@
+package eu.kanade.tachiyomi.util
+
+import android.content.SharedPreferences
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.channels.awaitClose
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.channelFlow
+import kotlinx.coroutines.flow.flowOn
+import kotlin.coroutines.CoroutineContext
+
+@ExperimentalCoroutinesApi
+inline fun <reified T> SharedPreferences.getKey(key: String, default: T, dispatcher: CoroutineContext = Dispatchers.Default): Flow<T> {
+    val flow: Flow<T> = channelFlow {
+        offer(getItem(key, default))
+
+        val listener = SharedPreferences.OnSharedPreferenceChangeListener { _, k ->
+            if (key == k) {
+                offer(getItem(key, default)!!)
+            }
+        }
+
+        registerOnSharedPreferenceChangeListener(listener)
+        awaitClose { unregisterOnSharedPreferenceChangeListener(listener) }
+    }
+    return flow
+            .flowOn(dispatcher)
+}
+
+inline fun <reified T> SharedPreferences.getItem(key: String, default: T): T {
+    @Suppress("UNCHECKED_CAST")
+    return when (default) {
+        is String -> getString(key, default) as T
+        is Int -> getInt(key, default) as T
+        is Long -> getLong(key, default) as T
+        is Boolean -> getBoolean(key, default) as T
+        is Float -> getFloat(key, default) as T
+        is Set<*> -> getStringSet(key, default as Set<String>) as T
+        is MutableSet<*> -> getStringSet(key, default as MutableSet<String>) as T
+        else -> throw IllegalArgumentException("Generic type not handled: ${T::class.java.name}")
+    }
+}

+ 2 - 1
app/src/main/java/eu/kanade/tachiyomi/util/DiskUtil.kt → app/src/main/java/eu/kanade/tachiyomi/util/storage/DiskUtil.kt

@@ -1,4 +1,4 @@
-package eu.kanade.tachiyomi.util
+package eu.kanade.tachiyomi.util.storage
 
 import android.content.Context
 import android.content.Intent
@@ -7,6 +7,7 @@ import android.os.Environment
 import androidx.core.content.ContextCompat
 import androidx.core.os.EnvironmentCompat
 import com.hippo.unifile.UniFile
+import eu.kanade.tachiyomi.util.Hash
 import java.io.File
 
 object DiskUtil {

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/util/EpubFile.kt → app/src/main/java/eu/kanade/tachiyomi/util/storage/EpubFile.kt

@@ -1,4 +1,4 @@
-package eu.kanade.tachiyomi.util
+package eu.kanade.tachiyomi.util.storage
 
 import org.jsoup.Jsoup
 import org.jsoup.nodes.Document

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/util/FileExtensions.kt → app/src/main/java/eu/kanade/tachiyomi/util/storage/FileExtensions.kt

@@ -1,4 +1,4 @@
-package eu.kanade.tachiyomi.util
+package eu.kanade.tachiyomi.util.storage
 
 import android.content.Context
 import android.net.Uri

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/util/OkioExtensions.kt → app/src/main/java/eu/kanade/tachiyomi/util/storage/OkioExtensions.kt

@@ -1,4 +1,4 @@
-package eu.kanade.tachiyomi.util
+package eu.kanade.tachiyomi.util.storage
 
 import okio.BufferedSource
 import okio.buffer