minor form check/hints
This commit is contained in:
		@ -1,8 +1,10 @@
 | 
				
			|||||||
package net.blumia.pcmdroid.ui.screen.addserver
 | 
					package net.blumia.pcmdroid.ui.screen.addserver
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import android.webkit.URLUtil
 | 
				
			||||||
import androidx.compose.foundation.layout.*
 | 
					import androidx.compose.foundation.layout.*
 | 
				
			||||||
import androidx.compose.foundation.rememberScrollState
 | 
					import androidx.compose.foundation.rememberScrollState
 | 
				
			||||||
import androidx.compose.foundation.shape.RoundedCornerShape
 | 
					import androidx.compose.foundation.shape.RoundedCornerShape
 | 
				
			||||||
 | 
					import androidx.compose.foundation.text.KeyboardActions
 | 
				
			||||||
import androidx.compose.foundation.text.KeyboardOptions
 | 
					import androidx.compose.foundation.text.KeyboardOptions
 | 
				
			||||||
import androidx.compose.foundation.verticalScroll
 | 
					import androidx.compose.foundation.verticalScroll
 | 
				
			||||||
import androidx.compose.material.*
 | 
					import androidx.compose.material.*
 | 
				
			||||||
@ -14,8 +16,11 @@ import androidx.compose.runtime.*
 | 
				
			|||||||
import androidx.compose.runtime.livedata.observeAsState
 | 
					import androidx.compose.runtime.livedata.observeAsState
 | 
				
			||||||
import androidx.compose.runtime.saveable.rememberSaveable
 | 
					import androidx.compose.runtime.saveable.rememberSaveable
 | 
				
			||||||
import androidx.compose.ui.Alignment
 | 
					import androidx.compose.ui.Alignment
 | 
				
			||||||
 | 
					import androidx.compose.ui.ExperimentalComposeUiApi
 | 
				
			||||||
import androidx.compose.ui.Modifier
 | 
					import androidx.compose.ui.Modifier
 | 
				
			||||||
import androidx.compose.ui.graphics.Color
 | 
					import androidx.compose.ui.graphics.Color
 | 
				
			||||||
 | 
					import androidx.compose.ui.platform.LocalSoftwareKeyboardController
 | 
				
			||||||
 | 
					import androidx.compose.ui.text.input.ImeAction
 | 
				
			||||||
import androidx.compose.ui.text.input.KeyboardType
 | 
					import androidx.compose.ui.text.input.KeyboardType
 | 
				
			||||||
import androidx.compose.ui.text.style.TextAlign
 | 
					import androidx.compose.ui.text.style.TextAlign
 | 
				
			||||||
import androidx.compose.ui.tooling.preview.Preview
 | 
					import androidx.compose.ui.tooling.preview.Preview
 | 
				
			||||||
@ -23,6 +28,7 @@ import androidx.compose.ui.unit.dp
 | 
				
			|||||||
import net.blumia.pcmdroid.model.Server
 | 
					import net.blumia.pcmdroid.model.Server
 | 
				
			||||||
import net.blumia.pcmdroid.viewmodel.AddServerViewModel
 | 
					import net.blumia.pcmdroid.viewmodel.AddServerViewModel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@OptIn(ExperimentalComposeUiApi::class)
 | 
				
			||||||
@Composable
 | 
					@Composable
 | 
				
			||||||
