🔨 Refactors retrieving prefs for API data
This commit is contained in:
@@ -1,9 +1,11 @@
|
|||||||
package dev.svitan.antifed
|
package dev.svitan.antifed
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.SharedPreferences
|
||||||
import io.ktor.client.HttpClient
|
import io.ktor.client.HttpClient
|
||||||
import io.ktor.client.call.body
|
import io.ktor.client.call.body
|
||||||
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
|
|
||||||
import io.ktor.client.engine.cio.CIO
|
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.get
|
||||||
import io.ktor.client.request.headers
|
import io.ktor.client.request.headers
|
||||||
import io.ktor.http.HttpStatusCode
|
import io.ktor.http.HttpStatusCode
|
||||||
@@ -50,6 +52,21 @@ class APIDataHolder {
|
|||||||
var token: String = ""
|
var token: String = ""
|
||||||
var isOk: Boolean = false
|
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 {
|
companion object {
|
||||||
private var holder: APIDataHolder = APIDataHolder()
|
private var holder: APIDataHolder = APIDataHolder()
|
||||||
|
|
||||||
|
|||||||
@@ -58,10 +58,16 @@ class AuthActivity : ComponentActivity() {
|
|||||||
|
|
||||||
setContent {
|
setContent {
|
||||||
AntiFedTheme {
|
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 serverUrl by remember { mutableStateOf("") }
|
||||||
var token by remember { mutableStateOf("") }
|
var token by remember { mutableStateOf("") }
|
||||||
var showToken by remember { mutableStateOf(false) }
|
var showToken by remember { mutableStateOf(false) }
|
||||||
val apiDataHolder = APIDataHolder.getInstance()
|
|
||||||
|
|
||||||
var authId by remember { mutableStateOf("") }
|
var authId by remember { mutableStateOf("") }
|
||||||
var authIndex by remember { mutableIntStateOf(-1) }
|
var authIndex by remember { mutableIntStateOf(-1) }
|
||||||
@@ -76,19 +82,6 @@ class AuthActivity : ComponentActivity() {
|
|||||||
var checkingToken by remember { mutableStateOf(false) }
|
var checkingToken by remember { mutableStateOf(false) }
|
||||||
var isTokenOk 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 {
|
fun serverUrlMatches(): Boolean {
|
||||||
val regex = Regex("""https?://[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(:\d+)?""")
|
val regex = Regex("""https?://[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(:\d+)?""")
|
||||||
return regex.matches(serverUrl)
|
return regex.matches(serverUrl)
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package dev.svitan.antifed
|
package dev.svitan.antifed
|
||||||
|
|
||||||
import android.app.ActivityOptions
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.activity.ComponentActivity
|
import androidx.activity.ComponentActivity
|
||||||
@@ -34,6 +33,7 @@ import androidx.compose.material3.rememberDrawerState
|
|||||||
import androidx.compose.runtime.rememberCoroutineScope
|
import androidx.compose.runtime.rememberCoroutineScope
|
||||||
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 dev.svitan.antifed.ui.theme.AntiFedTheme
|
import dev.svitan.antifed.ui.theme.AntiFedTheme
|
||||||
@@ -50,6 +50,14 @@ class MainActivity : ComponentActivity() {
|
|||||||
val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed)
|
val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed)
|
||||||
val scope = rememberCoroutineScope()
|
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(
|
ModalNavigationDrawer(
|
||||||
drawerState = drawerState,
|
drawerState = drawerState,
|
||||||
drawerContent = {
|
drawerContent = {
|
||||||
@@ -67,8 +75,9 @@ class MainActivity : ComponentActivity() {
|
|||||||
)
|
)
|
||||||
HorizontalDivider()
|
HorizontalDivider()
|
||||||
|
|
||||||
|
if (apiDataHolder.isOk) {
|
||||||
Text(
|
Text(
|
||||||
"Section 1",
|
stringResource(R.string.actions),
|
||||||
modifier = Modifier.padding(16.dp),
|
modifier = Modifier.padding(16.dp),
|
||||||
style = MaterialTheme.typography.titleMedium
|
style = MaterialTheme.typography.titleMedium
|
||||||
)
|
)
|
||||||
@@ -82,6 +91,13 @@ class MainActivity : ComponentActivity() {
|
|||||||
selected = false,
|
selected = false,
|
||||||
onClick = { /* Handle click */ }
|
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 =
|
val intent =
|
||||||
Intent(this@MainActivity, AuthActivity::class.java)
|
Intent(this@MainActivity, AuthActivity::class.java)
|
||||||
startActivity(intent)
|
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(
|
Icon(
|
||||||
imageVector = Icons.Outlined.AccountCircle,
|
imageVector = Icons.Outlined.AccountCircle,
|
||||||
@@ -142,4 +161,8 @@ class MainActivity : ComponentActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onResume() {
|
||||||
|
super.onResume()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,4 +10,6 @@
|
|||||||
<string name="bio">Biometrika</string>
|
<string name="bio">Biometrika</string>
|
||||||
<string name="show_token">Ukázať token</string>
|
<string name="show_token">Ukázať token</string>
|
||||||
<string name="hide_token">Skryť token</string>
|
<string name="hide_token">Skryť token</string>
|
||||||
|
<string name="actions">Akcie</string>
|
||||||
|
<string name="not_signed_in">Nie ste prihlásený*á</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -16,6 +16,8 @@
|
|||||||
<string name="show_token">Show token</string>
|
<string name="show_token">Show token</string>
|
||||||
<string name="hide_token">Hide token</string>
|
<string name="hide_token">Hide token</string>
|
||||||
<string name="token_okay_key" translatable="false">token_okay</string>
|
<string name="token_okay_key" translatable="false">token_okay</string>
|
||||||
|
<string name="actions">Actions</string>
|
||||||
|
<string name="not_signed_in">Not signed in</string>
|
||||||
<!-- Strings used for fragments for navigation -->
|
<!-- Strings used for fragments for navigation -->
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
Reference in New Issue
Block a user