// Path: app/src/main/java/io/kaif/mobile/IgnoreAllSubscriber.java
// public class IgnoreAllSubscriber<T> extends Subscriber<T> {
// 
//   @Override
//   public void onCompleted() {
// 
//   }
// 
//   @Override
//   public void onError(Throwable e) {
// 
//   }
// 
//   @Override
//   public void onNext(T o) {
// 
//   }
// }
// 
// Path: app/src/main/java/io/kaif/mobile/model/FeedAsset.java
// public class FeedAsset implements Serializable {
//   enum AssetType {
//     DEBATE_FROM_REPLY
//   }
// 
//   private String assetId;
// 
//   private AssetType assetType;
// 
//   private Date createTime;
// 
//   private boolean acknowledged;
// 
//   @Nullable
//   private Debate debate;
// 
//   public FeedAsset(String assetId,
//       AssetType assetType,
//       Date createTime,
//       boolean acknowledged,
//       @Nullable Debate debate) {
//     this.assetId = assetId;
//     this.assetType = assetType;
//     this.createTime = createTime;
//     this.acknowledged = acknowledged;
//     this.debate = debate;
//   }
// 
//   public String getAssetId() {
//     return assetId;
//   }
// 
//   public AssetType getAssetType() {
//     return assetType;
//   }
// 
//   public Date getCreateTime() {
//     return createTime;
//   }
// 
//   public boolean isAcknowledged() {
//     return acknowledged;
//   }
// 
//   @Nullable
//   public Debate getDebate() {
//     return debate;
//   }
// 
//   @Override
//   public boolean equals(Object o) {
//     if (this == o) {
//       return true;
//     }
//     if (o == null || getClass() != o.getClass()) {
//       return false;
//     }
// 
//     FeedAsset feedAsset = (FeedAsset) o;
// 
//     return assetId.equals(feedAsset.assetId);
// 
//   }
// 
//   @Override
//   public int hashCode() {
//     return assetId.hashCode();
//   }
// }
// 
// Path: app/src/main/java/io/kaif/mobile/service/FeedService.java
// public interface FeedService {
// 
//   class AcknowledgeEntry {
//     String assetId;
// 
//     public AcknowledgeEntry(String assetId) {
//       this.assetId = assetId;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//       if (this == o) {
//         return true;
//       }
//       if (o == null || getClass() != o.getClass()) {
//         return false;
//       }
// 
//       AcknowledgeEntry that = (AcknowledgeEntry) o;
// 
//       return assetId.equals(that.assetId);
// 
//     }
// 
//     @Override
//     public int hashCode() {
//       return assetId.hashCode();
//     }
//   }
// 
//   @POST("/v1/feed/acknowledge")
//   Observable<Void> acknowledge(@Body AcknowledgeEntry acknowledgeEntry);
// 
//   @GET("/v1/feed/news")
//   Observable<List<FeedAsset>> news(@Query("start-asset-id") String startAssetId);
// 
//   @GET("/v1/feed/news-unread-count")
//   Observable<Integer> newsUnreadCount();
// 
// }
// 
// Path: app/src/main/java/io/kaif/mobile/view/viewmodel/FeedAssetViewModel.java
// public class FeedAssetViewModel {
// 
//   private DebateViewModel debateViewModel;
//   private FeedAsset feedAsset;
//   private boolean read;
// 
//   public FeedAssetViewModel(FeedAsset feedAsset, boolean read) {
//     this.feedAsset = feedAsset;
//     this.read = read;
//     //doesn't support inline vote yet, provide fake vote state.
//     this.debateViewModel = new DebateViewModel(feedAsset.getDebate(),
//         Vote.abstain(feedAsset.getDebate().getDebateId()));
//   }
// 
//   public DebateViewModel getDebateViewModel() {
//     return debateViewModel;
//   }
// 
//   public String getAssetId() {
//     return feedAsset.getAssetId();
//   }
// 
//   public boolean isRead() {
//     return read;
//   }
// }


import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import io.kaif.mobile.IgnoreAllSubscriber;
import io.kaif.mobile.model.FeedAsset;
import io.kaif.mobile.service.FeedService;
import io.kaif.mobile.view.viewmodel.FeedAssetViewModel;
import rx.Observable;
package io.kaif.mobile.view.daemon;




@Singleton
public class FeedDaemon {

  private final FeedService feedService;

  @Inject
  FeedDaemon(FeedService feedService) {
    this.feedService = feedService;
  }

  public Observable<Integer> newsUnreadCount() {
    return feedService.newsUnreadCount();
  }

