Мне трудно понять, как я могу подключить свои Repository
и ViewModel
данные в реальном времени в случае запроса @GET
и наблюдать их во фрагменте.
Я не понимаюУ меня нет этой проблемы, когда тип запроса @POST
, потому что я могу использовать Transformation.switchMap
в теле, и всякий раз, когда тело меняет тело, вызывается функция репозитория, которая выдает значение в живые данные ответа, что-то вроде этого
val matchSetsDetail: LiveData<Resource<MatchDetailBean>> = Transformations.switchMap(matchIdLiveData) { matchId ->
val body = MatchSetRequest(matchId)
repository.getMatchSet(body)
}
, но в случае запроса @GET
у меня есть несколько параметров запроса, которые мой View предоставляет
У меня есть этот вызов модифицированного API в классе репозитория, и код выглядит следующим образом
class Repository {
fun checkInCheckOutUser(apiKey: String, userId: Int, status: String, latitude: Double, longitude: Double, checkedOn: Long): LiveData<Resource<BaseResponse>> = liveData {
emit(Resource.Loading())
try {
val response: Response<BaseResponse> = ApiClient.coachApi.checkInCheckOutUser(apiKey, userId, status, latitude, longitude, checkedOn)
if (response.isSuccessful && response.body() != null) {
if (response.body()!!.isValidKey && response.body()!!.success) {
emit(Resource.Success(response.body()!!))
} else {
emit(Resource.Failure(response.body()!!.message))
}
} else {
emit(Resource.Failure())
}
} catch (e: Exception) {
emit(Resource.Failure())
}
}
}
и ViewModel
class CheckInMapViewModel : ViewModel() {
val checkInResponse: LiveData<Resource<BaseResponse>> = MutableLiveData()
fun checkInCheckOut(apiKey: String, userId: Int, status: String, latitude: Double, longitude: Double, checkedOn: Long): LiveData<Resource<BaseResponse>> {
return repository.checkInCheckOutUser(apiKey,userId,status,latitude,longitude,checkedOn)
}
}
Основная проблема в том, что я хочу наблюдать checkInResponse
точно так же, как я наблюдаю в случае запроса @POST
, но не знаю, как передать наблюдение LiveData хранилища, как ясделал с моим запросом выше, используя Transformations.switchMap
. Может ли кто-нибудь помочь мне с этим делом?
Редактировать - Вот мой класс обслуживания, как меня спросили
interface CoachApi {
@POST(Urls.CHECK_IN_CHECK_OUT_URL)
suspend fun checkInCheckOutUser(
@Query("apiKey") apiKey: String,
@Query("userId") userId: Int,
@Query("status") status: String,
@Query("latitude") latitude: Double,
@Query("longitude") longitude: Double,
@Query("checkedOn") checkedOn: Long
): Response<SelfCheckResponse>
@POST(Urls.SELF_CHECK_STATUS)
suspend fun getCheckInStatus(
@Query("apiKey") apiKey: String,
@Query("userId") userId: Int
): Response<SelfCheckStatusResponse>
}