Android Open Source - protohipster Feed View Model






From Project

Back to project page protohipster.

License

The source code is released under:

Apache License

If you think the Android project protohipster listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.flipper83.protohipster.feed.view.viewmodel;
/*from  www  .  j  a  v a2 s  .  c om*/
import com.flipper83.protohipster.feed.domain.boundaries.FeedBoundary;
import com.flipper83.protohipster.feed.domain.boundaries.HipsterBoundary;
import com.flipper83.protohipster.feed.domain.interactors.GetFeed;
import com.flipper83.protohipster.feed.domain.interactors.GetMyLikers;
import com.flipper83.protohipster.feed.domain.interactors.LikeHipster;
import com.flipper83.protohipster.feed.view.viewmodel.mapper.HipsterViewMapper;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import rx.Observable;
import rx.util.functions.Func1;
import rx.util.functions.Func2;

/**
 * A list of view information Hipsters
 */
public class FeedViewModel {

    HipsterViewMapper hipsterViewMapper;
    GetFeed getFeed;
    GetMyLikers getMyLikers;
    LikeHipster likeUser;

    private List<HipsterViewModel> hipsters = new ArrayList<HipsterViewModel>();

    public FeedViewModel(GetFeed getFeed,GetMyLikers getMyLikers,LikeHipster likeUser, HipsterViewMapper mapper) {
        this.getFeed = getFeed;
        this.getMyLikers = getMyLikers;
        this.likeUser = likeUser;
        this.hipsterViewMapper = mapper;
    }

    public void addHipster(HipsterViewModel hipster) {
        hipsters.add(hipster);
    }

    public List<HipsterViewModel> getHipsters() {
        return Collections.unmodifiableList(hipsters);
    }

    public Observable<List<HipsterViewModel>> populateFeed() {
        return Observable.zip(getFeed.getFeed(), getMyLikers.getMyLikers(), new Func2<FeedBoundary, List<String>, List<HipsterViewModel>>() {
            @Override
            public List<HipsterViewModel> call(FeedBoundary feedBoundary, List<String> myLikers) {
                hipsters.clear();

                for (HipsterBoundary hipsterBoundary : feedBoundary.getHipsters()) {

                    HipsterViewModel hipsterViewModel = hipsterViewMapper.mapper(hipsterBoundary);

                    boolean likedByMe = myLikers.contains(hipsterViewModel.getUserId());
                    hipsterViewModel.setLikedByMe(likedByMe);

                    hipsters.add(hipsterViewModel);
                }

                return hipsters;
            }
        });
    }

    public Observable<HipsterViewModel> likeHipster(int position){
        HipsterViewModel hipster = hipsters.get(position);
        hipster.setLikedByMe(true);

        return likeUser.like(hipster.getUserId()).map( new Func1<String, HipsterViewModel>() {
            @Override
            public HipsterViewModel call(String userId) {
                for (HipsterViewModel hipsterViewModel : hipsters) {
                    if (hipsterViewModel.getUserId().equals(userId)){
                        hipsterViewModel.setRating(hipsterViewModel.getRating() + 1);
                        hipsterViewModel.setLikedByMe(true);
                        return hipsterViewModel;
                    }
                }

                return HipsterViewModel.EMPTY;
            }
        });

    }



}




Java Source Code List

com.flipper83.protohipster.daggerUtils.ForApplication.java
com.flipper83.protohipster.feed.datasource.api.Api.java
com.flipper83.protohipster.feed.datasource.api.call.ApiCall.java
com.flipper83.protohipster.feed.datasource.api.call.parse.GetLikesCall.java
com.flipper83.protohipster.feed.datasource.api.call.parse.LikeUserCall.java
com.flipper83.protohipster.feed.datasource.api.call.parse.ParseLikeTableDefinitions.java
com.flipper83.protohipster.feed.datasource.api.call.parse.response.GetLikesResponse.java
com.flipper83.protohipster.feed.datasource.api.call.rest.ApiRestCall.java
com.flipper83.protohipster.feed.datasource.api.call.rest.GetFeedCall.java
com.flipper83.protohipster.feed.datasource.api.call.rest.request.GetFeedRequest.java
com.flipper83.protohipster.feed.datasource.api.call.rest.response.GetFeedResponse.java
com.flipper83.protohipster.feed.datasource.api.callback.ApiResponseCallback.java
com.flipper83.protohipster.feed.datasource.api.model.UserApiEntry.java
com.flipper83.protohipster.feed.datasource.api.model.UserApiName.java
com.flipper83.protohipster.feed.datasource.api.model.UserApi.java
com.flipper83.protohipster.feed.datasource.interfaces.LikeDataSource.java
com.flipper83.protohipster.feed.datasource.interfaces.UserDataSource.java
com.flipper83.protohipster.feed.datasource.interfaces.callbacks.GetCountLikesCallback.java
com.flipper83.protohipster.feed.datasource.interfaces.callbacks.GetMyLikersCallback.java
com.flipper83.protohipster.feed.datasource.interfaces.callbacks.GetUserCallback.java
com.flipper83.protohipster.feed.datasource.interfaces.callbacks.LikeUserCallback.java
com.flipper83.protohipster.feed.datasource.module.DataSourceModule.java
com.flipper83.protohipster.feed.datasource.module.LikeDataSourceParse.java
com.flipper83.protohipster.feed.datasource.module.UserDataSourceImp.java
com.flipper83.protohipster.feed.datasource.module.api.ApiParse.java
com.flipper83.protohipster.feed.datasource.module.api.ApiRest.java
com.flipper83.protohipster.feed.domain.boundaries.FeedBoundary.java
com.flipper83.protohipster.feed.domain.boundaries.HipsterBoundary.java
com.flipper83.protohipster.feed.domain.boundaries.VotesBoundary.java
com.flipper83.protohipster.feed.domain.gateway.Hipster.java
com.flipper83.protohipster.feed.domain.interactors.GetFeed.java
com.flipper83.protohipster.feed.domain.interactors.GetMyLikers.java
com.flipper83.protohipster.feed.domain.interactors.LikeHipster.java
com.flipper83.protohipster.feed.domain.mappers.HipsterMapperManual.java
com.flipper83.protohipster.feed.domain.mappers.HipsterMapper.java
com.flipper83.protohipster.feed.domain.module.DomainModule.java
com.flipper83.protohipster.feed.domain.module.GetFeedImpl.java
com.flipper83.protohipster.feed.domain.module.GetMyLikersImpl.java
com.flipper83.protohipster.feed.domain.module.LikeHipsterImp.java
com.flipper83.protohipster.feed.view.module.FeedViewModule.java
com.flipper83.protohipster.feed.view.provider.FeedProvider.java
com.flipper83.protohipster.feed.view.ui.FeedAdapter.java
com.flipper83.protohipster.feed.view.ui.HipsterListFragment.java
com.flipper83.protohipster.feed.view.ui.ProtoActivity.java
com.flipper83.protohipster.feed.view.viewmodel.FeedViewModel.java
com.flipper83.protohipster.feed.view.viewmodel.HipsterViewModel.java
com.flipper83.protohipster.feed.view.viewmodel.mapper.HipsterViewMapperManual.java
com.flipper83.protohipster.feed.view.viewmodel.mapper.HipsterViewMapper.java
com.flipper83.protohipster.globalutils.cache.Cache.java
com.flipper83.protohipster.globalutils.cache.implementations.MapKeysCache.java
com.flipper83.protohipster.globalutils.interfaces.Logger.java
com.flipper83.protohipster.globalutils.module.AndroidModule.java
com.flipper83.protohipster.globalutils.module.GlobalModule.java
com.flipper83.protohipster.globalutils.module.LoggerProvider.java
com.flipper83.protohipster.globalutils.module.TLog.java
com.flipper83.protohipster.globalutils.rating.RatingCalculatorFiveStars.java
com.flipper83.protohipster.globalutils.rating.RatingCalculator.java
com.flipper83.protohipster.uibase.app.ProtoApplication.java
com.flipper83.protohipster.uibase.base.BaseActivity.java
com.flipper83.protohipster.uibase.base.BaseFragment.java
com.flipper83.protohipster.uibase.transformation.TransformationBuilder.java
com.flipper83.protohipster.uibase.transformation.privates.RoundAvatarTransformation.java
com.flipper83.protohipster.uibase.transformation.privates.TransformationBuilderPicasso.java