Search in sources :

Example 1 with Milestone

use of in.bugzy.data.model.Milestone in project bugzy by cpunq.

the class Repository method getMilestones.

public LiveData<Resource<List<Milestone>>> getMilestones(boolean mustFetch) {
    if (mFetchMilestonesLiveData != null) {
        if (mFetchMilestonesLiveData.getValue().status == Status.LOADING && !mustFetch) {
            // If the content is in loading state and the request doesn't require us to fetch again
            return mMilestonesPublicLiveData;
        }
        mMilestonesPublicLiveData.removeSource(mFetchMilestonesLiveData);
        mFetchMilestonesLiveData = null;
    }
    mFetchMilestonesLiveData = new NetworkBoundResource<List<Milestone>, Response<ListMilestonesData>>(mAppExecutors) {

        @Override
        protected void saveCallResult(@NonNull Response<ListMilestonesData> item) {
            mSsRespository.updateMilestoneSearchSuggestion(item.getData().getMilestones());
            db.beginTransaction();
            try {
                mMiscDao.insertMilestones(item.getData().getMilestones());
                db.setTransactionSuccessful();
            } finally {
                db.endTransaction();
            }
        }

        @Override
        protected boolean shouldFetch(@Nullable List<Milestone> data) {
            if (data == null || data.size() == 0) {
                return true;
            }
            if (mustFetch) {
                return true;
            }
            return false;
        }

        @NonNull
        @Override
        protected LiveData<List<Milestone>> loadFromDb() {
            return mMiscDao.loadMilestones();
        }

        @NonNull
        @Override
        protected LiveData<ApiResponse<Response<ListMilestonesData>>> createCall() {
            return mApiService.getMilestones(new Request("listFixFors"));
        }
    }.asLiveData();
    mMilestonesPublicLiveData.addSource(mFetchMilestonesLiveData, value -> {
        mMilestonesPublicLiveData.setValue(value);
    });
    return mMilestonesPublicLiveData;
}
Also used : ApiResponse(in.bugzy.data.remote.ApiResponse) Response(in.bugzy.data.remote.model.Response) Milestone(in.bugzy.data.model.Milestone) ListMilestonesData(in.bugzy.data.remote.model.ListMilestonesData) NonNull(android.support.annotation.NonNull) FiltersRequest(in.bugzy.data.remote.model.FiltersRequest) LoginRequest(in.bugzy.data.remote.model.LoginRequest) Request(in.bugzy.data.remote.model.Request) ListPeopleRequest(in.bugzy.data.remote.model.ListPeopleRequest) MyDetailsRequest(in.bugzy.data.remote.model.MyDetailsRequest) NetworkBoundResource(in.bugzy.data.remote.NetworkBoundResource) List(java.util.List) ArrayList(java.util.ArrayList) Nullable(android.support.annotation.Nullable) ApiResponse(in.bugzy.data.remote.ApiResponse)

Aggregations

NonNull (android.support.annotation.NonNull)1 Nullable (android.support.annotation.Nullable)1 Milestone (in.bugzy.data.model.Milestone)1 ApiResponse (in.bugzy.data.remote.ApiResponse)1 NetworkBoundResource (in.bugzy.data.remote.NetworkBoundResource)1 FiltersRequest (in.bugzy.data.remote.model.FiltersRequest)1 ListMilestonesData (in.bugzy.data.remote.model.ListMilestonesData)1 ListPeopleRequest (in.bugzy.data.remote.model.ListPeopleRequest)1 LoginRequest (in.bugzy.data.remote.model.LoginRequest)1 MyDetailsRequest (in.bugzy.data.remote.model.MyDetailsRequest)1 Request (in.bugzy.data.remote.model.Request)1 Response (in.bugzy.data.remote.model.Response)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1