Giải pháp chuyển đổi số trọn gói cho doanh nghiệp Việt
Tên file: CarViewModel.java
Nơi lưu file: java/com/vantinviet/adayroionline/viewmodel/car (chú ý bạn cần tạo các sub package nhé)
Nội dung file:
package com.vantinviet.adayroionline.viewmodel.car;
import com.vantinviet.adayroionline.ApiResponse.ApiResponseGetCar;
import com.vantinviet.adayroionline.ApiResponse.ApiResponseUser;
import com.vantinviet.adayroionline.Config;
import com.vantinviet.adayroionline.repository.car.CarRepository;
import com.vantinviet.adayroionline.utils.AbsentLiveData;
import com.vantinviet.adayroionline.utils.Utils;
import com.vantinviet.adayroionline.viewmodel.common.PSViewModel;
import com.vantinviet.adayroionline.viewmodel.order.OrderProductListViewModel;
import com.vantinviet.adayroionline.viewobject.Car;
import com.vantinviet.adayroionline.viewobject.User;
import com.vantinviet.adayroionline.viewobject.common.Resource;
import java.util.List;
import javax.inject.Inject;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Transformations;
public class CarViewModel extends PSViewModel {
private final LiveData<Resource<List<Car>>> carsData;
private MutableLiveData<TmpDataHolder> carsObj = new MutableLiveData<>();
private MutableLiveData<Car> updateCarObj = new MutableLiveData<>();
private LiveData<Resource<ApiResponseGetCar>> updateCarData;
private final LiveData<Resource<Boolean>> deletedCar;
private final LiveData<Resource<Boolean>> nextPageCarsData;
private MutableLiveData<TmpDataHolder> nextPageCarsObj = new MutableLiveData<>();
private final LiveData<Resource<Car>> carByIdData;
private MutableLiveData<CarByIdTmpDataHolder> carByIdObj = new MutableLiveData<>();
private MutableLiveData<CarViewModel.TmpDeleteCarDataHolder> tmpDeleteCarDataHolder = new MutableLiveData<>();
public Car car;
@Inject
CarViewModel(CarRepository carRepository) {
carsData = Transformations.switchMap(carsObj, obj -> {
if (obj == null) {
return AbsentLiveData.create();
}
return carRepository.getAllCar(obj.limit, obj.offset);
});
nextPageCarsData = Transformations.switchMap(nextPageCarsObj, obj -> {
if (obj == null) {
return AbsentLiveData.create();
}
return carRepository.getNextPageCarList( obj.limit, obj.offset);
});
carByIdData = Transformations.switchMap(carByIdObj, obj -> {
if (obj == null) {
return AbsentLiveData.create();
}
return carRepository.getCarById(obj.id);
});
// Update User
updateCarData = Transformations.switchMap(updateCarObj, obj -> {
if (obj == null) {
return AbsentLiveData.create();
}
Utils.psLog("UserViewModel : updateUserData");
return carRepository.updateCar(updateCarObj.getValue());
});
deletedCar = Transformations.switchMap(tmpDeleteCarDataHolder, tmpDeleteOrderDataHolder -> {
if (tmpDeleteOrderDataHolder == null) {
return AbsentLiveData.create();
}
return carRepository.getCarDelete(tmpDeleteCarDataHolder.getValue().carId);
});
}
public void setCarsObj(String limit, String offset) {
TmpDataHolder tmpDataHolder = new TmpDataHolder(limit, offset);
this.carsObj.setValue(tmpDataHolder);
}
public LiveData<Resource<List<Car>>> getCarsData() {
return carsData;
}
public void setNextPageCarsObj(String limit, String offset) {
TmpDataHolder tmpDataHolder = new TmpDataHolder(limit, offset);
this.nextPageCarsObj.setValue(tmpDataHolder);
}
public LiveData<Resource<Boolean>> getNextPageCarsData() {
return nextPageCarsData;
}
public void setCarByIdObj(String id) {
CarByIdTmpDataHolder carByIdTmpDataHolder = new CarByIdTmpDataHolder(id);
this.carByIdObj.setValue(carByIdTmpDataHolder);
}
public LiveData<Resource<Car>> getCarByIdData() {
return carByIdData;
}
public void setUpdateCarObj(Car car) {
updateCarObj.setValue(car);
}
public LiveData<Resource<ApiResponseGetCar>> getUpdateCarData() {
return updateCarData;
}
public LiveData<Resource<Boolean>> getDeletedCar() {
return deletedCar;
}
public void setDeleteCarObj(String carId) {
if (!isLoading) {
CarViewModel.TmpDeleteCarDataHolder tmpDeleteCarDataHolder = new CarViewModel.TmpDeleteCarDataHolder();
tmpDeleteCarDataHolder.carId = carId;
this.tmpDeleteCarDataHolder.setValue(tmpDeleteCarDataHolder);
// start loading
setLoadingState(true);
}
}
class TmpDataHolder {
String limit, offset;
public TmpDataHolder(String limit, String offset) {
this.limit = limit;
this.offset = offset;
}
}
class CarByIdTmpDataHolder {
String id;
private CarByIdTmpDataHolder(String id) {
this.id = id;
}
}
class TmpDeleteCarDataHolder {
public String carId = "";
public Boolean isConnected = false;
}
}
Chưa có câu hỏi nào cho bài này.