  public Observable<List<FeedAssetViewModel>> listAndAcknowledgeIfRequired() {
    return feedService.news(null).map(feedAssets -> {
// Path: app/src/main/java/io/kaif/mobile/IgnoreAllSubscriber.java
// public class IgnoreAllSubscriber<T> extends Subscriber<T> {
// 
//   @Override
//   public void onCompleted() {
// 
//   }
// 
//   @Override
//   public void onError(Throwable e) {
// 
//   }
// 
//   @Override
//   public void onNext(T o) {
// 
//   }
// }
// 
// Path: app/src/main/java/io/kaif/mobile/model/FeedAsset.java
// public class FeedAsset implements Serializable {
//   enum AssetType {
//     DEBATE_FROM_REPLY
//   }
// 
//   private String assetId;
// 
//   private AssetType assetType;
// 
//   private Date createTime;
// 
//   private boolean acknowledged;
// 
//   @Nullable
//   private Debate debate;
// 
//   public FeedAsset(String assetId,
//       AssetType assetType,
//       Date createTime,
//       boolean acknowledged,
//       @Nullable Debate debate) {
//     this.assetId = assetId;
//     this.assetType = assetType;
//     this.createTime = createTime;
//     this.acknowledged = acknowledged;
//     this.debate = debate;
//   }
// 
//   public String getAssetId() {
//     return assetId;
//   }
// 
//   public AssetType getAssetType() {
//     return assetType;
//   }
// 
//   public Date getCreateTime() {
//     return createTime;
//   }
// 
//   public boolean isAcknowledged() {
//     return acknowledged;
//   }
// 
//   @Nullable
//   public Debate getDebate() {
//     return debate;
//   }
// 
//   @Override
//   public boolean equals(Object o) {
//     if (this == o) {
//       return true;
//     }
//     if (o == null || getClass() != o.getClass()) {
//       return false;
//     }
// 
//     FeedAsset feedAsset = (FeedAsset) o;
// 
//     return assetId.equals(feedAsset.assetId);
// 
//   }
// 
//   @Override
//   public int hashCode() {
//     return assetId.hashCode();
//   }
// }
// 
// Path: app/src/main/java/io/kaif/mobile/service/FeedService.java
// public interface FeedService {
// 
//   class AcknowledgeEntry {
//     String assetId;
// 
//     public AcknowledgeEntry(String assetId) {
//       this.assetId = assetId;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//       if (this == o) {
//         return true;
//       }
//       if (o == null || getClass() != o.getClass()) {
//         return false;
//       }
// 
//       AcknowledgeEntry that = (AcknowledgeEntry) o;
// 
//       return assetId.equals(that.assetId);
// 
//     }
// 
//     @Override
//     public int hashCode() {
//       return assetId.hashCode();
//     }
//   }
// 
//   @POST("/v1/feed/acknowledge")
//   Observable<Void> acknowledge(@Body AcknowledgeEntry acknowledgeEntry);
// 
//   @GET("/v1/feed/news")
//   Observable<List<FeedAsset>> news(@Query("start-asset-id") String startAssetId);
// 
//   @GET("/v1/feed/news-unread-count")
//   Observable<Integer> newsUnreadCount();
// 
// }
// 
// Path: app/src/main/java/io/kaif/mobile/view/viewmodel/FeedAssetViewModel.java
// public class FeedAssetViewModel {
// 
//   private DebateViewModel debateViewModel;
//   private FeedAsset feedAsset;
//   private boolean read;
// 
//   public FeedAssetViewModel(FeedAsset feedAsset, boolean read) {
//     this.feedAsset = feedAsset;
//     this.read = read;
//     //doesn't support inline vote yet, provide fake vote state.
//     this.debateViewModel = new DebateViewModel(feedAsset.getDebate(),
//         Vote.abstain(feedAsset.getDebate().getDebateId()));
//   }
// 
//   public DebateViewModel getDebateViewModel() {
//     return debateViewModel;
//   }
// 
//   public String getAssetId() {
//     return feedAsset.getAssetId();
//   }
// 
//   public boolean isRead() {
//     return read;
//   }
// }


// Path: app/src/main/java/io/kaif/mobile/view/daemon/FeedDaemon.java
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import io.kaif.mobile.IgnoreAllSubscriber;
import io.kaif.mobile.model.FeedAsset;
import io.kaif.mobile.service.FeedService;
import io.kaif.mobile.view.viewmodel.FeedAssetViewModel;
import rx.Observable;

package io.kaif.mobile.view.daemon;




@Singleton
public class FeedDaemon {

  private final FeedService feedService;

  @Inject
  FeedDaemon(FeedService feedService) {
    this.feedService = feedService;
  }

  public Observable<Integer> newsUnreadCount() {
    return feedService.newsUnreadCount();
  }

  public Observable<List<FeedAssetViewModel>> listAndAcknowledgeIfRequired() {
    return feedService.news(null).map(feedAssets -> {
      if (!feedAssets.isEmpty()) {