Use Splitties appCtx
This commit is contained in:
1 parent
6ea635a1e9
commit
2c30deb298
11 files changed
+38
-42
No files matched your search
@@ -209,6 +209,8 @@ dependencies {
|
||||
implementation("com.google.accompanist:accompanist-themeadapter-material3:0.30.1")
|
||||
implementation("com.google.android.material:material:1.9.0")
|
||||
|
||||
implementation("com.louiscad.splitties:splitties-appctx:3.0.0")
|
||||
|
||||
// https://square.github.io/okhttp/changelogs/changelog/
|
||||
implementation(platform("com.squareup.okhttp3:okhttp-bom:5.0.0-alpha.11"))
|
||||
implementation("com.squareup.okhttp3:okhttp-android")
|
||||
|
||||
@@ -50,13 +50,13 @@ import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences
|
||||
import eu.kanade.tachiyomi.util.lang.launchIO
|
||||
import kotlinx.coroutines.DelicateCoroutinesApi
|
||||
import okio.Path.Companion.toOkioPath
|
||||
import splitties.init.appCtx
|
||||
import java.net.Proxy
|
||||
|
||||
class EhApplication : Application(), DefaultLifecycleObserver, ImageLoaderFactory {
|
||||
@OptIn(DelicateCoroutinesApi::class)
|
||||
override fun onCreate() {
|
||||
ProcessLifecycleOwner.get().lifecycle.addObserver(this)
|
||||
application = this
|
||||
val handler = Thread.getDefaultUncaughtExceptionHandler()
|
||||
Thread.setDefaultUncaughtExceptionHandler { t, e ->
|
||||
try {
|
||||
@@ -149,9 +149,6 @@ class EhApplication : Application(), DefaultLifecycleObserver, ImageLoaderFactor
|
||||
var locked = true
|
||||
var locked_last_leave_time: Long = 0
|
||||
|
||||
lateinit var application: EhApplication
|
||||
private set
|
||||
|
||||
val ehProxySelector by lazy { EhProxySelector() }
|
||||
|
||||
val nonCacheOkHttpClient by lazy {
|
||||
@@ -170,7 +167,7 @@ class EhApplication : Application(), DefaultLifecycleObserver, ImageLoaderFactor
|
||||
val okHttpClient by lazy {
|
||||
httpClient(nonCacheOkHttpClient) {
|
||||
cache(
|
||||
application.cacheDir.toOkioPath() / "http_cache",
|
||||
appCtx.cacheDir.toOkioPath() / "http_cache",
|
||||
20L * 1024L * 1024L,
|
||||
)
|
||||
}
|
||||
@@ -186,13 +183,13 @@ class EhApplication : Application(), DefaultLifecycleObserver, ImageLoaderFactor
|
||||
|
||||
val favouriteStatusRouter by lazy { FavouriteStatusRouter() }
|
||||
|
||||
val readerPreferences by lazy { ReaderPreferences(AndroidPreferenceStore(application)) }
|
||||
val readerPreferences by lazy { ReaderPreferences(AndroidPreferenceStore(appCtx)) }
|
||||
|
||||
val ehDatabase by lazy { Room.databaseBuilder(application, EhDatabase::class.java, "eh.db").allowMainThreadQueries().build() }
|
||||
val ehDatabase by lazy { Room.databaseBuilder(appCtx, EhDatabase::class.java, "eh.db").allowMainThreadQueries().build() }
|
||||
|
||||
val imageCache by lazy {
|
||||
diskCache {
|
||||
directory(application.cacheDir.toOkioPath() / "image_cache")
|
||||
directory(appCtx.cacheDir.toOkioPath() / "image_cache")
|
||||
maxSizeBytes(Settings.readCacheSize.coerceIn(320, 5120).toLong() * 1024 * 1024)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,13 +16,14 @@
|
||||
package com.hippo.ehviewer
|
||||
|
||||
import androidx.annotation.StringRes
|
||||
import splitties.init.appCtx
|
||||
|
||||
object GetText {
|
||||
fun getString(@StringRes id: Int): String {
|
||||
return EhApplication.application.getString(id)
|
||||
return appCtx.getString(id)
|
||||
}
|
||||
|
||||
fun getString(@StringRes id: Int, vararg formatArgs: Any?): String {
|
||||
return EhApplication.application.getString(id, *formatArgs)
|
||||
return appCtx.getString(id, *formatArgs)
|
||||
}
|
||||
}
|
||||
@@ -20,12 +20,12 @@ import android.net.Uri
|
||||
import android.util.Log
|
||||
import androidx.annotation.DimenRes
|
||||
import androidx.preference.PreferenceManager
|
||||
import com.hippo.ehviewer.EhApplication.Companion.application
|
||||
import com.hippo.ehviewer.client.data.FavListUrlBuilder
|
||||
import com.hippo.ehviewer.ui.scene.GalleryListScene
|
||||
import com.hippo.ehviewer.yorozuya.LayoutUtils.dp2pix
|
||||
import com.hippo.ehviewer.yorozuya.NumberUtils
|
||||
import com.hippo.unifile.UniFile
|
||||
import splitties.init.appCtx
|
||||
import java.util.Locale
|
||||
|
||||
object Settings {
|
||||
@@ -197,7 +197,7 @@ object Settings {
|
||||
private lateinit var sSettingsPre: SharedPreferences
|
||||
private var LIST_THUMB_SIZE = 40
|
||||
fun initialize() {
|
||||
sSettingsPre = PreferenceManager.getDefaultSharedPreferences(application)
|
||||
sSettingsPre = PreferenceManager.getDefaultSharedPreferences(appCtx)
|
||||
fixDefaultValue()
|
||||
}
|
||||
|
||||
@@ -355,7 +355,7 @@ object Settings {
|
||||
else -> throw IllegalStateException("Unexpected value: $detailSize")
|
||||
}
|
||||
val thumbSize: Int
|
||||
get() = dp2pix(application, thumbSizeDp.toFloat())
|
||||
get() = dp2pix(appCtx, thumbSizeDp.toFloat())
|
||||
|
||||
val thumbSizeDp: Int
|
||||
get() = getInt(KEY_THUMB_SIZE, DEFAULT_THUMB_SIZE)
|
||||
@@ -399,7 +399,7 @@ object Settings {
|
||||
builder.encodedPath(getString(KEY_DOWNLOAD_SAVE_PATH, null))
|
||||
builder.encodedQuery(getString(KEY_DOWNLOAD_SAVE_QUERY, null))
|
||||
builder.encodedFragment(getString(KEY_DOWNLOAD_SAVE_FRAGMENT, null))
|
||||
dir = UniFile.fromUri(application, builder.build())
|
||||
dir = UniFile.fromUri(appCtx, builder.build())
|
||||
return dir ?: UniFile.fromFile(AppConfig.getDefaultDownloadDir())
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
*/
|
||||
package com.hippo.ehviewer.client
|
||||
|
||||
import com.hippo.ehviewer.EhApplication
|
||||
import com.hippo.ehviewer.network.CookieDatabase
|
||||
import com.hippo.ehviewer.network.CookieSet
|
||||
import eu.kanade.tachiyomi.util.lang.launchIO
|
||||
@@ -23,11 +22,12 @@ import okhttp3.Cookie
|
||||
import okhttp3.CookieJar
|
||||
import okhttp3.HttpUrl
|
||||
import okhttp3.HttpUrl.Companion.toHttpUrl
|
||||
import splitties.init.appCtx
|
||||
import java.util.Collections
|
||||
import java.util.regex.Pattern
|
||||
|
||||
object EhCookieStore : CookieJar {
|
||||
private val db: CookieDatabase = CookieDatabase(EhApplication.application)
|
||||
private val db: CookieDatabase = CookieDatabase(appCtx)
|
||||
private val map: MutableMap<String, CookieSet> = db.allCookies
|
||||
|
||||
fun signOut() {
|
||||
|
||||
@@ -17,7 +17,6 @@ package com.hippo.ehviewer.client
|
||||
|
||||
import android.content.Context
|
||||
import com.hippo.ehviewer.AppConfig
|
||||
import com.hippo.ehviewer.EhApplication
|
||||
import com.hippo.ehviewer.EhApplication.Companion.nonCacheOkHttpClient
|
||||
import com.hippo.ehviewer.R
|
||||
import com.hippo.ehviewer.yorozuya.FileUtils
|
||||
@@ -39,6 +38,7 @@ import okio.blackholeSink
|
||||
import okio.buffer
|
||||
import okio.source
|
||||
import org.json.JSONObject
|
||||
import splitties.init.appCtx
|
||||
import java.io.File
|
||||
import java.nio.charset.StandardCharsets
|
||||
|
||||
@@ -204,7 +204,7 @@ object EhTagDatabase : CoroutineScope {
|
||||
|
||||
private suspend fun issueUpdateInMemoryData() {
|
||||
dbLock.withLock {
|
||||
getMetadata(EhApplication.application)?.let { urls ->
|
||||
getMetadata(appCtx)?.let { urls ->
|
||||
val dataName = urls[2]
|
||||
val dir = AppConfig.getFilesDir("tag-translations")
|
||||
val dataFile = File(dir, dataName).takeIf { it.exists() } ?: return
|
||||
@@ -224,7 +224,7 @@ object EhTagDatabase : CoroutineScope {
|
||||
}
|
||||
|
||||
private suspend fun updateInternal() {
|
||||
val urls = getMetadata(EhApplication.application)
|
||||
val urls = getMetadata(appCtx)
|
||||
urls?.let {
|
||||
val sha1Name = urls[0]
|
||||
val sha1Url = urls[1]
|
||||
|
||||
@@ -14,12 +14,12 @@ import androidx.work.PeriodicWorkRequest
|
||||
import androidx.work.PeriodicWorkRequestBuilder
|
||||
import androidx.work.WorkManager
|
||||
import androidx.work.WorkerParameters
|
||||
import com.hippo.ehviewer.EhApplication
|
||||
import com.hippo.ehviewer.R
|
||||
import com.hippo.ehviewer.Settings
|
||||
import com.hippo.ehviewer.client.EhCookieStore
|
||||
import com.hippo.ehviewer.client.EhEngine
|
||||
import eu.kanade.tachiyomi.util.lang.withIOContext
|
||||
import splitties.init.appCtx
|
||||
import java.time.Duration
|
||||
import java.time.Instant
|
||||
import java.time.LocalDateTime
|
||||
@@ -98,14 +98,13 @@ fun showEventNotification(html: String) {
|
||||
if (Settings.hideHvEvents && html.contains("You have encountered a monster!")) {
|
||||
return
|
||||
}
|
||||
val context = EhApplication.application
|
||||
val notificationManager = NotificationManagerCompat.from(context)
|
||||
val notificationManager = NotificationManagerCompat.from(appCtx)
|
||||
val chan = NotificationChannelCompat
|
||||
.Builder(CHANNEL_ID, NotificationManagerCompat.IMPORTANCE_LOW)
|
||||
.setName(CHANNEL_ID)
|
||||
.build()
|
||||
notificationManager.createNotificationChannel(chan)
|
||||
val msg = NotificationCompat.Builder(context, CHANNEL_ID)
|
||||
val msg = NotificationCompat.Builder(appCtx, CHANNEL_ID)
|
||||
.setSmallIcon(R.drawable.ic_launcher_monochrome)
|
||||
.setContentText(Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY))
|
||||
.setStyle(NotificationCompat.BigTextStyle())
|
||||
|
||||
@@ -27,6 +27,7 @@ import android.graphics.drawable.Drawable
|
||||
import android.os.Build
|
||||
import com.hippo.ehviewer.EhApplication
|
||||
import com.hippo.ehviewer.R
|
||||
import splitties.init.appCtx
|
||||
import java.nio.ByteBuffer
|
||||
import kotlin.math.min
|
||||
|
||||
@@ -66,8 +67,7 @@ class Image private constructor(private val src: CloseableSource) {
|
||||
).coerceAtLeast(1)
|
||||
}
|
||||
|
||||
private val imageSearchMaxSize =
|
||||
EhApplication.application.resources.getDimensionPixelOffset(R.dimen.image_search_max_size)
|
||||
private val imageSearchMaxSize = appCtx.resources.getDimensionPixelOffset(R.dimen.image_search_max_size)
|
||||
|
||||
@JvmStatic
|
||||
val imageSearchDecoderSampleListener =
|
||||
@@ -76,14 +76,11 @@ class Image private constructor(private val src: CloseableSource) {
|
||||
calculateSampleSize(info, imageSearchMaxSize, imageSearchMaxSize),
|
||||
)
|
||||
}
|
||||
val screenWidth = EhApplication.application.resources.displayMetrics.widthPixels
|
||||
val screenHeight = EhApplication.application.resources.displayMetrics.heightPixels
|
||||
val isWideColorGamut =
|
||||
EhApplication.application.resources.configuration.isScreenWideColorGamut
|
||||
val screenWidth = appCtx.resources.displayMetrics.widthPixels
|
||||
val screenHeight = appCtx.resources.displayMetrics.heightPixels
|
||||
val isWideColorGamut = appCtx.resources.configuration.isScreenWideColorGamut
|
||||
var colorSpace = ColorSpace.get(
|
||||
if (isWideColorGamut && EhApplication.readerPreferences.wideColorGamut()
|
||||
.get()
|
||||
) {
|
||||
if (isWideColorGamut && EhApplication.readerPreferences.wideColorGamut().get()) {
|
||||
ColorSpace.Named.DISPLAY_P3
|
||||
} else {
|
||||
ColorSpace.Named.SRGB
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
package com.hippo.ehviewer.network
|
||||
|
||||
import android.util.SparseArray
|
||||
import com.hippo.ehviewer.EhApplication
|
||||
import com.hippo.ehviewer.R
|
||||
import splitties.init.appCtx
|
||||
|
||||
class StatusCodeException(val responseCode: Int) : Exception() {
|
||||
override val message: String = ERROR_MESSAGE_ARRAY[responseCode, DEFAULT_ERROR_MESSAGE]
|
||||
@@ -34,7 +34,7 @@ class StatusCodeException(val responseCode: Int) : Exception() {
|
||||
private const val DEFAULT_ERROR_MESSAGE = "Error response code"
|
||||
|
||||
init {
|
||||
val resources = EhApplication.application.resources
|
||||
val resources = appCtx.resources
|
||||
ERROR_MESSAGE_ARRAY.append(400, resources.getString(R.string.error_status_code_400))
|
||||
ERROR_MESSAGE_ARRAY.append(401, resources.getString(R.string.error_status_code_401))
|
||||
ERROR_MESSAGE_ARRAY.append(402, resources.getString(R.string.error_status_code_402))
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.hippo.ehviewer.spider
|
||||
|
||||
import coil.disk.DiskCache
|
||||
import com.hippo.ehviewer.EhApplication
|
||||
import com.hippo.ehviewer.coil.diskCache
|
||||
import com.hippo.ehviewer.coil.edit
|
||||
import com.hippo.ehviewer.coil.read
|
||||
import com.hippo.ehviewer.legacy.readLegacySpiderInfo
|
||||
@@ -13,6 +12,7 @@ import kotlinx.serialization.cbor.Cbor
|
||||
import kotlinx.serialization.decodeFromByteArray
|
||||
import kotlinx.serialization.encodeToByteArray
|
||||
import moe.tarsin.coroutines.runSuspendCatching
|
||||
import splitties.init.appCtx
|
||||
import java.io.File
|
||||
|
||||
@Serializable
|
||||
@@ -49,9 +49,10 @@ fun SpiderInfo.saveToCache() {
|
||||
}
|
||||
|
||||
private val spiderInfoCache by lazy {
|
||||
DiskCache.Builder()
|
||||
.directory(File(EhApplication.application.cacheDir, "spider_info_v2_1"))
|
||||
.maxSizeBytes(20 * 1024 * 1024).build()
|
||||
diskCache {
|
||||
directory(File(appCtx.cacheDir, "spider_info_v2_1"))
|
||||
maxSizeBytes(20 * 1024 * 1024)
|
||||
}
|
||||
}
|
||||
|
||||
fun readFromCache(gid: Long): SpiderInfo? {
|
||||
|
||||
@@ -20,7 +20,6 @@ import androidx.room.Room
|
||||
import com.google.android.material.search.SearchView
|
||||
import com.google.android.material.search.SearchView.TransitionListener
|
||||
import com.google.android.material.shape.MaterialShapeDrawable
|
||||
import com.hippo.ehviewer.EhApplication
|
||||
import com.hippo.ehviewer.R
|
||||
import com.hippo.ehviewer.Settings
|
||||
import com.hippo.ehviewer.client.EhTagDatabase
|
||||
@@ -31,10 +30,10 @@ import eu.kanade.tachiyomi.util.lang.launchIO
|
||||
import eu.kanade.tachiyomi.util.lang.withUIContext
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.flow
|
||||
import splitties.init.appCtx
|
||||
|
||||
private val searchDatabase by lazy {
|
||||
val context = EhApplication.application
|
||||
Room.databaseBuilder(context, SearchDatabase::class.java, "search_database.db").build()
|
||||
Room.databaseBuilder(appCtx, SearchDatabase::class.java, "search_database.db").build()
|
||||
}
|
||||
|
||||
abstract class SearchBarScene : BaseScene(), ToolBarScene {
|
||||
|
||||
Reference in new issue
Block a user