mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Add clear cookies option to WebView menu
This commit is contained in:
		@@ -29,9 +29,9 @@ class AndroidCookieJar : CookieJar {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun remove(url: HttpUrl, cookieNames: List<String>? = null, maxAge: Int = -1) {
 | 
			
		||||
    fun remove(url: HttpUrl, cookieNames: List<String>? = null, maxAge: Int = -1): Int {
 | 
			
		||||
        val urlString = url.toString()
 | 
			
		||||
        val cookies = manager.getCookie(urlString) ?: return
 | 
			
		||||
        val cookies = manager.getCookie(urlString) ?: return 0
 | 
			
		||||
 | 
			
		||||
        fun List<String>.filterNames(): List<String> {
 | 
			
		||||
            return if (cookieNames != null) {
 | 
			
		||||
@@ -41,10 +41,11 @@ class AndroidCookieJar : CookieJar {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        cookies.split(";")
 | 
			
		||||
        return cookies.split(";")
 | 
			
		||||
            .map { it.substringBefore("=") }
 | 
			
		||||
            .filterNames()
 | 
			
		||||
            .onEach { manager.setCookie(urlString, "$it=;Max-Age=$maxAge") }
 | 
			
		||||
            .count()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun removeAll() {
 | 
			
		||||
 
 | 
			
		||||
@@ -259,11 +259,11 @@ class ExtensionDetailsController(bundle: Bundle? = null) :
 | 
			
		||||
            ?.map { it.baseUrl }
 | 
			
		||||
            ?.distinct() ?: emptyList()
 | 
			
		||||
 | 
			
		||||
        urls.forEach {
 | 
			
		||||
        val cleared = urls.sumOf {
 | 
			
		||||
            network.cookieManager.remove(it.toHttpUrl())
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        logcat { "Cleared cookies for: ${urls.joinToString()}" }
 | 
			
		||||
        logcat { "Cleared $cleared cookies for: ${urls.joinToString()}" }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun Source.isEnabled(): Boolean {
 | 
			
		||||
 
 | 
			
		||||
@@ -17,17 +17,20 @@ import androidx.lifecycle.lifecycleScope
 | 
			
		||||
import eu.kanade.tachiyomi.BuildConfig
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.databinding.WebviewActivityBinding
 | 
			
		||||
import eu.kanade.tachiyomi.network.NetworkHelper
 | 
			
		||||
import eu.kanade.tachiyomi.source.SourceManager
 | 
			
		||||
import eu.kanade.tachiyomi.source.online.HttpSource
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.activity.BaseActivity
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.WebViewClientCompat
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.WebViewUtil
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.getResourceColor
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.logcat
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.openInBrowser
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.setDefaultSettings
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.toast
 | 
			
		||||
import kotlinx.coroutines.flow.launchIn
 | 
			
		||||
import kotlinx.coroutines.flow.onEach
 | 
			
		||||
import okhttp3.HttpUrl.Companion.toHttpUrl
 | 
			
		||||
import reactivecircus.flowbinding.appcompat.navigationClicks
 | 
			
		||||
import reactivecircus.flowbinding.swiperefreshlayout.refreshes
 | 
			
		||||
import uy.kohesive.injekt.injectLazy
 | 
			
		||||
@@ -37,11 +40,16 @@ class WebViewActivity : BaseActivity() {
 | 
			
		||||
    private lateinit var binding: WebviewActivityBinding
 | 
			
		||||
 | 
			
		||||
    private val sourceManager: SourceManager by injectLazy()
 | 
			
		||||
    private val network: NetworkHelper by injectLazy()
 | 
			
		||||
 | 
			
		||||
    private var bundle: Bundle? = null
 | 
			
		||||
 | 
			
		||||
    private var isRefreshing: Boolean = false
 | 
			
		||||
 | 
			
		||||
    init {
 | 
			
		||||
        registerSecureActivity(this)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun onCreate(savedInstanceState: Bundle?) {
 | 
			
		||||
        super.onCreate(savedInstanceState)
 | 
			
		||||
 | 
			
		||||
@@ -176,6 +184,7 @@ class WebViewActivity : BaseActivity() {
 | 
			
		||||
            R.id.action_web_refresh -> refreshPage()
 | 
			
		||||
            R.id.action_web_share -> shareWebpage()
 | 
			
		||||
            R.id.action_web_browser -> openInBrowser()
 | 
			
		||||
            R.id.action_clear_cookies -> clearCookies()
 | 
			
		||||
        }
 | 
			
		||||
        return super.onOptionsItemSelected(item)
 | 
			
		||||
    }
 | 
			
		||||
@@ -207,8 +216,10 @@ class WebViewActivity : BaseActivity() {
 | 
			
		||||
        openInBrowser(binding.webview.url!!, forceDefaultBrowser = true)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    init {
 | 
			
		||||
        registerSecureActivity(this)
 | 
			
		||||
    private fun clearCookies() {
 | 
			
		||||
        val url = binding.webview.url!!
 | 
			
		||||
        val cleared = network.cookieManager.remove(url.toHttpUrl())
 | 
			
		||||
        logcat { "Cleared $cleared cookies for: $url" }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    companion object {
 | 
			
		||||
 
 | 
			
		||||
@@ -31,4 +31,9 @@
 | 
			
		||||
        android:title="@string/action_open_in_browser"
 | 
			
		||||
        app:showAsAction="never" />
 | 
			
		||||
 | 
			
		||||
    <item
 | 
			
		||||
        android:id="@+id/action_clear_cookies"
 | 
			
		||||
        android:title="@string/pref_clear_cookies"
 | 
			
		||||
        app:showAsAction="never" />
 | 
			
		||||
 | 
			
		||||
</menu>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user