From ef5f1def51b3672278f816e3e240d9e0aeed133f Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Sun, 7 Nov 2021 18:37:28 +0300 Subject: [PATCH] Allow reading base url and token --- .../gq/kirmanak/mealie/data/auth/AuthRepo.kt | 4 +++ .../kirmanak/mealie/data/auth/AuthRepoImpl.kt | 12 +++++++- .../kirmanak/mealie/data/auth/AuthStorage.kt | 5 +++- .../mealie/data/auth/AuthStorageImpl.kt | 28 +++++++++++++------ 4 files changed, 39 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthRepo.kt b/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthRepo.kt index 7b5dbe9..ee271c6 100644 --- a/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthRepo.kt +++ b/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthRepo.kt @@ -4,4 +4,8 @@ interface AuthRepo { suspend fun isAuthenticated(): Boolean suspend fun authenticate(username: String, password: String, baseUrl: String): Throwable? + + suspend fun getBaseUrl(): String? + + suspend fun getToken(): String? } \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthRepoImpl.kt b/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthRepoImpl.kt index cc53efe..4ea3c89 100644 --- a/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthRepoImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthRepoImpl.kt @@ -9,7 +9,7 @@ class AuthRepoImpl @Inject constructor( ) : AuthRepo { override suspend fun isAuthenticated(): Boolean { Timber.v("isAuthenticated") - val authenticated = storage.isAuthenticated() + val authenticated = getToken() != null Timber.d("isAuthenticated() response $authenticated") return authenticated } @@ -27,4 +27,14 @@ class AuthRepoImpl @Inject constructor( storage.storeAuthData(token, baseUrl) 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() + } } \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthStorage.kt b/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthStorage.kt index 84da405..a7724ed 100644 --- a/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthStorage.kt +++ b/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthStorage.kt @@ -1,6 +1,9 @@ package gq.kirmanak.mealie.data.auth interface AuthStorage { - suspend fun isAuthenticated(): Boolean suspend fun storeAuthData(token: String, baseUrl: String) + + suspend fun getBaseUrl(): String? + + suspend fun getToken(): String? } \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthStorageImpl.kt b/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthStorageImpl.kt index 5b03982..f59f5b6 100644 --- a/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthStorageImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealie/data/auth/AuthStorageImpl.kt @@ -12,17 +12,11 @@ import javax.inject.Inject private const val TOKEN_KEY = "AUTH_TOKEN" 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 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) { Timber.v("storeAuthData() called with: token = $token, baseUrl = $baseUrl") sharedPreferences.edit() @@ -30,4 +24,22 @@ class AuthStorageImpl @Inject constructor(@ApplicationContext private val contex .putString(BASE_URL_KEY, baseUrl) .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) + } } \ No newline at end of file