diff --git a/frontend/app/src/main/java/dev/svitan/antifed/API.kt b/frontend/app/src/main/java/dev/svitan/antifed/API.kt
index 70321cf..1f4d53d 100644
--- a/frontend/app/src/main/java/dev/svitan/antifed/API.kt
+++ b/frontend/app/src/main/java/dev/svitan/antifed/API.kt
@@ -1,9 +1,11 @@
package dev.svitan.antifed
+import android.content.Context
+import android.content.SharedPreferences
import io.ktor.client.HttpClient
import io.ktor.client.call.body
-import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
import io.ktor.client.engine.cio.CIO
+import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
import io.ktor.client.request.get
import io.ktor.client.request.headers
import io.ktor.http.HttpStatusCode
@@ -50,6 +52,21 @@ class APIDataHolder {
var token: String = ""
var isOk: Boolean = false
+ private var initialized: Boolean = false
+
+ fun initializeFromPrefs(context: Context, prefs: SharedPreferences) {
+ if (initialized) return;
+
+ serverUrl = prefs.getString(context.getString(R.string.server_url_key), "") ?: ""
+ token = prefs.getString(context.getString(R.string.token_key), "") ?: ""
+
+ val isServerUrlOk = prefs.getBoolean(context.getString(R.string.server_url_okay_key), false)
+ val isTokenOk = prefs.getBoolean(context.getString(R.string.token_okay_key), false)
+ isOk = isServerUrlOk && isTokenOk
+
+ initialized = true
+ }
+
companion object {
private var holder: APIDataHolder = APIDataHolder()
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 68c0546..67cb6ce 100644
--- a/frontend/app/src/main/java/dev/svitan/antifed/AuthActivity.kt
+++ b/frontend/app/src/main/java/dev/svitan/antifed/AuthActivity.kt
@@ -58,10 +58,16 @@ class AuthActivity : ComponentActivity() {
setContent {
AntiFedTheme {
+ val context = LocalContext.current
+ val prefs = context.getSharedPreferences(
+ stringResource(R.string.settings_prefs_key), MODE_PRIVATE
+ )
+ val apiDataHolder = APIDataHolder.getInstance()
+ apiDataHolder.initializeFromPrefs(context, prefs)
+
var serverUrl by remember { mutableStateOf("") }
var token by remember { mutableStateOf("") }
var showToken by remember { mutableStateOf(false) }
- val apiDataHolder = APIDataHolder.getInstance()
var authId by remember { mutableStateOf("") }
var authIndex by remember { mutableIntStateOf(-1) }
@@ -76,19 +82,6 @@ class AuthActivity : ComponentActivity() {
var checkingToken by remember { mutableStateOf(false) }
var isTokenOk by remember { mutableStateOf(false) }
- val context = LocalContext.current
- val prefs = context.getSharedPreferences(
- stringResource(R.string.settings_prefs_key), MODE_PRIVATE
- )
-
- LaunchedEffect(Unit) {
- serverUrl = prefs.getString(getString(R.string.server_url_key), "") ?: ""
- token = prefs.getString(getString(R.string.token_key), "") ?: ""
- authId = prefs.getString(getString(R.string.auth_id_key), "") ?: ""
- isServerUrlOk = prefs.getBoolean(getString(R.string.server_url_okay_key), false)
- isTokenOk = prefs.getBoolean(getString(R.string.token_okay_key), false)
- }
-
fun serverUrlMatches(): Boolean {
val regex = Regex("""https?://[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(:\d+)?""")
return regex.matches(serverUrl)
diff --git a/frontend/app/src/main/java/dev/svitan/antifed/MainActivity.kt b/frontend/app/src/main/java/dev/svitan/antifed/MainActivity.kt
index deb10dd..de1b3d3 100644
--- a/frontend/app/src/main/java/dev/svitan/antifed/MainActivity.kt
+++ b/frontend/app/src/main/java/dev/svitan/antifed/MainActivity.kt
@@ -1,6 +1,5 @@
package dev.svitan.antifed
-import android.app.ActivityOptions
import android.content.Intent
import android.os.Bundle
import androidx.activity.ComponentActivity
@@ -34,6 +33,7 @@ import androidx.compose.material3.rememberDrawerState
import androidx.compose.runtime.rememberCoroutineScope
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 dev.svitan.antifed.ui.theme.AntiFedTheme
@@ -50,6 +50,14 @@ class MainActivity : ComponentActivity() {
val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed)
val scope = rememberCoroutineScope()
+ val context = LocalContext.current
+ val prefs = context.getSharedPreferences(
+ stringResource(R.string.settings_prefs_key), MODE_PRIVATE
+ )
+
+ val apiDataHolder = APIDataHolder.getInstance()
+ apiDataHolder.initializeFromPrefs(context, prefs)
+
ModalNavigationDrawer(
drawerState = drawerState,
drawerContent = {
@@ -67,21 +75,29 @@ class MainActivity : ComponentActivity() {
)
HorizontalDivider()
- Text(
- "Section 1",
- modifier = Modifier.padding(16.dp),
- style = MaterialTheme.typography.titleMedium
- )
- NavigationDrawerItem(
- label = { Text("Item 1") },
- selected = false,
- onClick = { /* Handle click */ }
- )
- NavigationDrawerItem(
- label = { Text("Item 2") },
- selected = false,
- onClick = { /* Handle click */ }
- )
+ if (apiDataHolder.isOk) {
+ Text(
+ stringResource(R.string.actions),
+ modifier = Modifier.padding(16.dp),
+ style = MaterialTheme.typography.titleMedium
+ )
+ NavigationDrawerItem(
+ label = { Text("Item 1") },
+ selected = false,
+ onClick = { /* Handle click */ }
+ )
+ NavigationDrawerItem(
+ label = { Text("Item 2") },
+ selected = false,
+ onClick = { /* Handle click */ }
+ )
+ } else {
+ Text(
+ stringResource(R.string.not_signed_in),
+ modifier = Modifier.padding(16.dp),
+ style = MaterialTheme.typography.titleMedium
+ )
+ }
}
}
},
@@ -116,7 +132,10 @@ class MainActivity : ComponentActivity() {
val intent =
Intent(this@MainActivity, AuthActivity::class.java)
startActivity(intent)
- overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left)
+ overridePendingTransition(
+ R.anim.slide_in_right,
+ R.anim.slide_out_left
+ )
}) {
Icon(
imageVector = Icons.Outlined.AccountCircle,
@@ -142,4 +161,8 @@ class MainActivity : ComponentActivity() {
}
}
}
+
+ override fun onResume() {
+ super.onResume()
+ }
}
diff --git a/frontend/app/src/main/res/values-sk/strings.xml b/frontend/app/src/main/res/values-sk/strings.xml
index dd11a7b..31bc585 100644
--- a/frontend/app/src/main/res/values-sk/strings.xml
+++ b/frontend/app/src/main/res/values-sk/strings.xml
@@ -10,4 +10,6 @@
Biometrika
Ukázať token
Skryť token
+ Akcie
+ Nie ste prihlásený*á
\ 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 8c3464c..d80f556 100644
--- a/frontend/app/src/main/res/values/strings.xml
+++ b/frontend/app/src/main/res/values/strings.xml
@@ -16,6 +16,8 @@
Show token
Hide token
token_okay
+ Actions
+ Not signed in
\ No newline at end of file