Mercury-IM/transport_xmpp/src/main/java/org/mercury_im/xmpp/connection/message/XmppDirectMessageCenter.java
2019-11-16 09:58:00 +01:00

51 lines
1.6 KiB
Java

package org.mercury_im.xmpp.connection.message;
import org.jivesoftware.smack.chat2.Chat;
import org.jivesoftware.smack.chat2.ChatManager;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smackx.sid.element.OriginIdElement;
import org.mercury_im.core.message.MessageCenter;
import org.mercury_im.messenger.xmpp.entity.XmppAccount;
import org.mercury_im.messenger.xmpp.entity.XmppAddress;
import org.mercury_im.messenger.xmpp.entity.chat.XmppDirectChat;
import org.mercury_im.messenger.xmpp.entity.message.XmppMessage;
import org.mercury_im.messenger.xmpp.entity.message.XmppMessageMetadata;
import io.reactivex.Completable;
public class XmppDirectMessageCenter
implements MessageCenter<
XmppMessage.DirectMessage,
XmppDirectChat,
XmppAddress.XmppUserAddress,
XmppMessageMetadata,
XmppAccount> {
@Override
public Completable sendMessage(XmppMessage.DirectMessage message, XmppDirectChat chat) {
ChatManager chatManager = getChatManager(chat);
Message smackMessage = new Message();
smackMessage.setFrom(chat.getAccount().getAddress().getJid());
smackMessage.setTo(chat.getInterlocutor().getAddress().getJid());
smackMessage.setType(Message.Type.chat);
OriginIdElement.addOriginId(smackMessage);
Chat smackChat = chatManager.chatWith(chat.getInterlocutor().getAddress().getJid());
return Completable.fromAction(
() -> smackChat.send(smackMessage));
}
@Override
public void addIncomingMessageListener() {
}
protected ChatManager getChatManager(XmppDirectChat chat) {
return null;
}
}