Add basic network feature.
Basic implementation of a WebSocket protocol with JSON. Note : obfuscation & release build are deactivated again. Netty (needed for Ktor server) is a nightmare to build in release with or without proguard. Spend more time until now on project configuration that in actual prototyping.
This commit is contained in:
parent
ba0cc30a1a
commit
0e5fee6771
22 changed files with 958 additions and 161 deletions
|
|
@ -3,19 +3,58 @@ package com.pixelized.desktop.lwa
|
|||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.material.Surface
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.runtime.Stable
|
||||
import androidx.compose.runtime.compositionLocalOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.window.ApplicationScope
|
||||
import androidx.compose.ui.window.Window
|
||||
import androidx.compose.ui.window.rememberWindowState
|
||||
import com.pixelized.desktop.lwa.navigation.MainNavHost
|
||||
import com.pixelized.desktop.lwa.theme.LwaTheme
|
||||
import org.jetbrains.compose.ui.tooling.preview.Preview
|
||||
|
||||
val LocalWindowController = compositionLocalOf<WindowController> {
|
||||
error("Local Window Controller is not yet ready")
|
||||
}
|
||||
|
||||
@Stable
|
||||
data class WindowController(
|
||||
private val onCloseRequest: () -> Unit
|
||||
) {
|
||||
fun close() = onCloseRequest()
|
||||
}
|
||||
|
||||
@Composable
|
||||
@Preview
|
||||
fun App() {
|
||||
LwaTheme {
|
||||
Surface(
|
||||
modifier = Modifier.fillMaxSize()
|
||||
fun ApplicationScope.App() {
|
||||
val controller = remember {
|
||||
WindowController(
|
||||
onCloseRequest = ::exitApplication
|
||||
)
|
||||
}
|
||||
CompositionLocalProvider(
|
||||
LocalWindowController provides controller,
|
||||
) {
|
||||
Window(
|
||||
onCloseRequest = {
|
||||
controller.close()
|
||||
},
|
||||
state = rememberWindowState(
|
||||
width = 320.dp + 64.dp,
|
||||
height = 900.dp,
|
||||
),
|
||||
title = "LwaCharacterSheet",
|
||||
) {
|
||||
MainNavHost()
|
||||
LwaTheme {
|
||||
Surface(
|
||||
modifier = Modifier.fillMaxSize()
|
||||
) {
|
||||
MainNavHost()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue