fix: resolve all compilation errors (weight import, asStateFlow, getCookies->get, CoroutineScope import, JsonPrimitive form values, ExperimentalMaterial3Api)

This commit is contained in:
yumoqing 2026-05-18 09:16:37 +08:00
parent 7b881747d3
commit b80d607d51
3 changed files with 24 additions and 8 deletions

View File

@ -1,7 +1,19 @@
package com.bricks.mp.core
import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxWithConstraints
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.weight
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.foundation.horizontalScroll
@ -38,7 +50,9 @@ fun RenderWidget(
// 布局
"HBox", "FHBox" -> RenderHBox(resolvedWidget, actionDispatcher)
"VBox", "FVBox" -> RenderVBox(resolvedWidget, actionDispatcher)
"Filler", "HFiller" -> Spacer(modifier = Modifier.weight(1f))
"Filler", "HFiller" -> {
Spacer(modifier = Modifier.weight(1f))
}
"VFiller" -> Spacer(modifier = Modifier.height(
WidgetOptions.getString(resolvedWidget.options, "height", "16").toFloatOrNull()?.dp ?: 16.dp
))
@ -316,7 +330,7 @@ private fun RenderFormWidget(widget: BricksWidget, actionDispatcher: ActionDispa
val updatedBind = bind.copy(
options = bind.options + mapOf(
"formdata" to kotlinx.serialization.json.buildJsonObject {
formValues.forEach { (k, v) -> put(k, v) }
formValues.forEach { (k, v) -> put(k, kotlinx.serialization.json.JsonPrimitive(v)) }
}
)
)

View File

@ -8,6 +8,7 @@ import io.ktor.client.plugins.cookies.*
import io.ktor.client.request.*
import io.ktor.client.statement.*
import io.ktor.http.*
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import kotlinx.serialization.json.*
@ -40,10 +41,10 @@ class SageClient {
// 登录状态
private val _isLoggedIn = kotlinx.coroutines.flow.MutableStateFlow(false)
val isLoggedIn = _isLoggedIn.asStateFlow()
val isLoggedIn: kotlinx.coroutines.flow.StateFlow<Boolean> = _isLoggedIn
private val _loginError = kotlinx.coroutines.flow.MutableStateFlow<String?>(null)
val loginError = _loginError.asStateFlow()
val loginError: kotlinx.coroutines.flow.StateFlow<String?> = _loginError
private val mutex = Mutex()
@ -82,7 +83,7 @@ class SageClient {
if (widgetType == "Message" || widgetType == "UiMessage") {
// 检查是否有 session cookie
val cookies = cookieStorage.getCookies(URLBuilder(baseUrl).build())
val cookies = cookieStorage.get(URLBuilder(baseUrl).build())
if (cookies.isNotEmpty()) {
println("[Sage] Login successful, got ${cookies.size} cookies")
_isLoggedIn.value = true
@ -197,7 +198,7 @@ class SageClient {
suspend fun logout() = mutex.withLock {
try {
// 清除 cookies
cookieStorage.getCookies(URLBuilder(baseUrl).build())
cookieStorage.get(URLBuilder(baseUrl).build())
_isLoggedIn.value = false
println("[Sage] Logged out")
} catch (e: Exception) {

View File

@ -25,8 +25,8 @@ import com.bricks.mp.core.BricksWidget
import com.bricks.mp.core.RenderWidget
import com.bricks.mp.actions.ActionDispatcher
import com.bricks.mp.sage.SageClient
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.IO
import kotlinx.coroutines.launch
/**
@ -274,6 +274,7 @@ fun LoginScreen(
/**
* 主应用界面
*/
@OptIn(androidx.compose.material3.ExperimentalMaterial3Api::class)
@Composable
fun MainAppScreen(
rootWidget: BricksWidget,