ref: SharedPref to Splitties

This commit is contained in:
2025-11-04 00:05:23 +03:00
parent a0bfba23cf
commit 5897d31a51
2 changed files with 19 additions and 19 deletions
@@ -1,12 +1,10 @@
/* /*
* Created by sweetbread * Created by sweetbread
* Copyright (c) 2025. All rights reserved. * Copyright (c) 2025. All rights reserved.
* Last modified 03.03.2025, 15:32
*/ */
package ru.risdeveau.pixeldragon package ru.risdeveau.pixeldragon
import android.content.Context
import android.util.Log import android.util.Log
import androidx.room.Room import androidx.room.Room
import io.ktor.client.HttpClient import io.ktor.client.HttpClient
@@ -17,6 +15,7 @@ import io.ktor.client.plugins.logging.Logging
import ru.risdeveau.pixeldragon.api.getMe import ru.risdeveau.pixeldragon.api.getMe
import ru.risdeveau.pixeldragon.db.AppDatabase import ru.risdeveau.pixeldragon.db.AppDatabase
import splitties.init.appCtx import splitties.init.appCtx
import splitties.preferences.Preferences
val client = HttpClient { val client = HttpClient {
install(Logging) { install(Logging) {
@@ -31,24 +30,25 @@ val client = HttpClient {
install(HttpCache) install(HttpCache)
} }
val accountData = appCtx.getSharedPreferences("settings", Context.MODE_PRIVATE)
lateinit var homeserver: String lateinit var homeserver: String
lateinit var baseUrl: String lateinit var baseUrl: String
lateinit var token: String lateinit var token: String
object AccountData : Preferences("settings") {
var token by stringPref("token", "")
var homeserver by stringPref("homeserver", "")
}
suspend fun initCheck(): Boolean { suspend fun initCheck(): Boolean {
Log.d("initCheck", "checking...") Log.d("initCheck", "checking...")
if (!accountData.contains("token")) return false token = AccountData.token
if (!accountData.contains("homeserver")) return false homeserver = AccountData.homeserver
if (token.isEmpty() or homeserver.isEmpty()) return false
token = accountData.getString("token", "").toString()
homeserver = accountData.getString("homeserver", "").toString()
baseUrl = "$homeserver/_matrix/client/v3" baseUrl = "$homeserver/_matrix/client/v3"
Log.d("initCheck", "homeserver: $homeserver")
return getMe() != null return getMe() != null
} }
@@ -1,12 +1,10 @@
/* /*
* Created by sweetbread * Created by sweetbread
* Copyright (c) 2025. All rights reserved. * Copyright (c) 2025. All rights reserved.
* Last modified 03.03.2025, 15:43
*/ */
package ru.risdeveau.pixeldragon.api package ru.risdeveau.pixeldragon.api
import android.annotation.SuppressLint
import android.util.Log import android.util.Log
import io.ktor.client.request.bearerAuth import io.ktor.client.request.bearerAuth
import io.ktor.client.request.get import io.ktor.client.request.get
@@ -17,12 +15,14 @@ import io.ktor.http.ContentType
import io.ktor.http.HttpStatusCode import io.ktor.http.HttpStatusCode
import io.ktor.http.contentType import io.ktor.http.contentType
import org.json.JSONObject import org.json.JSONObject
import ru.risdeveau.pixeldragon.accountData import ru.risdeveau.pixeldragon.AccountData
import ru.risdeveau.pixeldragon.baseUrl import ru.risdeveau.pixeldragon.baseUrl
import ru.risdeveau.pixeldragon.client import ru.risdeveau.pixeldragon.client
import ru.risdeveau.pixeldragon.initCheck import ru.risdeveau.pixeldragon.initCheck
import ru.risdeveau.pixeldragon.token import ru.risdeveau.pixeldragon.token
import splitties.experimental.ExperimentalSplittiesApi
import splitties.init.appCtx import splitties.init.appCtx
import splitties.preferences.edit
data class Me (val userId: String, val deviceId: String) data class Me (val userId: String, val deviceId: String)
@@ -40,9 +40,9 @@ suspend fun getMe(): Me? {
return Me(json.getString("user_id"), json.getString("device_id")) return Me(json.getString("user_id"), json.getString("device_id"))
} }
@SuppressLint("ApplySharedPref") @OptIn(ExperimentalSplittiesApi::class)
suspend fun login(server: String, login: String, pass: String): Boolean { suspend fun login(server: String, login: String, pass: String): Boolean {
val homeserver = getHomeserver(server)!! val hs = getHomeserver(server)!!
val pinfo = appCtx.packageManager.getPackageInfo(appCtx.packageName, 0) val pinfo = appCtx.packageManager.getPackageInfo(appCtx.packageName, 0)
@@ -60,7 +60,7 @@ suspend fun login(server: String, login: String, pass: String): Boolean {
json.put("password", pass) json.put("password", pass)
val r = try { val r = try {
client.post("$homeserver/_matrix/client/v3/login") { client.post("$hs/_matrix/client/v3/login") {
setBody(json.toString()) setBody(json.toString())
contentType(ContentType.Application.Json) contentType(ContentType.Application.Json)
} }
@@ -75,10 +75,10 @@ suspend fun login(server: String, login: String, pass: String): Boolean {
} }
val res = JSONObject(r.bodyAsText()) val res = JSONObject(r.bodyAsText())
val editor = accountData.edit() AccountData.edit {
editor.putString("token", res.getString("access_token")) token = res.getString("access_token")
editor.putString("homeserver", homeserver) homeserver = hs
editor.commit() }
return initCheck() return initCheck()
} }