diff --git a/app/src/main/res/layout/activity_chat.xml b/app/src/main/res/layout/activity_chat.xml index 9faa439..646af13 100644 --- a/app/src/main/res/layout/activity_chat.xml +++ b/app/src/main/res/layout/activity_chat.xml @@ -34,7 +34,7 @@ app:layout_constraintStart_toStartOf="parent" tools:listitem="@layout/view_message_text_in" /> - upsertMessage(DirectChat chat, Message message) { - return null; + return Single.just(message) + .map(messageMapping::toModel) + .flatMap(data()::upsert) + .map(messageMapping::toEntity); } @Override public Single upsertMessage(GroupChat chat, Message message) { - return null; + return Single.just(message) + .map(messageMapping::toModel) + .flatMap(data()::upsert) + .map(messageMapping::toEntity); } @Override diff --git a/domain/src/main/java/org/mercury_im/messenger/core/Messenger.java b/domain/src/main/java/org/mercury_im/messenger/core/Messenger.java index b9ff192..e54ef55 100644 --- a/domain/src/main/java/org/mercury_im/messenger/core/Messenger.java +++ b/domain/src/main/java/org/mercury_im/messenger/core/Messenger.java @@ -4,6 +4,7 @@ import org.bouncycastle.openpgp.PGPException; import org.jivesoftware.smack.SmackException; import org.jivesoftware.smack.XMPPException; import org.jivesoftware.smack.chat2.ChatManager; +import org.jivesoftware.smack.packet.MessageBuilder; import org.jivesoftware.smack.roster.Roster; import org.jivesoftware.smack.roster.RosterEntry; import org.jivesoftware.smackx.ox.OpenPgpContact; @@ -18,9 +19,13 @@ import org.mercury_im.messenger.core.exception.ContactAlreadyAddedException; import org.mercury_im.messenger.core.xmpp.MercuryConnection; import org.mercury_im.messenger.core.xmpp.MercuryConnectionManager; import org.mercury_im.messenger.entity.contact.Peer; +import org.mercury_im.messenger.entity.message.Message; +import org.mercury_im.messenger.entity.message.MessageDeliveryState; +import org.mercury_im.messenger.entity.message.MessageDirection; import org.pgpainless.key.OpenPgpV4Fingerprint; import java.io.IOException; +import java.util.Date; import java.util.UUID; import java.util.logging.Level; import java.util.logging.Logger; @@ -126,11 +131,6 @@ public class Messenger { MercuryConnection connection = getConnection(contact.getAccount().getId()); OpenPgpManager oxManager = OpenPgpManager.getInstanceFor(connection.getConnection()); OXInstantMessagingManager oximManager = OXInstantMessagingManager.getInstanceFor(connection.getConnection()); - OpenPgpContact oxContact = oxManager.getOpenPgpContact(contact.getJid()); - for (OpenPgpV4Fingerprint fingerprint : oxContact.getUndecidedFingerprints()) { - oxContact.trust(fingerprint); - } - oxContact.getAnnouncedPublicKeys(); oximManager.sendOxMessage(oxManager.getOpenPgpContact(contact.getJid()), body); } diff --git a/domain/src/main/java/org/mercury_im/messenger/core/data/repository/MessageRepository.java b/domain/src/main/java/org/mercury_im/messenger/core/data/repository/MessageRepository.java index 85e473e..6ba7ca8 100644 --- a/domain/src/main/java/org/mercury_im/messenger/core/data/repository/MessageRepository.java +++ b/domain/src/main/java/org/mercury_im/messenger/core/data/repository/MessageRepository.java @@ -5,6 +5,7 @@ import org.mercury_im.messenger.entity.chat.GroupChat; import org.mercury_im.messenger.entity.message.Message; import java.util.List; +import java.util.UUID; import io.reactivex.Completable; import io.reactivex.Observable; diff --git a/domain/src/main/java/org/mercury_im/messenger/core/viewmodel/chat/ChatViewModel.java b/domain/src/main/java/org/mercury_im/messenger/core/viewmodel/chat/ChatViewModel.java index 0eaee8d..fa154b8 100644 --- a/domain/src/main/java/org/mercury_im/messenger/core/viewmodel/chat/ChatViewModel.java +++ b/domain/src/main/java/org/mercury_im/messenger/core/viewmodel/chat/ChatViewModel.java @@ -7,6 +7,7 @@ import org.mercury_im.messenger.core.data.repository.DirectChatRepository; import org.mercury_im.messenger.core.data.repository.MessageRepository; import org.mercury_im.messenger.core.data.repository.PeerRepository; import org.mercury_im.messenger.core.data.repository.Repositories; +import org.mercury_im.messenger.core.store.message.MercuryMessageStore; import org.mercury_im.messenger.core.util.Optional; import org.mercury_im.messenger.core.viewmodel.MercuryViewModel; import org.mercury_im.messenger.entity.chat.DirectChat; @@ -36,7 +37,7 @@ public class ChatViewModel implements MercuryViewModel { @Getter private BehaviorSubject> peer = BehaviorSubject.create(); - Single directChat; + private Single directChat; @Getter private BehaviorSubject chat = BehaviorSubject.create(); diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/contact/Peer.java b/entity/src/main/java/org/mercury_im/messenger/entity/contact/Peer.java index aa509e6..b2ac766 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/contact/Peer.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/contact/Peer.java @@ -32,7 +32,7 @@ public class Peer { if (name != null && !name.trim().isEmpty()) { return name; } - return address.substring(0, address.indexOf('@')); + return getJid().getLocalpart().asUnescapedString(); } public EntityBareJid getJid() {