new: integrate pages for deepen and about
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
package fr.ajaury.gwenedeg.web.ui
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.interop.UIKitView
|
||||
import kotlinx.cinterop.ExperimentalForeignApi
|
||||
import platform.CoreGraphics.CGRectZero
|
||||
import platform.Foundation.NSURL
|
||||
import platform.Foundation.NSURLRequest
|
||||
import platform.UIKit.UIUserInterfaceStyle
|
||||
import platform.UIKit.UIUserInterfaceStyle.UIUserInterfaceStyleDark
|
||||
import platform.UIKit.UIUserInterfaceStyle.UIUserInterfaceStyleLight
|
||||
import platform.WebKit.WKWebView
|
||||
import platform.WebKit.WKWebViewConfiguration
|
||||
|
||||
@OptIn(ExperimentalForeignApi::class)
|
||||
@Composable
|
||||
actual fun PlatformWebView(
|
||||
url: String,
|
||||
darkTheme: Boolean,
|
||||
modifier: Modifier,
|
||||
) {
|
||||
UIKitView(
|
||||
modifier = modifier,
|
||||
factory = {
|
||||
WKWebView(
|
||||
frame = CGRectZero.readValue(),
|
||||
configuration = WKWebViewConfiguration(),
|
||||
).apply {
|
||||
setOverrideUserInterfaceStyle(darkTheme.toInterfaceStyle())
|
||||
NSURL.URLWithString(url)?.let { nsUrl ->
|
||||
loadRequest(NSURLRequest(uRL = nsUrl))
|
||||
}
|
||||
}
|
||||
},
|
||||
// Re-apply on recomposition so a light/dark switch takes effect without reloading the page.
|
||||
update = { webView ->
|
||||
webView.setOverrideUserInterfaceStyle(darkTheme.toInterfaceStyle())
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
private fun Boolean.toInterfaceStyle(): UIUserInterfaceStyle =
|
||||
if (this) UIUserInterfaceStyleDark else UIUserInterfaceStyleLight
|
||||
Reference in New Issue
Block a user