Merge branch 'next' into patch-new-wx

This commit is contained in:
Der_Googler
2025-05-31 00:24:37 +02:00
committed by GitHub
5 changed files with 30 additions and 33 deletions

View File

@@ -51,6 +51,7 @@ import com.rifsxd.ksunext.ui.component.rememberConfirmDialog
import com.rifsxd.ksunext.ui.util.*
import com.rifsxd.ksunext.ui.util.module.LatestVersionInfo
import com.rifsxd.ksunext.ui.viewmodel.ModuleViewModel
import com.rifsxd.ksunext.ui.viewmodel.SuperUserViewModel
import java.util.*
@OptIn(ExperimentalMaterial3Api::class)
@@ -87,10 +88,22 @@ fun HomeScreen(navigator: DestinationsNavigator) {
val lkmMode = ksuVersion?.let {
if (it >= Natives.MINIMAL_SUPPORTED_KERNEL_LKM && kernelVersion.isGKI()) Natives.isLkmMode else null
}
val superUserViewModel: SuperUserViewModel = viewModel()
val moduleViewModel: ModuleViewModel = viewModel()
LaunchedEffect(Unit) {
if (superUserViewModel.appList.isEmpty()) {
superUserViewModel.fetchAppList()
}
if (moduleViewModel.moduleList.isEmpty()) {
moduleViewModel.fetchModuleList()
}
}
val moduleUpdateCount = moduleViewModel.moduleList.count {
// Only count modules when update available (updateUrl is not empty)
moduleViewModel.checkUpdate(it).first.isNotEmpty()
}

View File

@@ -81,6 +81,7 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import androidx.core.net.toUri
import androidx.lifecycle.viewmodel.compose.viewModel
import com.dergoogler.mmrl.platform.Platform
import com.ramcosta.composedestinations.annotation.Destination
@@ -111,9 +112,6 @@ import com.rifsxd.ksunext.ui.util.restoreModule
import com.rifsxd.ksunext.ui.viewmodel.ModuleViewModel
import com.rifsxd.ksunext.ui.webui.WebUIActivity
import com.rifsxd.ksunext.ui.webui.WebUIXActivity
import androidx.core.net.toUri
import com.dergoogler.mmrl.platform.model.ModuleConfig
import com.dergoogler.mmrl.platform.model.ModuleConfig.Companion.asModuleConfig
import com.dergoogler.mmrl.ui.component.LabelItem
@OptIn(ExperimentalMaterial3Api::class)
@@ -313,23 +311,15 @@ fun ModuleScreen(navigator: DestinationsNavigator) {
.putExtra("id", id)
.putExtra("name", name)
val config = id.asModuleConfig
val engine = config.getWebuiEngine(context)
val selectedEngine = when (engine) {
"wx" -> wxEngine
"ksu" -> ksuEngine
null -> if (prefs.getBoolean(
"use_webuix",
true
) && Platform.isAlive
) wxEngine else ksuEngine
webUILauncher.launch(
if (prefs.getBoolean("use_webuix", true) && Platform.isAlive) {
wxEngine
} else {
ksuEngine
}
)
else -> wxEngine
}
webUILauncher.launch(selectedEngine)
return@ModuleList
}
},
context = context,
@@ -904,8 +894,7 @@ fun ModuleItemPreview() {
updateJson = "",
hasWebUi = false,
hasActionScript = false,
dirId = "dirId",
config = ModuleConfig()
dirId = "dirId"
)
ModuleItem(EmptyDestinationsNavigator, module, "", {}, {}, {}, {}, {})
}

View File

@@ -8,8 +8,6 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.dergoogler.mmrl.platform.model.ModuleConfig
import com.dergoogler.mmrl.platform.model.ModuleConfig.Companion.asModuleConfig
import com.dergoogler.mmrl.platform.Platform
import com.dergoogler.mmrl.platform.TIMEOUT_MILLIS
import kotlinx.coroutines.delay
@@ -45,8 +43,7 @@ class ModuleViewModel : ViewModel() {
val updateJson: String,
val hasWebUi: Boolean,
val hasActionScript: Boolean,
val dirId: String,
val config: ModuleConfig,
val dirId: String
)
data class ModuleUpdateInfo(
@@ -120,23 +117,21 @@ class ModuleViewModel : ViewModel() {
.map { array.getJSONObject(it) }
.map { obj ->
val id = obj.getString("id")
val config = id.asModuleConfig
ModuleInfo(
id,
config.name ?: obj.optString("name"),
obj.optString("name"),
obj.optString("author", "Unknown"),
obj.optString("version", "Unknown"),
obj.optInt("versionCode", 0),
config.description ?: obj.optString("description"),
obj.optString("description"),
obj.getBoolean("enabled"),
obj.getBoolean("update"),
obj.getBoolean("remove"),
obj.optString("updateJson"),
obj.optBoolean("web"),
obj.optBoolean("action"),
obj.getString("dir_id"),
config
obj.getString("dir_id")
)
}.toList()
isNeedRefresh = false

View File

@@ -200,7 +200,7 @@
<string name="settings_disable_su_summary">Desative temporariamente a capacidade de qualquer app obter privilégios root por meio do comando su (processos root existentes não serão afetados).</string>
<string name="settings_language">Idioma</string>
<string name="use_webuix">Usar WebUI X</string>
<string name="use_webuix_summary">Use o WebUI X em vez do WebUI, que oferece suporte a mais APIs. Esteja ciente de que os desenvolvedores podem substituir esse recurso na configuração do módulo.</string>
<string name="use_webuix_summary">Use o WebUI X em vez do WebUI, que oferece suporte a mais APIs.</string>
<string name="use_webuix_eruda">Injetar Eruda no WebUI X</string>
<string name="use_webuix_eruda_summary">Injeta um console de depuração no WebUI X para facilitar a depuração. Requer que a depuração web esteja ativada.</string>
</resources>

View File

@@ -210,7 +210,7 @@
<string name="settings_disable_su_summary">Temporarily disable the ability of any app to gain root privileges via the su command (existing root processes won\'t be affected).</string>
<string name="settings_language">Language</string>
<string name="use_webuix">Use WebUI X</string>
<string name="use_webuix_summary">Use WebUI X instead of WebUI, which supports more APIs. Be aware that developers can override this feature in their module config.</string>
<string name="use_webuix_summary">Use WebUI X instead of WebUI, which supports more APIs.</string>
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
</resources>