fixed double-locking, added secure screen, fixed tsumino for real this time

This commit is contained in:
Rani Sargees 2020-03-07 04:44:25 -05:00 committed by Jobobby04
parent 03b44fff22
commit cefe45e8cc
2 changed files with 68 additions and 0 deletions

View File

@ -110,7 +110,29 @@ object EXHMigrations {
.build())
}
}
if (oldVersion < 8409) {
db.inTransaction {
// Migrate tsumino URLs
val tsuminoManga = db.db.get()
.listOfObjects(Manga::class.java)
.withQuery(Query.builder()
.table(MangaTable.TABLE)
.where("${MangaTable.COL_SOURCE} = $TSUMINO_SOURCE_ID")
.build())
.prepare()
.executeAsBlocking()
tsuminoManga.forEach {
it.url = "/entry/"+it.url.split("/").last()
}
db.db.put()
.objects(tsuminoManga)
// Extremely slow without the resolver :/
.withPutResolver(MangaUrlPutResolver())
.prepare()
.executeAsBlocking()
}
}
// TODO BE CAREFUL TO NOT FUCK UP MergedSources IF CHANGING URLs

View File

@ -0,0 +1,46 @@
package exh.ui.lock
import android.content.Intent
import android.view.WindowManager
import androidx.fragment.app.FragmentActivity
import com.bluelinelabs.conductor.Router
import com.bluelinelabs.conductor.RouterTransaction
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.preference.getOrDefault
import uy.kohesive.injekt.injectLazy
import java.util.Date
object LockActivityDelegate {
private val preferences by injectLazy<PreferencesHelper>()
var willLock: Boolean = true
fun doLock(router: Router, animate: Boolean = false) {
router.pushController(RouterTransaction.with(LockController())
.popChangeHandler(LockChangeHandler(animate)))
}
fun onCreate(activity: FragmentActivity) {
preferences.secureScreen().asObservable()
.subscribe {
if (it) {
activity.window.setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE)
} else {
activity.window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
}
}
}
fun onResume(activity: FragmentActivity, router: Router) {
if (lockEnabled() && !isAppLocked(router) && willLock && !preferences.eh_lockManually().getOrDefault()) {
doLock(router)
willLock = false
}
}
private fun isAppLocked(router: Router): Boolean {
return router.backstack.lastOrNull()?.controller() is LockController
}
}