From cefe45e8cc712698c44f97c3ace52b2203f0b7d2 Mon Sep 17 00:00:00 2001
From: Rani Sargees <cheeze.sprinkels+official_git@gmail.com>
Date: Sat, 7 Mar 2020 04:44:25 -0500
Subject: [PATCH] fixed double-locking, added secure screen, fixed tsumino for
 real this time

---
 app/src/main/java/exh/EXHMigrations.kt        | 22 +++++++++
 .../java/exh/ui/lock/LockActivityDelegate.kt  | 46 +++++++++++++++++++
 2 files changed, 68 insertions(+)
 create mode 100644 app/src/main/java/exh/ui/lock/LockActivityDelegate.kt

diff --git a/app/src/main/java/exh/EXHMigrations.kt b/app/src/main/java/exh/EXHMigrations.kt
index 350e7ca5d..f7ede0e72 100644
--- a/app/src/main/java/exh/EXHMigrations.kt
+++ b/app/src/main/java/exh/EXHMigrations.kt
@@ -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
diff --git a/app/src/main/java/exh/ui/lock/LockActivityDelegate.kt b/app/src/main/java/exh/ui/lock/LockActivityDelegate.kt
new file mode 100644
index 000000000..0ba5e40b4
--- /dev/null
+++ b/app/src/main/java/exh/ui/lock/LockActivityDelegate.kt
@@ -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
+    }
+
+}