package com.badoo.chateau.core.usecases.conversations;
import android.support.annotation.NonNull;
import com.badoo.barf.data.repo.Repository;
import com.badoo.barf.usecase.UseCase;
import com.badoo.chateau.core.model.Conversation;
import com.badoo.chateau.core.repos.conversations.ConversationDataSource.LoadResult;
import rx.Observable;
import static com.badoo.chateau.core.repos.conversations.ConversationQueries.LoadConversationsQuery;
import static com.badoo.chateau.core.repos.conversations.ConversationQueries.LoadConversationsQuery.*;
/**
* Use case for retrieving all conversations that the current user is involved in.
*/
@UseCase
public class LoadConversations<C extends Conversation> {
private Repository<C> mConversationRepository;
public LoadConversations(Repository<C> conversationRepository) {
mConversationRepository = conversationRepository;
}
public final Observable<LoadResult<C>> all() {
return execute(Type.ALL);
}
public final Observable<LoadResult<C>> newer() {
return execute(Type.NEWER);
}
public final Observable<LoadResult<C>> older() {
return execute(Type.OLDER);
}
protected Observable<LoadResult<C>> execute(@NonNull Type type) {
return mConversationRepository.query(new LoadConversationsQuery<>(type, null, null));
}
}