diff --git a/app/src/main/java/com/samuelokello/kazihub/utils/Resource.kt b/app/src/main/java/com/samuelokello/kazihub/utils/Resource.kt index ac82360..a0a8fc2 100644 --- a/app/src/main/java/com/samuelokello/kazihub/utils/Resource.kt +++ b/app/src/main/java/com/samuelokello/kazihub/utils/Resource.kt @@ -3,7 +3,5 @@ package com.samuelokello.kazihub.utils sealed class Resource (val data: T? = null, val message: String? = null) { class Success(data: T) : Resource(data) class Error(message: String, data: T? = null) : Resource(data, message) - class Loading : Resource() { - - } + class Loading : Resource() } \ No newline at end of file diff --git a/app/src/main/java/com/samuelokello/kazihub/utils/TokenManager.kt b/app/src/main/java/com/samuelokello/kazihub/utils/TokenManager.kt index d8cbd13..9e588cc 100644 --- a/app/src/main/java/com/samuelokello/kazihub/utils/TokenManager.kt +++ b/app/src/main/java/com/samuelokello/kazihub/utils/TokenManager.kt @@ -1,5 +1,6 @@ package com.samuelokello.kazihub.utils +import android.util.Log import javax.inject.Inject // TokenManager.kt @@ -10,6 +11,8 @@ class TokenManager @Inject constructor() { fun setToken(access: String, refresh: String) { accessToken = access refreshToken = refresh + Log.d("TokenManager", "Access Token: $accessToken") + Log.d("TokenManager", "Refresh Token: $refreshToken") } fun getAccessToken(): String = accessToken diff --git a/app/src/main/java/com/samuelokello/kazihub/utils/safeApiCall.kt b/app/src/main/java/com/samuelokello/kazihub/utils/safeApiCall.kt index 6b101d9..5689e6e 100644 --- a/app/src/main/java/com/samuelokello/kazihub/utils/safeApiCall.kt +++ b/app/src/main/java/com/samuelokello/kazihub/utils/safeApiCall.kt @@ -2,13 +2,21 @@ package com.samuelokello.kazihub.utils import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext +import retrofit2.HttpException suspend fun safeApiCall(apiCall: suspend () -> T): Resource { - return withContext(Dispatchers.IO) { - try { - Resource.Success(apiCall.invoke()) - } catch (throwable: Throwable) { - Resource.Error(throwable.localizedMessage ?: "An unexpected error occurred") + return withContext(Dispatchers.IO) { + try { + Resource.Success(apiCall.invoke()) + } catch (throwable: HttpException) { + when (throwable.code()) { + 401 -> Resource.Error("Unauthorized. Please log in again.") + 403 -> Resource.Error("Forbidden. You don't have permission to access this resource.") + 404 -> Resource.Error("Resource not found.") + else -> Resource.Error("An error occurred: ${throwable.message()}") } + } catch (throwable: Throwable) { + Resource.Error(throwable.localizedMessage ?: "An unexpected error occurred") } - } \ No newline at end of file + } +} \ No newline at end of file