(Almost) Full OkHTTP implementation

This commit is contained in:
tom5079
2020-08-28 22:43:47 +09:00
parent ece127e982
commit fdd9b02388
24 changed files with 307 additions and 97 deletions

View File

@@ -22,7 +22,9 @@ import android.annotation.SuppressLint
import android.app.Activity
import android.content.Intent
import android.graphics.drawable.Animatable
import android.net.Proxy
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.text.*
import android.text.style.AlignmentSpan
@@ -59,9 +61,11 @@ import xyz.quaver.hitomi.GalleryBlock
import xyz.quaver.hitomi.doSearch
import xyz.quaver.hitomi.getGalleryIDsFromNozomi
import xyz.quaver.hitomi.getSuggestionsForQuery
import xyz.quaver.pupil.Pupil
import xyz.quaver.pupil.R
import xyz.quaver.pupil.adapters.GalleryBlockAdapter
import xyz.quaver.pupil.favorites
import xyz.quaver.pupil.histories
import xyz.quaver.pupil.services.DownloadService
import xyz.quaver.pupil.types.TagSuggestion
import xyz.quaver.pupil.types.Tags
import xyz.quaver.pupil.ui.dialog.GalleryDialog
@@ -110,9 +114,6 @@ class MainActivity : AppCompatActivity() {
private var loadingJob: Job? = null
private var currentPage = 0
private lateinit var histories: GalleryList
private lateinit var favorites: GalleryList
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -147,11 +148,6 @@ class MainActivity : AppCompatActivity() {
}
}
with(application as Pupil) {
this@MainActivity.histories = histories
this@MainActivity.favorites = favorites
}
if (intent.action == Intent.ACTION_VIEW) {
intent.dataString?.let { url ->
restore(favorites, url,
@@ -166,6 +162,15 @@ class MainActivity : AppCompatActivity() {
setContentView(R.layout.activity_main)
Intent(this, DownloadService::class.java).let {
when {
Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ->
startForegroundService(it)
else ->
startService(it)
}
}
checkUpdate(this)
initView()

View File

@@ -46,6 +46,8 @@ import xyz.quaver.Code
import xyz.quaver.pupil.Pupil
import xyz.quaver.pupil.R
import xyz.quaver.pupil.adapters.ReaderAdapter
import xyz.quaver.pupil.favorites
import xyz.quaver.pupil.histories
import xyz.quaver.pupil.util.GalleryList
import xyz.quaver.pupil.util.download.Cache
import xyz.quaver.pupil.util.download.DownloadWorker
@@ -78,16 +80,12 @@ class ReaderActivity : AppCompatActivity() {
private var menu: Menu? = null
private lateinit var favorites: GalleryList
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
title = getString(R.string.reader_loading)
supportActionBar?.setDisplayHomeAsUpEnabled(false)
favorites = (application as Pupil).favorites
window.setFlags(
WindowManager.LayoutParams.FLAG_SECURE,
WindowManager.LayoutParams.FLAG_SECURE)
@@ -96,7 +94,7 @@ class ReaderActivity : AppCompatActivity() {
handleIntent(intent)
(application as Pupil).histories.add(galleryID)
histories.add(galleryID)
FirebaseCrashlytics.getInstance().setCustomKey("GalleryID", galleryID)
if (galleryID == 0) {

View File

@@ -35,6 +35,7 @@ import kotlinx.serialization.json.Json
import net.rdrei.android.dirchooser.DirectoryChooserActivity
import xyz.quaver.pupil.Pupil
import xyz.quaver.pupil.R
import xyz.quaver.pupil.favorites
import xyz.quaver.pupil.ui.fragment.LockSettingsFragment
import xyz.quaver.pupil.ui.fragment.SettingsFragment
import xyz.quaver.pupil.util.*
@@ -100,7 +101,7 @@ class SettingsActivity : AppCompatActivity() {
inputStream.readBytes().toString(Charset.defaultCharset())
}
(application as Pupil).favorites.addAll(Json.decodeFromString<List<Int>>(str).also {
favorites.addAll(Json.decodeFromString<List<Int>>(str).also {
Snackbar.make(
window.decorView,
getString(R.string.settings_restore_success, it.size),

View File

@@ -48,6 +48,7 @@ import xyz.quaver.pupil.Pupil
import xyz.quaver.pupil.R
import xyz.quaver.pupil.adapters.GalleryBlockAdapter
import xyz.quaver.pupil.adapters.ThumbnailPageAdapter
import xyz.quaver.pupil.histories
import xyz.quaver.pupil.types.Tag
import xyz.quaver.pupil.ui.ReaderActivity
import xyz.quaver.pupil.util.ItemClickSupport
@@ -81,7 +82,7 @@ class GalleryDialog(context: Context, private val glide: RequestManager, private
context.startActivity(Intent(context, ReaderActivity::class.java).apply {
putExtra("galleryID", galleryID)
})
(context.applicationContext as Pupil).histories.add(galleryID)
histories.add(galleryID)
}
}
@@ -264,7 +265,7 @@ class GalleryDialog(context: Context, private val glide: RequestManager, private
context.startActivity(Intent(context, ReaderActivity::class.java).apply {
putExtra("galleryID", galleries[position].id)
})
(context.applicationContext as Pupil).histories.add(galleries[position].id)
histories.add(galleries[position].id)
}
onItemLongClickListener = { _, position, _ ->
GalleryDialog(

View File

@@ -31,8 +31,10 @@ import androidx.preference.PreferenceManager
import kotlinx.android.synthetic.main.dialog_proxy.view.*
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import xyz.quaver.proxy
import xyz.quaver.pupil.R
import xyz.quaver.pupil.client
import xyz.quaver.pupil.clientBuilder
import xyz.quaver.pupil.clientHolder
import xyz.quaver.pupil.util.ProxyInfo
import xyz.quaver.pupil.util.getProxyInfo
import java.net.Proxy
@@ -117,12 +119,15 @@ class ProxyDialog(context: Context) : Dialog(context) {
}
ProxyInfo(type, addr, port, username, password).let {
PreferenceManager.getDefaultSharedPreferences(context).edit().putString("proxy",
Json.encodeToString(it)
).apply()
proxy = it.proxy()
clientBuilder
.proxy(it.proxy())
.proxyAuthenticator(it.authenticator())
clientHolder = null
client
}
dismiss()

View File

@@ -30,6 +30,8 @@ import com.google.android.material.snackbar.Snackbar
import okhttp3.*
import xyz.quaver.pupil.Pupil
import xyz.quaver.pupil.R
import xyz.quaver.pupil.client
import xyz.quaver.pupil.favorites
import xyz.quaver.pupil.util.restore
import java.io.File
import java.io.IOException
@@ -52,7 +54,7 @@ class ManageFavoritesFragment : PreferenceFragmentCompat() {
.build()
).build()
OkHttpClient().newCall(request).enqueue(object: Callback {
client.newCall(request).enqueue(object: Callback {
override fun onFailure(call: Call, e: IOException) {
val view = view ?: return
Snackbar.make(view, R.string.settings_backup_failed, Snackbar.LENGTH_LONG).show()
@@ -79,7 +81,6 @@ class ManageFavoritesFragment : PreferenceFragmentCompat() {
.setTitle(R.string.settings_restore_title)
.setView(editText)
.setPositiveButton(android.R.string.ok) { _, _ ->
val favorites = (activity?.application as? Pupil)?.favorites ?: return@setPositiveButton
restore(favorites, editText.text.toString(),
onFailure = onFailure@{
val view = view ?: return@onFailure

View File

@@ -40,6 +40,7 @@ import net.rdrei.android.dirchooser.DirectoryChooserActivity
import net.rdrei.android.dirchooser.DirectoryChooserConfig
import xyz.quaver.pupil.Pupil
import xyz.quaver.pupil.R
import xyz.quaver.pupil.histories
import xyz.quaver.pupil.ui.LockActivity
import xyz.quaver.pupil.ui.SettingsActivity
import xyz.quaver.pupil.ui.dialog.DefaultQueryDialog
@@ -143,8 +144,6 @@ class SettingsFragment :
}.show()
}
"clear_history" -> {
val histories = (requireContext().applicationContext as Pupil).histories
AlertDialog.Builder(requireContext()).apply {
setTitle(R.string.warning)
setMessage(R.string.settings_clear_history_alert_message)
@@ -220,10 +219,10 @@ class SettingsFragment :
when (key) {
"proxy" -> {
summary = getProxyInfo(requireContext()).type.name
summary = context?.let { getProxyInfo(it).type.name }
}
"dl_location" -> {
summary = getDownloadDirectory(requireContext()).canonicalPath
summary = context?.let { getDownloadDirectory(it).canonicalPath }
}
}
}
@@ -286,7 +285,6 @@ class SettingsFragment :
onPreferenceClickListener = this@SettingsFragment
}
"clear_history" -> {
val histories = (requireActivity().application as Pupil).histories
summary = getString(R.string.settings_clear_history_summary, histories.size)
onPreferenceClickListener = this@SettingsFragment