Mercury-IM/persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/repository/IChatRepository.java

64 lines
1.9 KiB
Java

package org.mercury_im.messenger.persistence.room.repository;
import org.jxmpp.jid.EntityBareJid;
import org.mercury_im.messenger.persistence.model.AccountModel;
import org.mercury_im.messenger.persistence.model.ContactAttributes;
import org.mercury_im.messenger.persistence.model.ContactModel;
import org.mercury_im.messenger.persistence.model.EntityModel;
import org.mercury_im.messenger.persistence.repository.ChatRepository;
import org.mercury_im.messenger.persistence.room.dao.ChatDao;
import org.mercury_im.messenger.persistence.room.model.RoomChatModel;
import java.util.List;
import javax.inject.Inject;
import io.reactivex.Completable;
import io.reactivex.Maybe;
import io.reactivex.Observable;
public class IChatRepository implements ChatRepository<RoomChatModel> {
private final ChatDao chatDao;
@Inject
public IChatRepository(ChatDao dao) {
this.chatDao = dao;
}
@Override
public Observable<List<RoomChatModel>> getAllChats() {
return chatDao.getAllChats();
}
@Override
public Observable<List<RoomChatModel>> getAllChatsOf(AccountModel accountModel) {
return chatDao.getAllChatsOf(accountModel.getId());
}
@Override
public Maybe<RoomChatModel> getChatWith(EntityModel identity) {
return chatDao.getChatWithIdentity(identity.getId());
}
@Override
public Maybe<RoomChatModel> getChatWith(AccountModel account, EntityBareJid jid) {
return chatDao.getChatWithJid(account.getId(), jid);
}
@Override
public Maybe<RoomChatModel> getChatWith(ContactAttributes contact) {
return chatDao.getChatWithContact(contact.getId());
}
@Override
public Maybe<RoomChatModel> getChatWith(ContactModel contact) {
return getChatWith(contact.getContact());
}
@Override
public Completable closeChat(RoomChatModel chat) {
return chatDao.delete(chat);
}
}