فهرست منبع

Moved debug dao to debug source code (refactoring)

Vadik Sirekanyan 2 سال پیش
والد
کامیت
d1f9217b80

+ 29 - 0
app/src/debug/kotlin/org/sirekanyan/outline/db/DebugDaoImpl.kt

@@ -0,0 +1,29 @@
+package org.sirekanyan.outline.db
+
+import org.sirekanyan.outline.api.model.createServerEntity
+import org.sirekanyan.outline.isDebugBuild
+
+class DebugDaoImpl(private val database: OutlineDatabase) : DebugDao {
+
+    private val keyQueries = database.keyEntityQueries
+    private val serverQueries = database.serverEntityQueries
+
+    init {
+        require(isDebugBuild()) {
+            error("Not allowed in production builds")
+        }
+    }
+
+    override fun reset() {
+        database.transaction {
+            keyQueries.truncate()
+            serverQueries.truncate()
+            listOf<String>(
+                // add your debug servers here
+            ).forEach { url ->
+                serverQueries.insert(createServerEntity(url, insecure = true))
+            }
+        }
+    }
+
+}

+ 11 - 24
app/src/main/java/org/sirekanyan/outline/db/DebugDao.kt

@@ -1,29 +1,16 @@
 package org.sirekanyan.outline.db
 
-import org.sirekanyan.outline.api.model.createServerEntity
-import org.sirekanyan.outline.isDebugBuild
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.remember
+import androidx.compose.ui.platform.LocalContext
+import org.sirekanyan.outline.app
 
-class DebugDao(private val database: OutlineDatabase) {
-
-    private val keyQueries = database.keyEntityQueries
-    private val serverQueries = database.serverEntityQueries
-
-    init {
-        require(isDebugBuild()) {
-            error("Not allowed in production builds")
-        }
-    }
-
-    fun reset() {
-        database.transaction {
-            keyQueries.truncate()
-            serverQueries.truncate()
-            listOf<String>(
-                // add your debug servers here
-            ).forEach { url ->
-                serverQueries.insert(createServerEntity(url, insecure = true))
-            }
-        }
-    }
+@Composable
+fun rememberDebugDao(): DebugDao {
+    val database = LocalContext.current.app().database
+    return remember { DebugDaoImpl(database) }
+}
 
+interface DebugDao {
+    fun reset()
 }

+ 2 - 4
app/src/main/java/org/sirekanyan/outline/ui/DrawerContent.kt

@@ -26,7 +26,6 @@ import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.getValue
-import androidx.compose.runtime.remember
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.vector.ImageVector
 import androidx.compose.ui.platform.LocalContext
@@ -38,8 +37,7 @@ import org.sirekanyan.outline.AddServerDialog
 import org.sirekanyan.outline.MainState
 import org.sirekanyan.outline.R
 import org.sirekanyan.outline.SelectedPage
-import org.sirekanyan.outline.app
-import org.sirekanyan.outline.db.DebugDao
+import org.sirekanyan.outline.db.rememberDebugDao
 import org.sirekanyan.outline.ext.rememberFlowAsState
 import org.sirekanyan.outline.isDebugBuild
 import org.sirekanyan.outline.isPlayFlavor
@@ -108,7 +106,7 @@ private fun DrawerSheetContent(state: MainState, insets: PaddingValues) {
             Divider(Modifier.padding(vertical = 8.dp))
             val context = LocalContext.current
             if (isDebugBuild()) {
-                val debugDao = remember { DebugDao(context.app().database) }
+                val debugDao = rememberDebugDao()
                 DrawerItem(
                     icon = Icons.Default.Warning,
                     label = "Reset database",

+ 8 - 0
app/src/release/kotlin/org/sirekanyan/outline/db/DebugDaoImpl.kt

@@ -0,0 +1,8 @@
+package org.sirekanyan.outline.db
+
+@Suppress("UNUSED_PARAMETER")
+class DebugDaoImpl(database: OutlineDatabase) : DebugDao {
+    override fun reset() {
+        // no-op
+    }
+}