feat: начало работы над клиентом

This commit is contained in:
nm17 2023-06-04 00:47:20 +04:00
parent e1bb9de063
commit dd7109786e
5 changed files with 82 additions and 8 deletions

View file

@ -0,0 +1,27 @@
@file:OptIn(ExperimentalSerializationApi::class)
package ru.nm17.narodmon.appNarodMonApiClient.types
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.KSerializer
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonNames
import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.encodeToJsonElement
import kotlinx.serialization.json.jsonObject
@Serializable
data class AppInitRequest (
@JsonNames("version")
val appVersion: String,
val platform: String,
val model: String,
val width: Int,
val utc: Int
)

View file

@ -0,0 +1,18 @@
package ru.nm17.narodmon.appNarodMonApiClient.types
import kotlinx.serialization.Serializable
@Serializable
enum class NarodMonLanguages(val value: String) {
Russian("ru"),
English("en"),
Uk("uk")
}
@Serializable
data class MandatoryParams(
var cmd: String,
var lang: NarodMonLanguages,
var uuid: String,
var apiKey: String,
)

View file

@ -0,0 +1,12 @@
package ru.nm17.narodmon.appNarodMonApiClient
import kotlinx.serialization.json.JsonObject
fun mergeJsonObjects(json1: JsonObject, json2: JsonObject): JsonObject {
val result = mutableMapOf<String, kotlinx.serialization.json.JsonElement>()
result.putAll(json1)
json2.forEach { (key, value) ->
result[key] = value
}
return JsonObject(result)
}

View file

@ -29,7 +29,7 @@ import ru.nm17.narodmon.R
import kotlin.system.exitProcess
@Composable
fun AgreementDialog(onClick: () -> Unit) {
fun AgreementDialog(modifier: Modifier = Modifier, onClick: () -> Unit) {
val uriHandler = LocalUriHandler.current
AlertDialog(
@ -83,7 +83,8 @@ fun AgreementDialog(onClick: () -> Unit) {
onClick = { exitProcess(0) }) {
Text(text = stringResource(id = R.string.exit))
}
}
},
modifier = modifier
)
}

View file

@ -2,9 +2,13 @@
package ru.nm17.narodmon.ui.elements
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.AccountCircle
import androidx.compose.material.icons.filled.Add
import androidx.compose.material.icons.filled.Menu
import androidx.compose.material3.Divider
@ -14,6 +18,7 @@ import androidx.compose.material3.FabPosition
import androidx.compose.material3.FloatingActionButton
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.ListItem
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ModalDrawerSheet
import androidx.compose.material3.ModalNavigationDrawer
@ -26,6 +31,8 @@ import androidx.compose.material3.rememberDrawerState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.navigation.compose.rememberNavController
import kotlinx.coroutines.launch
@ -43,13 +50,22 @@ fun GenericNavScaffold(title: @Composable () -> Unit, content: @Composable (Padd
ModalNavigationDrawer(drawerState = expanded, drawerContent = {
ModalDrawerSheet {
Text("Drawer title", modifier = Modifier.padding(16.dp), style = MaterialTheme.typography.titleLarge)
Divider()
NavigationDrawerItem(
label = { Text(text = "Drawer Item") },
selected = true,
onClick = { /*TODO*/ }
ListItem(
leadingContent = {
Icon(Icons.Default.AccountCircle, contentDescription = "")
},
headlineText = { Text(text = "Гость", style = MaterialTheme.typography.titleLarge)},
modifier = Modifier.height(72.dp)
)
Divider()
Column(modifier = Modifier.padding(horizontal = 4.dp, vertical = 8.dp)) {
NavigationDrawerItem(
label = { Text(text = "Drawer Item") },
selected = true,
onClick = { /*TODO*/ }
)
}
}
}) {
Scaffold(