🔨 Refactors retrieving prefs for API data
This commit is contained in:
@@ -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()
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,8 +75,9 @@ class MainActivity : ComponentActivity() {
|
||||
)
|
||||
HorizontalDivider()
|
||||
|
||||
if (apiDataHolder.isOk) {
|
||||
Text(
|
||||
"Section 1",
|
||||
stringResource(R.string.actions),
|
||||
modifier = Modifier.padding(16.dp),
|
||||
style = MaterialTheme.typography.titleMedium
|
||||
)
|
||||
@@ -82,6 +91,13 @@ class MainActivity : ComponentActivity() {
|
||||
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()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,4 +10,6 @@
|
||||
<string name="bio">Biometrika</string>
|
||||
<string name="show_token">Ukázať 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>
|
||||
@@ -16,6 +16,8 @@
|
||||
<string name="show_token">Show token</string>
|
||||
<string name="hide_token">Hide token</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 -->
|
||||
|
||||
</resources>
|
||||
Reference in New Issue
Block a user