private val _getListTrustedDeviceState: MutableStateFlow =
MutableStateFlow(BaseUIState.Idle)
val getListTrustedDeviceState: StateFlow =
_getListTrustedDeviceState.asStateFlow()
private val _getTrustedDeviceByDeviceKey: MutableStateFlow =
MutableStateFlow(BaseUIState.Idle)
val getTrustedDeviceByDeviceKey: StateFlow =
_getTrustedDeviceByDeviceKey.asStateFlow()
fun getListTrustedDevice() {
viewModelScope.launch {
_getListTrustedDeviceState.value = BaseUIState.Loading
val accessToken = SharedPreferencesUtils().getDataFromSharedPreferences(
context, SharedPrefKey.USER_SECTION
)?.accessToken
if (accessToken.isNullOrBlank()) {
_getListTrustedDeviceState.value = BaseUIState.Error("Access token is missing")
return@launch
}
userRepository.getListTrustedDevices(accessToken).onSuccess { devices ->
_getListTrustedDeviceState.value = BaseUIState.Success(devices)
LogUtil.d("getListTrustedDevice: ${devices.toJson()}")
}.onFailure { error ->
_getListTrustedDeviceState.value = BaseUIState.Error(error.message ?: "An unknown error occurred")
}
}
}
fun getTrustedDeviceByDeviceKey(){
viewModelScope.launch {
_getTrustedDeviceByDeviceKey.value = BaseUIState.Loading
val accessToken = SharedPreferencesUtils().getDataFromSharedPreferences(
context, SharedPrefKey.USER_SECTION
)?.accessToken
val deviceKey = extractDataFromToken(accessToken.toString(), "device_key")
LogUtil.d("deviceKey: $deviceKey")
if (accessToken.isNullOrBlank()) {
_getTrustedDeviceByDeviceKey.value = BaseUIState.Error("Access token is missing")
return@launch
}
userRepository.getDevicesByKey(accessToken,deviceKey.toString()).onSuccess { devices ->
_getTrustedDeviceByDeviceKey.value = BaseUIState.Success(devices)
LogUtil.d("getTrustedDeviceByDeviceKey: ${devices.toJson()}")
}.onFailure { error ->
_getTrustedDeviceByDeviceKey.value = BaseUIState.Error(error.message ?: "An unknown error occurred")
}
}
}
private fun extractDataFromToken(token: String, key: String): String? {
try {
val payloadPart = token.split(".")[1]
val decodedPayload = String(Base64.decode(payloadPart, Base64.URL_SAFE))
val payloadJson = JSONObject(decodedPayload)
return payloadJson.optString(key)
} catch (e: Exception) {
e.printStackTrace()
}
return null
}
Я работаю над приложением для Android и использую Kotlin с шаблоном репозитория. У меня есть две функции, getListTrustedDevice и getTrustedDeviceByDeviceKey, которые вызывают API для получения списка доверенных устройств и сведений об устройстве по ключу устройства.
Проблема в том, что при вызове этих методов я получаю пустое сообщение. ответы или данные об устройстве отсутствуют, хотя я ожидаю, что устройства будут присутствовать. Мне интересно, может ли проблема быть связана с ключом устройства или какой-либо другой частью запроса.
private fun extractDataFromToken(token: String, key: String): String? { try { val payloadPart = token.split(".")[1] val decodedPayload = String(Base64.decode(payloadPart, Base64.URL_SAFE)) val payloadJson = JSONObject(decodedPayload) return payloadJson.optString(key) } catch (e: Exception) { e.printStackTrace() } return null } [/code] Я работаю над приложением для Android и использую Kotlin с шаблоном репозитория. У меня есть две функции, getListTrustedDevice и getTrustedDeviceByDeviceKey, которые вызывают API для получения списка доверенных устройств и сведений об устройстве по ключу устройства. Проблема в том, что при вызове этих методов я получаю пустое сообщение. ответы или данные об устройстве отсутствуют, хотя я ожидаю, что устройства будут присутствовать. Мне интересно, может ли проблема быть связана с ключом устройства или какой-либо другой частью запроса.