feat(labs): fm test screen/-s

Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
Infi 2025-08-24 04:16:57 +02:00
parent 7009c90832
commit 14353c7f7c
5 changed files with 104 additions and 3 deletions

View File

@ -9,6 +9,6 @@ data class FinalMarkdownNodeTest(
@Suppress("KotlinJniMissingFunction")
object FinalMarkdown {
external fun init()
external fun init(debug: Boolean)
external fun process(input: String): FinalMarkdownNodeTest
}

View File

@ -1,5 +1,7 @@
package chat.revolt.ndk
import chat.revolt.BuildConfig
annotation class NativeLibrary(val name: String) {
companion object {
const val LIB_NAME_NATIVE_MARKDOWN = "stendal"
@ -12,6 +14,6 @@ object NativeLibraries {
System.loadLibrary(NativeLibrary.LIB_NAME_NATIVE_MARKDOWN)
System.loadLibrary(NativeLibrary.LIB_NAME_NATIVE_MARKDOWN_V2)
Stendal.init()
FinalMarkdown.init()
FinalMarkdown.init(BuildConfig.DEBUG)
}
}

View File

@ -178,6 +178,15 @@ fun LabsHomeScreen(navController: NavController, topNav: NavController) {
}
)
HorizontalDivider()
ListItem(
headlineContent = {
Text("Final Markdown")
},
modifier = Modifier.clickable {
navController.navigate("sandboxes/finalmarkdown")
}
)
HorizontalDivider()
ListItem(
headlineContent = {
Text("Gradient Editor")

View File

@ -14,6 +14,7 @@ import androidx.navigation.compose.rememberNavController
import chat.revolt.api.settings.FeatureFlags
import chat.revolt.screens.labs.ui.mockups.NewLoginExperienceMockup
import chat.revolt.screens.labs.ui.sandbox.CoreLibSandbox
import chat.revolt.screens.labs.ui.sandbox.FinalMarkdownSandbox
import chat.revolt.screens.labs.ui.sandbox.GradientEditorSandbox
import chat.revolt.screens.labs.ui.sandbox.JBMSandbox
import chat.revolt.screens.labs.ui.sandbox.NewCardSandboxScreen
@ -74,13 +75,15 @@ fun LabsRootScreen(topNav: NavController) {
composable("sandboxes/jbm") {
JBMSandbox(labsNav)
}
composable("sandboxes/finalmarkdown") {
FinalMarkdownSandbox(labsNav)
}
composable("sandboxes/gradienteditor") {
GradientEditorSandbox(labsNav)
}
composable("sandboxes/librevolt") {
CoreLibSandbox(labsNav)
}
composable("sandboxes/newcard") {
NewCardSandboxScreen(labsNav)
}

View File

@ -0,0 +1,87 @@
package chat.revolt.screens.labs.ui.sandbox
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.material3.TextField
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.style.TextOverflow
import androidx.navigation.NavController
import chat.revolt.ndk.FinalMarkdown
import chat.revolt.settings.dsl.SettingsPage
@Composable
fun FinalMarkdownSandbox(navController: NavController) {
var mdSource by remember { mutableStateOf("") }
var submitMdSource by remember { mutableStateOf<String?>(null) }
LaunchedEffect(submitMdSource) {
submitMdSource?.let {
FinalMarkdown.process(it)
}
}
SettingsPage(
navController = navController,
title = {
Text(
text = "Final Markdown Sandbox",
maxLines = 1,
overflow = TextOverflow.Ellipsis,
)
}
) {
Subcategory(
title = { Text("Source", maxLines = 1, overflow = TextOverflow.Ellipsis) },
) {
TextField(
value = mdSource,
onValueChange = { mdSource = it },
label = { Text("Markdown source") },
modifier = Modifier.fillMaxWidth()
)
TextButton(onClick = {
submitMdSource = mdSource
}) {
Text("Submit")
}
TextButton(onClick = {
submitMdSource = """# Full range of MD now supported!
1. Text with **bold**, *italics*, and ***both***!
2. You ~~can't see me~~.
3. [I'm a link to another website.](<https://revolt.chat>)
4. I'm a spoiler with ||**bold text inside it**||
- I'm a sub-item on this list...
- Let's go even deeper...
`Inline code`
```js
let x = "I'm a multi-line code block!";
```
> > ${'$'}${'$'}E = mc^2${'$'}${'$'}
>
> Albert Einstein
| Timestamp | Mention | Channel Link | Message Link |
|:-:|:-:|:-:|:-:|
| <t:1663846662:f> | <@01EX2NCWQ0CHS3QJF0FEQS1GR4> | <#01H73F4RAHTPBHKJ1XBQDXK3NQ> | https://revolt.chat/server/01F7ZSBSFHQ8TA81725KQCSDDP/channel/01F92C5ZXBQWQ8KY7J8KY917NM/01J25XZM9JXVVJDDKFPB7Q48HZ |"""
}) {
Text("Submit test document")
}
Subcategory(
title = { Text("Output", maxLines = 1, overflow = TextOverflow.Ellipsis) },
) {
Text("TBD!")
}
}
}
}