Allow reading base url and token

This commit is contained in:
Kirill Kamakin
2021-11-07 18:37:28 +03:00
parent d0acd4b5ed
commit ef5f1def51
4 changed files with 39 additions and 10 deletions

View File

@@ -4,4 +4,8 @@ interface AuthRepo {
suspend fun isAuthenticated(): Boolean suspend fun isAuthenticated(): Boolean
suspend fun authenticate(username: String, password: String, baseUrl: String): Throwable? suspend fun authenticate(username: String, password: String, baseUrl: String): Throwable?
suspend fun getBaseUrl(): String?
suspend fun getToken(): String?
} }

View File

@@ -9,7 +9,7 @@ class AuthRepoImpl @Inject constructor(
) : AuthRepo { ) : AuthRepo {
override suspend fun isAuthenticated(): Boolean { override suspend fun isAuthenticated(): Boolean {
Timber.v("isAuthenticated") Timber.v("isAuthenticated")
val authenticated = storage.isAuthenticated() val authenticated = getToken() != null
Timber.d("isAuthenticated() response $authenticated") Timber.d("isAuthenticated() response $authenticated")
return authenticated return authenticated
} }
@@ -27,4 +27,14 @@ class AuthRepoImpl @Inject constructor(
storage.storeAuthData(token, baseUrl) storage.storeAuthData(token, baseUrl)
return null return null
} }
override suspend fun getBaseUrl(): String? {
Timber.v("getBaseUrl() called")
return storage.getBaseUrl()
}
override suspend fun getToken(): String? {
Timber.v("getToken() called")
return storage.getToken()
}
} }

View File

@@ -1,6 +1,9 @@
package gq.kirmanak.mealie.data.auth package gq.kirmanak.mealie.data.auth
interface AuthStorage { interface AuthStorage {
suspend fun isAuthenticated(): Boolean
suspend fun storeAuthData(token: String, baseUrl: String) suspend fun storeAuthData(token: String, baseUrl: String)
suspend fun getBaseUrl(): String?
suspend fun getToken(): String?
} }

View File

@@ -12,17 +12,11 @@ import javax.inject.Inject
private const val TOKEN_KEY = "AUTH_TOKEN" private const val TOKEN_KEY = "AUTH_TOKEN"
private const val BASE_URL_KEY = "BASE_URL" private const val BASE_URL_KEY = "BASE_URL"
class AuthStorageImpl @Inject constructor(@ApplicationContext private val context: Context) : AuthStorage { class AuthStorageImpl @Inject constructor(@ApplicationContext private val context: Context) :
AuthStorage {
private val sharedPreferences: SharedPreferences private val sharedPreferences: SharedPreferences
get() = PreferenceManager.getDefaultSharedPreferences(context) get() = PreferenceManager.getDefaultSharedPreferences(context)
override suspend fun isAuthenticated(): Boolean = withContext(Dispatchers.IO) {
Timber.v("isAuthenticated() called")
val token = sharedPreferences.getString(TOKEN_KEY, null)
Timber.d("isAuthenticated: token is $token")
token != null
}
override suspend fun storeAuthData(token: String, baseUrl: String) { override suspend fun storeAuthData(token: String, baseUrl: String) {
Timber.v("storeAuthData() called with: token = $token, baseUrl = $baseUrl") Timber.v("storeAuthData() called with: token = $token, baseUrl = $baseUrl")
sharedPreferences.edit() sharedPreferences.edit()
@@ -30,4 +24,22 @@ class AuthStorageImpl @Inject constructor(@ApplicationContext private val contex
.putString(BASE_URL_KEY, baseUrl) .putString(BASE_URL_KEY, baseUrl)
.apply() .apply()
} }
override suspend fun getBaseUrl(): String? {
Timber.v("getBaseUrl() called")
val baseUrl = getString(BASE_URL_KEY)
Timber.d("getBaseUrl: base url is $baseUrl")
return baseUrl
}
override suspend fun getToken(): String? {
Timber.v("getToken() called")
val token = getString(TOKEN_KEY)
Timber.d("getToken: token is $token")
return token
}
private suspend fun getString(key: String): String? = withContext(Dispatchers.Default) {
sharedPreferences.getString(key, null)
}
} }