fun StepEnterApiUrl(
 | 
					fun StepEnterApiUrl(
 | 
				
			||||||
    viewModel: AddServerViewModel = AddServerViewModel(),
 | 
					    viewModel: AddServerViewModel = AddServerViewModel(),
 | 
				
			||||||
@ -55,16 +61,25 @@ fun StepEnterApiUrl(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        val urlStr: String by viewModel.apiUrl.observeAsState("")
 | 
					        val urlStr: String by viewModel.apiUrl.observeAsState("")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        val keyboardController = LocalSoftwareKeyboardController.current
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        OutlinedTextField(
 | 
					        OutlinedTextField(
 | 
				
			||||||
            modifier = Modifier
 | 
					            modifier = Modifier
 | 
				
			||||||
                .fillMaxWidth()
 | 
					                .fillMaxWidth()
 | 
				
			||||||
                .padding(vertical = 10.dp),
 | 
					                .padding(vertical = 10.dp),
 | 
				
			||||||
            keyboardOptions = KeyboardOptions(
 | 
					            keyboardOptions = KeyboardOptions(
 | 
				
			||||||
                keyboardType = KeyboardType.Uri,
 | 
					                keyboardType = KeyboardType.Uri,
 | 
				
			||||||
 | 
					                imeAction = ImeAction.Done,
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					            keyboardActions = KeyboardActions(
 | 
				
			||||||
 | 
					                onDone = {
 | 
				
			||||||
 | 
					                    keyboardController?.hide()
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            ),
 | 
					            ),
 | 
				
			||||||
            singleLine = true,
 | 
					            singleLine = true,
 | 
				
			||||||
            value = urlStr,
 | 
					            value = urlStr,
 | 
				
			||||||
            onValueChange = viewModel::setApiUrl,
 | 
					            onValueChange = viewModel::setApiUrl,
 | 
				
			||||||
 | 
					            isError = !viewModel.isApiUrlValid() && urlStr.isNotEmpty(),
 | 
				
			||||||
            label = { Text("Server API Url") },
 | 
					            label = { Text("Server API Url") },
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -91,6 +106,7 @@ fun StepOtherDetail(
 | 
				
			|||||||
            modifier = Modifier
 | 
					            modifier = Modifier
 | 
				
			||||||
                .fillMaxWidth()
 | 
					                .fillMaxWidth()
 | 
				
			||||||
                .padding(vertical = 10.dp),
 | 
					                .padding(vertical = 10.dp),
 | 
				
			||||||
 | 
					            singleLine = true,
 | 
				
			||||||
            value = shortNameStr,
 | 
					            value = shortNameStr,
 | 
				
			||||||
            onValueChange = viewModel::setShortNameStr,
 | 
					            onValueChange = viewModel::setShortNameStr,
 | 
				
			||||||
            label = { Text("Server short name") },
 | 
					            label = { Text("Server short name") },
 | 
				
			||||||
@ -100,6 +116,7 @@ fun StepOtherDetail(
 | 
				
			|||||||
            modifier = Modifier
 | 
					            modifier = Modifier
 | 
				
			||||||
                .fillMaxWidth()
 | 
					                .fillMaxWidth()
 | 
				
			||||||
                .padding(vertical = 10.dp),
 | 
					                .padding(vertical = 10.dp),
 | 
				
			||||||
 | 
					            singleLine = true,
 | 
				
			||||||
            value = nameStr,
 | 
					            value = nameStr,
 | 
				
			||||||
            onValueChange = viewModel::setNameStr,
 | 
					            onValueChange = viewModel::setNameStr,
 | 
				
			||||||
            label = { Text("Server name") },
 | 
					            label = { Text("Server name") },
 | 
				
			||||||
@ -109,6 +126,7 @@ fun StepOtherDetail(
 | 
				
			|||||||
            modifier = Modifier
 | 
					            modifier = Modifier
 | 
				
			||||||
                .fillMaxWidth()
 | 
					                .fillMaxWidth()
 | 
				
			||||||
                .padding(vertical = 10.dp),
 | 
					                .padding(vertical = 10.dp),
 | 
				
			||||||
 | 
					            singleLine = true,
 | 
				
			||||||
            value = baseFolderNameStr,
 | 
					            value = baseFolderNameStr,
 | 
				
			||||||
            onValueChange = viewModel::setBaseFolderNameStr,
 | 
					            onValueChange = viewModel::setBaseFolderNameStr,
 | 
				
			||||||
            label = { Text("Base folder name") },
 | 
					            label = { Text("Base folder name") },
 | 
				
			||||||
@ -118,6 +136,11 @@ fun StepOtherDetail(
 | 
				
			|||||||
            modifier = Modifier
 | 
					            modifier = Modifier
 | 
				
			||||||
                .fillMaxWidth()
 | 
					                .fillMaxWidth()
 | 
				
			||||||
                .padding(vertical = 10.dp),
 | 
					                .padding(vertical = 10.dp),
 | 
				
			||||||
 | 
					            keyboardOptions = KeyboardOptions(
 | 
				
			||||||
 | 
					                keyboardType = KeyboardType.Uri,
 | 
				
			||||||
 | 
					                imeAction = ImeAction.Next,
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					            singleLine = true,
 | 
				
			||||||
            value = mediaBaseUrlStr,
 | 
					            value = mediaBaseUrlStr,
 | 
				
			||||||
            onValueChange = viewModel::setMediaBaseUrlStr,
 | 
					            onValueChange = viewModel::setMediaBaseUrlStr,
 | 
				
			||||||
            label = { Text("Media base url") },
 | 
					            label = { Text("Media base url") },
 | 
				
			||||||
@ -208,7 +231,9 @@ fun AddServerScreen(
 | 
				
			|||||||
                ) {
 | 
					                ) {
 | 
				
			||||||
                    Text("Back")
 | 
					                    Text("Back")
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					                val apiUrl by viewModel.apiUrl.observeAsState()
 | 
				
			||||||
                Button(
 | 
					                Button(
 | 
				
			||||||
 | 
					                    enabled = URLUtil.isNetworkUrl(apiUrl),
 | 
				
			||||||
                    onClick = {
 | 
					                    onClick = {
 | 
				
			||||||
                        if (stepState != finalStep) {
 | 
					                        if (stepState != finalStep) {
 | 
				
			||||||
                            viewModel.fetchContentFromApiUrl()
 | 
					                            viewModel.fetchContentFromApiUrl()
 | 
				
			||||||
 | 
				
			|||||||
@ -84,6 +84,7 @@ fun EditServerScreen(
 | 
				
			|||||||
                modifier = Modifier
 | 
					                modifier = Modifier
 | 
				
			||||||
                    .fillMaxWidth()
 | 
					                    .fillMaxWidth()
 | 
				
			||||||
                    .padding(vertical = 10.dp),
 | 
					                    .padding(vertical = 10.dp),
 | 
				
			||||||
 | 
					                singleLine = true,
 | 
				
			||||||
                value = shortNameStr,
 | 
					                value = shortNameStr,
 | 
				
			||||||
                onValueChange = { value -> shortNameStr = value},
 | 
					                onValueChange = { value -> shortNameStr = value},
 | 
				
			||||||
                label = { Text("Server Short Name") },
 | 
					                label = { Text("Server Short Name") },
 | 
				
			||||||
@ -93,6 +94,7 @@ fun EditServerScreen(
 | 
				
			|||||||
                modifier = Modifier
 | 
					                modifier = Modifier
 | 
				
			||||||
                    .fillMaxWidth()
 | 
					                    .fillMaxWidth()
 | 
				
			||||||
                    .padding(vertical = 10.dp),
 | 
					                    .padding(vertical = 10.dp),
 | 
				
			||||||
 | 
					                singleLine = true,
 | 
				
			||||||
                value = nameStr,
 | 
					                value = nameStr,
 | 
				
			||||||
                onValueChange = { value -> nameStr = value},
 | 
					                onValueChange = { value -> nameStr = value},
 | 
				
			||||||
                label = { Text("Server Name") },
 | 
					                label = { Text("Server Name") },
 | 
				
			||||||
@ -105,6 +107,7 @@ fun EditServerScreen(
 | 
				
			|||||||
                keyboardOptions = KeyboardOptions(
 | 
					                keyboardOptions = KeyboardOptions(
 | 
				
			||||||
                    keyboardType = KeyboardType.Uri,
 | 
					                    keyboardType = KeyboardType.Uri,
 | 
				
			||||||
                ),
 | 
					                ),
 | 
				
			||||||
 | 
					                singleLine = true,
 | 
				
			||||||
                value = urlStr,
 | 
					                value = urlStr,
 | 
				
			||||||
                onValueChange = { value -> urlStr = value},
 | 
					                onValueChange = { value -> urlStr = value},
 | 
				
			||||||
                label = { Text("Server API Url") },
 | 
					                label = { Text("Server API Url") },
 | 
				
			||||||
@ -114,6 +117,7 @@ fun EditServerScreen(
 | 
				
			|||||||
                modifier = Modifier
 | 
					                modifier = Modifier
 | 
				
			||||||
                    .fillMaxWidth()
 | 
					                    .fillMaxWidth()
 | 
				
			||||||
                    .padding(vertical = 10.dp),
 | 
					                    .padding(vertical = 10.dp),
 | 
				
			||||||
 | 
					                singleLine = true,
 | 
				
			||||||
                value = baseFolderNameStr,
 | 
					                value = baseFolderNameStr,
 | 
				
			||||||
                onValueChange = { value -> baseFolderNameStr = value},
 | 
					                onValueChange = { value -> baseFolderNameStr = value},
 | 
				
			||||||
                label = { Text("Base folder name") },
 | 
					                label = { Text("Base folder name") },
 | 
				
			||||||
@ -123,6 +127,10 @@ fun EditServerScreen(
 | 
				
			|||||||
                modifier = Modifier
 | 
					                modifier = Modifier
 | 
				
			||||||
                    .fillMaxWidth()
 | 
					                    .fillMaxWidth()
 | 
				
			||||||
                    .padding(vertical = 10.dp),
 | 
					                    .padding(vertical = 10.dp),
 | 
				
			||||||
 | 
					                keyboardOptions = KeyboardOptions(
 | 
				
			||||||
 | 
					                    keyboardType = KeyboardType.Uri,
 | 
				
			||||||
 | 
					                ),
 | 
				
			||||||
 | 
					                singleLine = true,
 | 
				
			||||||
                value = mediaBaseUrlStr,
 | 
					                value = mediaBaseUrlStr,
 | 
				
			||||||
                onValueChange = { value -> mediaBaseUrlStr = value},
 | 
					                onValueChange = { value -> mediaBaseUrlStr = value},
 | 
				
			||||||
                label = { Text("Media base url") },
 | 
					                label = { Text("Media base url") },
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user