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 878c3f6..a9059e1 100644
--- a/frontend/app/src/main/java/dev/svitan/antifed/AuthActivity.kt
+++ b/frontend/app/src/main/java/dev/svitan/antifed/AuthActivity.kt
@@ -4,15 +4,16 @@ import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
-import androidx.compose.foundation.layout.Arrangement
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.padding
-import androidx.compose.material3.ExperimentalMaterial3Api
-import androidx.compose.material3.Scaffold
-import androidx.compose.material3.Text
+import androidx.compose.foundation.layout.*
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.Refresh
+import androidx.compose.material3.*
+import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
import dev.svitan.antifed.ui.theme.AntiFedTheme
@OptIn(ExperimentalMaterial3Api::class)
@@ -22,6 +23,15 @@ class AuthActivity : ComponentActivity() {
enableEdgeToEdge()
setContent {
AntiFedTheme {
+ var serverUrl by remember { mutableStateOf("") }
+ fun isServerUrlOkay(): Boolean {
+ var re = Regex(
+ "(?:http[s]?:\\/\\/.)?(?:www\\.)?[-a-zA-Z0-9@%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b(?:[-a-zA-Z0-9@:%_\\+.~#?&\\/\\/=]*)",
+ RegexOption.DOT_MATCHES_ALL
+ )
+ return re.containsMatchIn(serverUrl)
+ }
+
Scaffold(
modifier = Modifier.fillMaxSize()
) { innerPadding ->
@@ -32,7 +42,16 @@ class AuthActivity : ComponentActivity() {
.padding(innerPadding)
.fillMaxSize()
) {
- Text("Welcome to the auth activity!!")
+ Text(stringResource(R.string.auth), fontSize = 24.sp)
+ Spacer(modifier = Modifier.height(16.dp))
+
+ TextField(
+ value = serverUrl,
+ onValueChange = { serverUrl = it },
+ label = { Text(stringResource(R.string.server_url)) },
+ singleLine = true,
+ isError = !isServerUrlOkay(),
+ )
}
}
}
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 45ce80c..3c72c34 100644
--- a/frontend/app/src/main/java/dev/svitan/antifed/MainActivity.kt
+++ b/frontend/app/src/main/java/dev/svitan/antifed/MainActivity.kt
@@ -5,37 +5,18 @@ import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
-import androidx.compose.foundation.layout.Arrangement
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.Spacer
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.height
-import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.rememberScrollState
-import androidx.compose.foundation.verticalScroll
+import androidx.compose.foundation.layout.*
+import androidx.compose.foundation.*
import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.filled.Info
+import androidx.compose.material.icons.filled.AccountCircle
import androidx.compose.material.icons.filled.Menu
-import androidx.compose.material.icons.filled.Settings
-import androidx.compose.material3.Button
-import androidx.compose.material3.DrawerValue
-import androidx.compose.material3.ExperimentalMaterial3Api
-import androidx.compose.material3.HorizontalDivider
-import androidx.compose.material3.Icon
-import androidx.compose.material3.IconButton
-import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.ModalDrawerSheet
-import androidx.compose.material3.ModalNavigationDrawer
-import androidx.compose.material3.NavigationDrawerItem
-import androidx.compose.material3.Scaffold
-import androidx.compose.material3.Text
-import androidx.compose.material3.TopAppBar
-import androidx.compose.material3.TopAppBarDefaults
-import androidx.compose.material3.rememberDrawerState
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.rememberCoroutineScope
-import androidx.compose.ui.Alignment
-import androidx.compose.ui.Modifier
+import androidx.compose.material.icons.outlined.AccountCircle
+import androidx.compose.material.icons.outlined.Menu
+import androidx.compose.material.icons.sharp.AccountCircle
+import androidx.compose.material.icons.twotone.AccountCircle
+import androidx.compose.material3.*
+import androidx.compose.runtime.*
+import androidx.compose.ui.*
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
@@ -64,7 +45,7 @@ class MainActivity : ComponentActivity() {
) {
Spacer(modifier = Modifier.height(24.dp))
Text(
- "Drawer Title",
+ stringResource(R.string.app_name),
modifier = Modifier.padding(16.dp),
style = MaterialTheme.typography.titleLarge
)
@@ -85,38 +66,6 @@ class MainActivity : ComponentActivity() {
selected = false,
onClick = { /* Handle click */ }
)
-
- HorizontalDivider(modifier = Modifier.padding(vertical = 8.dp))
-
- Text(
- "Section 2",
- modifier = Modifier.padding(16.dp),
- style = MaterialTheme.typography.titleMedium
- )
- NavigationDrawerItem(
- label = { Text("Settings") },
- selected = false,
- icon = {
- Icon(
- Icons.Filled.Settings,
- contentDescription = null
- )
- },
- badge = { Text("20") }, // Placeholder
- onClick = { /* Handle click */ }
- )
- NavigationDrawerItem(
- label = { Text("Help and feedback") },
- selected = false,
- icon = {
- Icon(
- Icons.Filled.Info,
- contentDescription = null
- )
- },
- onClick = { /* Handle click */ },
- )
- Spacer(modifier = Modifier.height(12.dp))
}
}
},
@@ -142,8 +91,23 @@ class MainActivity : ComponentActivity() {
}
}) {
Icon(
- imageVector = Icons.Filled.Menu,
- contentDescription = "Show menu"
+ imageVector = Icons.Outlined.Menu,
+ contentDescription = stringResource(R.string.show_menu)
+ )
+ }
+ },
+ actions = {
+ IconButton(onClick = {
+ context.startActivity(
+ Intent(
+ context,
+ AuthActivity::class.java
+ )
+ )
+ }) {
+ Icon(
+ imageVector = Icons.Outlined.AccountCircle,
+ contentDescription = stringResource(R.string.auth_icon_desc)
)
}
}
@@ -158,13 +122,7 @@ class MainActivity : ComponentActivity() {
.padding(innerPadding)
.fillMaxSize()
) {
- Greeting(name = "Android")
-
- Button(onClick = {
- context.startActivity(Intent(context, AuthActivity::class.java))
- }) {
- Text("Click me!")
- }
+ Text(stringResource(R.string.app_name))
}
}
}
@@ -172,11 +130,3 @@ class MainActivity : ComponentActivity() {
}
}
}
-
-@Composable
-fun Greeting(name: String, modifier: Modifier = Modifier) {
- Text(
- text = stringResource(R.string.greeting, name),
- modifier = modifier
- )
-}
diff --git a/frontend/app/src/main/res/values-sk/strings.xml b/frontend/app/src/main/res/values-sk/strings.xml
index fb93cb0..f473c61 100644
--- a/frontend/app/src/main/res/values-sk/strings.xml
+++ b/frontend/app/src/main/res/values-sk/strings.xml
@@ -1,5 +1,7 @@
- AntiFed
- Ahoj %s, od AntiFed!
+ URL serveru
+ AntiFed autentikácia
+ Ukázať menu
+ Ísť do nastavení autentikácie
\ 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 67bc07f..763065f 100644
--- a/frontend/app/src/main/res/values/strings.xml
+++ b/frontend/app/src/main/res/values/strings.xml
@@ -1,46 +1,9 @@
- AntiFed
- Hello %s, from AntiFed!
+ AntiFed
+ Server URL
+ AntiFed auth
+ Show menu
+ Go to auth settings
- First Fragment
- Second Fragment
- Next
- Previous
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam in scelerisque sem. Mauris
- volutpat, dolor id interdum ullamcorper, risus dolor egestas lectus, sit amet mattis purus
- dui nec risus. Maecenas non sodales nisi, vel dictum dolor. Class aptent taciti sociosqu ad
- litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse blandit eleifend
- diam, vel rutrum tellus vulputate quis. Aliquam eget libero aliquet, imperdiet nisl a,
- ornare ex. Sed rhoncus est ut libero porta lobortis. Fusce in dictum tellus.\n\n
- Suspendisse interdum ornare ante. Aliquam nec cursus lorem. Morbi id magna felis. Vivamus
- egestas, est a condimentum egestas, turpis nisl iaculis ipsum, in dictum tellus dolor sed
- neque. Morbi tellus erat, dapibus ut sem a, iaculis tincidunt dui. Interdum et malesuada
- fames ac ante ipsum primis in faucibus. Curabitur et eros porttitor, ultricies urna vitae,
- molestie nibh. Phasellus at commodo eros, non aliquet metus. Sed maximus nisl nec dolor
- bibendum, vel congue leo egestas.\n\n
- Sed interdum tortor nibh, in sagittis risus mollis quis. Curabitur mi odio, condimentum sit
- amet auctor at, mollis non turpis. Nullam pretium libero vestibulum, finibus orci vel,
- molestie quam. Fusce blandit tincidunt nulla, quis sollicitudin libero facilisis et. Integer
- interdum nunc ligula, et fermentum metus hendrerit id. Vestibulum lectus felis, dictum at
- lacinia sit amet, tristique id quam. Cras eu consequat dui. Suspendisse sodales nunc ligula,
- in lobortis sem porta sed. Integer id ultrices magna, in luctus elit. Sed a pellentesque
- est.\n\n
- Aenean nunc velit, lacinia sed dolor sed, ultrices viverra nulla. Etiam a venenatis nibh.
- Morbi laoreet, tortor sed facilisis varius, nibh orci rhoncus nulla, id elementum leo dui
- non lorem. Nam mollis ipsum quis auctor varius. Quisque elementum eu libero sed commodo. In
- eros nisl, imperdiet vel imperdiet et, scelerisque a mauris. Pellentesque varius ex nunc,
- quis imperdiet eros placerat ac. Duis finibus orci et est auctor tincidunt. Sed non viverra
- ipsum. Nunc quis augue egestas, cursus lorem at, molestie sem. Morbi a consectetur ipsum, a
- placerat diam. Etiam vulputate dignissim convallis. Integer faucibus mauris sit amet finibus
- convallis.\n\n
- Phasellus in aliquet mi. Pellentesque habitant morbi tristique senectus et netus et
- malesuada fames ac turpis egestas. In volutpat arcu ut felis sagittis, in finibus massa
- gravida. Pellentesque id tellus orci. Integer dictum, lorem sed efficitur ullamcorper,
- libero justo consectetur ipsum, in mollis nisl ex sed nisl. Donec maximus ullamcorper
- sodales. Praesent bibendum rhoncus tellus nec feugiat. In a ornare nulla. Donec rhoncus
- libero vel nunc consequat, quis tincidunt nisl eleifend. Cras bibendum enim a justo luctus
- vestibulum. Fusce dictum libero quis erat maximus, vitae volutpat diam dignissim.
-
\ No newline at end of file