package org.mercury_im.messenger.core.viewmodel.chat; import org.mercury_im.messenger.core.Messenger; import org.mercury_im.messenger.core.SchedulersFacade; import org.mercury_im.messenger.core.data.repository.Repositories; import org.mercury_im.messenger.core.viewmodel.MercuryViewModel; import org.mercury_im.messenger.entity.chat.DirectChat; import org.mercury_im.messenger.entity.contact.Peer; import org.mercury_im.messenger.entity.message.Message; import java.util.List; import io.reactivex.Observable; import lombok.Getter; public class ChatViewModel implements MercuryViewModel { private final Messenger messenger; private final Repositories repositories; private final SchedulersFacade schedulers; @Getter private Observable peer; @Getter private Observable> messages; @Getter private Observable contactDisplayName; public ChatViewModel(Messenger messenger, Repositories repositories, SchedulersFacade schedulers, DirectChat chat) { this.messenger = messenger; this.repositories = repositories; this.schedulers = schedulers; //peer = repositories.getPeerRepository().observePeer(chat.getPeer()); messages = repositories.getMessageRepository().observeMessages(chat); contactDisplayName = repositories.getPeerRepository().observePeer(chat.getPeer()) .map(optional -> optional.isPresent() ? optional.getItem().getDisplayName() : "DELETED"); } public void sendMessage(String body) { //addDisposable(messenger.sendMessage()); } }