Files
gotify-android-client/app/src/main/kotlin/com/github/gotify/Settings.kt
2025-06-30 17:33:19 +02:00

82 lines
2.9 KiB
Kotlin

package com.github.gotify
import android.content.Context
import android.content.SharedPreferences
import androidx.core.content.edit
import com.github.gotify.client.model.User
internal class Settings(context: Context) {
private val sharedPreferences: SharedPreferences
val filesDir: String
var url: String
get() = sharedPreferences.getString("url", "")!!
set(value) = sharedPreferences.edit { putString("url", value) }
var token: String?
get() = sharedPreferences.getString("token", null)
set(value) = sharedPreferences.edit { putString("token", value) }
var user: User? = null
get() {
val username = sharedPreferences.getString("username", null)
val admin = sharedPreferences.getBoolean("admin", false)
return if (username != null) {
User().name(username).admin(admin)
} else {
User().name("UNKNOWN").admin(false)
}
}
private set
var serverVersion: String
get() = sharedPreferences.getString("version", "UNKNOWN")!!
set(value) = sharedPreferences.edit { putString("version", value) }
var legacyCert: String?
get() = sharedPreferences.getString("cert", null)
set(value) = sharedPreferences.edit(commit = true) { putString("cert", value) }.toUnit()
var caCertPath: String?
get() = sharedPreferences.getString("caCertPath", null)
set(value) = sharedPreferences
.edit(commit = true) { putString("caCertPath", value) }
.toUnit()
var validateSSL: Boolean
get() = sharedPreferences.getBoolean("validateSSL", true)
set(value) = sharedPreferences.edit { putBoolean("validateSSL", value) }
var clientCertPath: String?
get() = sharedPreferences.getString("clientCertPath", null)
set(value) = sharedPreferences.edit { putString("clientCertPath", value) }
var clientCertPassword: String?
get() = sharedPreferences.getString("clientCertPass", null)
set(value) = sharedPreferences.edit { putString("clientCertPass", value) }
init {
sharedPreferences = context.getSharedPreferences("gotify", Context.MODE_PRIVATE)
filesDir = context.filesDir.absolutePath
}
fun tokenExists(): Boolean = !token.isNullOrEmpty()
fun clear() {
url = ""
token = null
validateSSL = true
legacyCert = null
caCertPath = null
clientCertPath = null
clientCertPassword = null
}
fun setUser(name: String?, admin: Boolean) {
sharedPreferences.edit { putString("username", name).putBoolean("admin", admin) }
}
fun sslSettings(): SSLSettings {
return SSLSettings(
validateSSL,
caCertPath,
clientCertPath,
clientCertPassword
)
}
@Suppress("UnusedReceiverParameter")
private fun Any?.toUnit() = Unit
}