diff --git a/frontend/app/src/main/java/dev/svitan/antifed/AuthActivity.kt b/frontend/app/src/main/java/dev/svitan/antifed/AuthActivity.kt
index a60de65..2f67b49 100644
--- a/frontend/app/src/main/java/dev/svitan/antifed/AuthActivity.kt
+++ b/frontend/app/src/main/java/dev/svitan/antifed/AuthActivity.kt
@@ -30,6 +30,7 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
@@ -48,9 +49,22 @@ class AuthActivity : ComponentActivity() {
setContent {
AntiFedTheme {
var serverUrl by remember { mutableStateOf("") }
+ var token by remember { mutableStateOf("") }
+
+ var needToCheckUrl by remember { mutableStateOf(false) }
var checkingUrl 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 {
var re = Regex(
"(?: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) {
- if (serverUrl.isBlank()) {
+ if (!needToCheckUrl) return@LaunchedEffect
+ else {
isServerUrlOk = false
- return@LaunchedEffect
- }
- if (!serverUrlMatches()) {
- isServerUrlOk = false
- return@LaunchedEffect
+ with(prefs.edit()) {
+ putBoolean(getString(R.string.server_url_okay_key), false)
+ apply()
+ }
}
+ if (serverUrl.isBlank()) return@LaunchedEffect
+ if (!serverUrlMatches()) return@LaunchedEffect
+
delay(1000)
checkingUrl = true
@@ -76,7 +93,12 @@ class AuthActivity : ComponentActivity() {
val response = client.get(serverUrl)
checkingUrl = false
+ needToCheckUrl = false
isServerUrlOk = response.status == HttpStatusCode.OK
+ with(prefs.edit()) {
+ putBoolean(getString(R.string.server_url_okay_key), isServerUrlOk)
+ apply()
+ }
}
Scaffold(
@@ -113,7 +135,14 @@ class AuthActivity : ComponentActivity() {
TextField(
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)) },
singleLine = true,
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()
+ )
}
}
}
diff --git a/frontend/app/src/main/res/values-sk/strings.xml b/frontend/app/src/main/res/values-sk/strings.xml
index 24847df..4aba68d 100644
--- a/frontend/app/src/main/res/values-sk/strings.xml
+++ b/frontend/app/src/main/res/values-sk/strings.xml
@@ -5,4 +5,5 @@
Ukázať menu
Ísť do nastavení autentikácie
Ísť späť
+ Token
\ No newline at end of file
diff --git a/frontend/app/src/main/res/values/strings.xml b/frontend/app/src/main/res/values/strings.xml
index 4028c5d..54beea2 100644
--- a/frontend/app/src/main/res/values/strings.xml
+++ b/frontend/app/src/main/res/values/strings.xml
@@ -5,6 +5,10 @@
Show menu
Go to auth settings
Go back
+ Token
+ dev.svitan.antifed.settings
+ server_url
+ server_url_okay
\ No newline at end of file