✨ Adds saving server url
This commit is contained in:
parent
3f5886ef4a
commit
015ede288f
@ -30,6 +30,7 @@ import androidx.compose.runtime.remember
|
|||||||
import androidx.compose.runtime.setValue
|
import androidx.compose.runtime.setValue
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.unit.sp
|
import androidx.compose.ui.unit.sp
|
||||||
@ -48,9 +49,22 @@ class AuthActivity : ComponentActivity() {
|
|||||||
setContent {
|
setContent {
|
||||||
AntiFedTheme {
|
AntiFedTheme {
|
||||||
var serverUrl by remember { mutableStateOf("") }
|
var serverUrl by remember { mutableStateOf("") }
|
||||||
|
var token by remember { mutableStateOf("") }
|
||||||
|
|
||||||
|
var needToCheckUrl by remember { mutableStateOf(false) }
|
||||||
var checkingUrl by remember { mutableStateOf(false) }
|
var checkingUrl by remember { mutableStateOf(false) }
|
||||||
var isServerUrlOk by remember { mutableStateOf(false) }
|
var isServerUrlOk by remember { mutableStateOf(false) }
|
||||||
|
|
||||||
|
val prefs = LocalContext.current.getSharedPreferences(
|
||||||
|
stringResource(R.string.settings_prefs_key),
|
||||||
|
MODE_PRIVATE
|
||||||
|
)
|
||||||
|
val loadedServerUrl = prefs.getString(getString(R.string.server_url_key), "") ?: ""
|
||||||
|
if (loadedServerUrl.isNotBlank()) {
|
||||||
|
serverUrl = loadedServerUrl
|
||||||
|
}
|
||||||
|
isServerUrlOk = prefs.getBoolean(getString(R.string.server_url_okay_key), false)
|
||||||
|
|
||||||
fun serverUrlMatches(): Boolean {
|
fun serverUrlMatches(): Boolean {
|
||||||
var re = Regex(
|
var re = Regex(
|
||||||
"(?:http[s]?:\\/\\/.)?(?:www\\.)?[-a-zA-Z0-9@%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b(?:[-a-zA-Z0-9@:%_\\+.~#?&\\/\\/=]*)",
|
"(?:http[s]?:\\/\\/.)?(?:www\\.)?[-a-zA-Z0-9@%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b(?:[-a-zA-Z0-9@:%_\\+.~#?&\\/\\/=]*)",
|
||||||
@ -60,15 +74,18 @@ class AuthActivity : ComponentActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
LaunchedEffect(serverUrl) {
|
LaunchedEffect(serverUrl) {
|
||||||
if (serverUrl.isBlank()) {
|
if (!needToCheckUrl) return@LaunchedEffect
|
||||||
|
else {
|
||||||
isServerUrlOk = false
|
isServerUrlOk = false
|
||||||
return@LaunchedEffect
|
with(prefs.edit()) {
|
||||||
|
putBoolean(getString(R.string.server_url_okay_key), false)
|
||||||
|
apply()
|
||||||
}
|
}
|
||||||
if (!serverUrlMatches()) {
|
|
||||||
isServerUrlOk = false
|
|
||||||
return@LaunchedEffect
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (serverUrl.isBlank()) return@LaunchedEffect
|
||||||
|
if (!serverUrlMatches()) return@LaunchedEffect
|
||||||
|
|
||||||
delay(1000)
|
delay(1000)
|
||||||
checkingUrl = true
|
checkingUrl = true
|
||||||
|
|
||||||
@ -76,7 +93,12 @@ class AuthActivity : ComponentActivity() {
|
|||||||
val response = client.get(serverUrl)
|
val response = client.get(serverUrl)
|
||||||
|
|
||||||
checkingUrl = false
|
checkingUrl = false
|
||||||
|
needToCheckUrl = false
|
||||||
isServerUrlOk = response.status == HttpStatusCode.OK
|
isServerUrlOk = response.status == HttpStatusCode.OK
|
||||||
|
with(prefs.edit()) {
|
||||||
|
putBoolean(getString(R.string.server_url_okay_key), isServerUrlOk)
|
||||||
|
apply()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Scaffold(
|
Scaffold(
|
||||||
@ -113,7 +135,14 @@ class AuthActivity : ComponentActivity() {
|
|||||||
|
|
||||||
TextField(
|
TextField(
|
||||||
value = serverUrl,
|
value = serverUrl,
|
||||||
onValueChange = { serverUrl = it },
|
onValueChange = {
|
||||||
|
needToCheckUrl = true
|
||||||
|
serverUrl = it
|
||||||
|
with(prefs.edit()) {
|
||||||
|
putString(getString(R.string.server_url_key), it)
|
||||||
|
apply()
|
||||||
|
}
|
||||||
|
},
|
||||||
label = { Text(stringResource(R.string.server_url)) },
|
label = { Text(stringResource(R.string.server_url)) },
|
||||||
singleLine = true,
|
singleLine = true,
|
||||||
isError = !isServerUrlOk,
|
isError = !isServerUrlOk,
|
||||||
@ -126,6 +155,15 @@ class AuthActivity : ComponentActivity() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
Spacer(modifier = Modifier.height(12.dp))
|
||||||
|
|
||||||
|
TextField(
|
||||||
|
value = token,
|
||||||
|
onValueChange = { token = it },
|
||||||
|
label = { Text(stringResource(R.string.token)) },
|
||||||
|
singleLine = true,
|
||||||
|
isError = token.isBlank()
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,4 +5,5 @@
|
|||||||
<string name="show_menu">Ukázať menu</string>
|
<string name="show_menu">Ukázať menu</string>
|
||||||
<string name="auth_icon_desc">Ísť do nastavení autentikácie</string>
|
<string name="auth_icon_desc">Ísť do nastavení autentikácie</string>
|
||||||
<string name="go_back">Ísť späť</string>
|
<string name="go_back">Ísť späť</string>
|
||||||
|
<string name="token">Token</string>
|
||||||
</resources>
|
</resources>
|
@ -5,6 +5,10 @@
|
|||||||
<string name="show_menu">Show menu</string>
|
<string name="show_menu">Show menu</string>
|
||||||
<string name="auth_icon_desc">Go to auth settings</string>
|
<string name="auth_icon_desc">Go to auth settings</string>
|
||||||
<string name="go_back">Go back</string>
|
<string name="go_back">Go back</string>
|
||||||
|
<string name="token">Token</string>
|
||||||
|
<string name="settings_prefs_key" translatable="false">dev.svitan.antifed.settings</string>
|
||||||
|
<string name="server_url_key" translatable="false">server_url</string>
|
||||||
|
<string name="server_url_okay_key" translatable="false">server_url_okay</string>
|
||||||
<!-- Strings used for fragments for navigation -->
|
<!-- Strings used for fragments for navigation -->
|
||||||
|
|
||||||
</resources>
|
</resources>
|
Loading…
x
Reference in New Issue
Block a user