diff --git a/app/src/main/assets/webmarkdown/renderer.html b/app/src/main/assets/webmarkdown/renderer.html
new file mode 100644
index 00000000..0ed13253
--- /dev/null
+++ b/app/src/main/assets/webmarkdown/renderer.html
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/chat/revolt/components/generic/WebMarkdown.kt b/app/src/main/java/chat/revolt/components/generic/WebMarkdown.kt
index 81efc463..d31e1762 100644
--- a/app/src/main/java/chat/revolt/components/generic/WebMarkdown.kt
+++ b/app/src/main/java/chat/revolt/components/generic/WebMarkdown.kt
@@ -31,91 +31,6 @@ import androidx.compose.ui.viewinterop.AndroidView
import androidx.webkit.WebViewAssetLoader
import chat.revolt.activities.InviteActivity
import chat.revolt.api.REVOLT_APP
-import org.intellij.lang.annotations.Language
-
-// TODO: Obvious placeholder.
-@Language("HTML")
-private const val HTML_TEMPLATE = """
-
-
-
-
-
-
-
-
-
- %s
-
-
-
-
-
-"""
private fun argbAsCssColour(argb: Int): String {
val alpha = (argb shr 24 and 0xff) / 255.0f
@@ -154,16 +69,6 @@ fun WebMarkdown(
modifier = modifier,
factory = { context ->
WebView(context).apply {
- val cssContentColour = argbAsCssColour(contentColour.toArgb())
- val cssPrimaryColour = argbAsCssColour(materialColourScheme.primary.toArgb())
-
- val html = String.format(
- HTML_TEMPLATE,
- cssContentColour,
- cssPrimaryColour,
- text.replace("&", "&").replace("<", "<").replace(">", ">")
- )
-
val assetLoader = WebViewAssetLoader.Builder()
.setDomain(Uri.parse(REVOLT_APP).host!!)
.addPathHandler(
@@ -222,12 +127,8 @@ fun WebMarkdown(
}
}
- loadDataWithBaseURL(
- REVOLT_APP,
- html,
- "text/html; charset=utf-8",
- "UTF-8",
- null
+ loadUrl(
+ "https://app.revolt.chat/_android_assets/webmarkdown/renderer.html",
)
settings.apply {
@@ -245,8 +146,26 @@ fun WebMarkdown(
fun onLoaded() {
finishedLoading = true
}
+
+ @JavascriptInterface
+ fun getMarkdown(): String {
+ return text
+ .replace("&", "&")
+ .replace("<", "<")
+ .replace(">", ">")
+ }
+
+ @JavascriptInterface
+ fun getContentColour(): String {
+ return argbAsCssColour(contentColour.toArgb())
+ }
+
+ @JavascriptInterface
+ fun getPrimaryColour(): String {
+ return argbAsCssColour(materialColourScheme.primary.toArgb())
+ }
},
- "Android"
+ "Bridge"
)
setBackgroundColor(android.graphics.Color.TRANSPARENT)