milan jurkulák 2 роки тому
батько
коміт
636bbd1ae9

+ 8 - 13
src/main/kotlin/eu/mjdev/desktop/Main.kt

@@ -5,6 +5,7 @@ import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.runtime.rememberCoroutineScope
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.window.application
+import eu.mjdev.dadb.helpers.log
 import eu.mjdev.desktop.components.appsmenu.AppsMenu
 import eu.mjdev.desktop.components.controlcenter.ControlCenter
 import eu.mjdev.desktop.components.desktoppanel.DesktopPanel
@@ -21,26 +22,20 @@ fun main() = application(
         LocalDesktop provides DesktopProvider(scope)
     ) {
         MaterialTheme {
+            val api: DesktopProvider = LocalDesktop.current
             val controlCenterState = rememberVisibilityState()
             val panelState = rememberVisibilityState()
             val menuState = rememberVisibilityState()
-//            scope.launch {
-//                api.askGemini("How are you today?").let {
-//                    log { "Gemini answer: $it" }
-//                }
-//            }
+            // todo : test
+            api.askGemini("How are you today?").let {
+                log { "Gemini answer: $it" }
+            }
+            // todo : test
             MainWindow(
                 panelState = panelState,
                 controlCenterState = controlCenterState,
                 menuState = menuState
-            ) {
-//                Dialog(
-//                    onDismissRequest = {},
-//                    properties = DialogProperties()
-//                ) {
-//                    Text("dialog content")
-//                }
-            }
+            )
             DesktopPanel(
                 panelState = panelState,
                 onMenuIconClicked = {

+ 2 - 2
src/main/kotlin/eu/mjdev/desktop/components/appsmenu/AppsMenuApp.kt

@@ -13,7 +13,7 @@ import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.text.font.FontWeight
 import androidx.compose.ui.unit.DpSize
 import androidx.compose.ui.unit.dp
-import eu.mjdev.desktop.components.fonticon.MaterialIcon
+import eu.mjdev.desktop.components.fonticon.FontIcon
 import eu.mjdev.desktop.components.text.TextAny
 import eu.mjdev.desktop.provider.DesktopProvider
 import eu.mjdev.desktop.provider.DesktopProvider.Companion.LocalDesktop
@@ -36,7 +36,7 @@ fun AppsMenuApp(
     verticalAlignment = Alignment.CenterVertically,
 ) {
     val materialIcon = api.currentUser.theme.iconSet.iconForName(app?.name ?: icon) ?: "?".toInt()
-    MaterialIcon(
+    FontIcon(
         iconId = materialIcon,
         iconSize = iconSize,
         iconColor = iconTint,

+ 2 - 2
src/main/kotlin/eu/mjdev/desktop/components/appsmenu/AppsMenuCategory.kt

@@ -13,7 +13,7 @@ import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.text.font.FontWeight
 import androidx.compose.ui.unit.DpSize
 import androidx.compose.ui.unit.dp
-import eu.mjdev.desktop.components.fonticon.MaterialIcon
+import eu.mjdev.desktop.components.fonticon.FontIcon
 import eu.mjdev.desktop.components.text.TextAny
 import eu.mjdev.desktop.provider.DesktopProvider
 import eu.mjdev.desktop.provider.DesktopProvider.Companion.LocalDesktop
@@ -35,7 +35,7 @@ fun AppsMenuCategory(
     verticalAlignment = Alignment.CenterVertically
 ) {
     val materialIcon = api.currentUser.theme.iconSet.iconForName(category.name) ?: "?".toInt()
-    MaterialIcon(
+    FontIcon(
         iconId = materialIcon,
         iconSize = iconSize,
         iconColor = iconTint,

+ 2 - 2
src/main/kotlin/eu/mjdev/desktop/components/desktoppanel/DesktopPanelIcon.kt

@@ -18,7 +18,7 @@ import androidx.compose.ui.input.pointer.PointerEventType
 import androidx.compose.ui.input.pointer.onPointerEvent
 import androidx.compose.ui.unit.DpSize
 import androidx.compose.ui.unit.dp
-import eu.mjdev.desktop.components.fonticon.MaterialIcon
+import eu.mjdev.desktop.components.fonticon.FontIcon
 import eu.mjdev.desktop.extensions.Compose.color
 import eu.mjdev.desktop.extensions.Compose.noElevation
 import eu.mjdev.desktop.extensions.Modifier.clipRect
@@ -67,7 +67,7 @@ fun DesktopPanelIcon(
             colors = ButtonDefaults.color(background),
             elevation = ButtonDefaults.noElevation()
         ) {
-            MaterialIcon(
+            FontIcon(
                 iconId = materialIcon,
                 iconColor = iconColor,
                 iconBackgroundColor = iconBackgroundColor,

+ 1 - 1
src/main/kotlin/eu/mjdev/desktop/components/fonticon/MaterialIcon.kt → src/main/kotlin/eu/mjdev/desktop/components/fonticon/FontIcon.kt

@@ -21,7 +21,7 @@ import eu.mjdev.desktop.extensions.Compose.width
 import eu.mjdev.desktop.provider.DesktopProvider.Companion.LocalDesktop
 
 @Composable
-fun MaterialIcon(
+fun FontIcon(
     iconicFont: MaterialIconFont = LocalDesktop.current.currentUser.theme.iconSet,
     iconId: Int,
     iconSize: DpSize = DpSize(32.dp, 32.dp),

+ 14 - 10
src/main/kotlin/eu/mjdev/desktop/provider/DesktopProvider.kt

@@ -8,12 +8,13 @@ import androidx.compose.ui.unit.dp
 import dev.shreyaspatil.ai.client.generativeai.GenerativeModel
 import dev.shreyaspatil.ai.client.generativeai.type.content
 import eu.mjdev.dadb.AdbDiscover.Companion.adbDevicesHandler
-import eu.mjdev.dadb.helpers.log
 import eu.mjdev.desktop.components.controlcenter.ControlCenterPage
 import eu.mjdev.desktop.components.controlcenter.pages.*
+import eu.mjdev.desktop.helpers.ResourceStream
 import eu.mjdev.desktop.provider.data.User
 import eu.mjdev.desktop.provider.providers.AppsProvider
 import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.runBlocking
 import java.awt.GraphicsDevice
 import java.awt.GraphicsEnvironment
 import java.awt.Toolkit
@@ -22,13 +23,14 @@ import java.io.FileReader
 import javax.script.ScriptEngine
 import javax.script.ScriptEngineManager
 
-@Suppress("unused", "MemberVisibilityCanBePrivate", "CanBeParameter")
+@Suppress("unused", "MemberVisibilityCanBePrivate", "CanBeParameter", "PrivatePropertyName", "SameParameterValue")
 class DesktopProvider(
     private val scope: CoroutineScope? = null,
-    val currentUser: User = User.load(),
-    val geminiApiKey: String = "AIzaSyAGhYvYsTc_7nf4bv7HAQH6q8Pb7mbCKoQ", // todo
 ) {
-    private val _currentUser: MutableState<User> = mutableStateOf(currentUser)
+    private val __currentUser: User by lazy { User.load() }
+    private val _currentUser: MutableState<User> = mutableStateOf(__currentUser)
+    val currentUser
+        get() = _currentUser.value
 
     private val _controlCenterPages: MutableState<List<ControlCenterPage>> =
         mutableStateOf(
@@ -76,7 +78,7 @@ class DesktopProvider(
     val generativeModel: GenerativeModel by lazy {
         GenerativeModel(
             modelName = "gemini-1.5-pro-latest",
-            apiKey = geminiApiKey
+            apiKey = loadKey("gemini")
         )
     }
 
@@ -84,13 +86,15 @@ class DesktopProvider(
         currentUser.theme.controlCenterExpandedWidth = containerSize.width.div(4)
     }
 
-    suspend fun askGemini(question: String) = runCatching {
+    private fun loadKey(key: String): String = runCatching {
+        ResourceStream("keys/$key.key").string
+    }.getOrNull().orEmpty()
+
+    fun askGemini(question: String): String = runBlocking {
         generativeModel.generateContent(content {
             text(question)
         }).text
-    }.onFailure { e ->
-        log { e.message ?: "" }
-    }.getOrNull()
+    }.orEmpty()
 
     fun runScript(script: String): Any =
         engine.eval(script)