diff --git a/data/src/main/java/org/mercury_im/messenger/data/repository/XmppPeerRepository.java b/data/src/main/java/org/mercury_im/messenger/data/repository/XmppPeerRepository.java index 994c5a0..c39f7db 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/repository/XmppPeerRepository.java +++ b/data/src/main/java/org/mercury_im/messenger/data/repository/XmppPeerRepository.java @@ -1,6 +1,8 @@ package org.mercury_im.messenger.data.repository; +import org.mercury_im.messenger.data.mapping.AccountMapping; import org.mercury_im.messenger.data.mapping.PeerMapping; +import org.mercury_im.messenger.data.model.AccountModel; import org.mercury_im.messenger.data.model.PeerModel; import org.mercury_im.messenger.entity.contact.SubscriptionDirection; import org.mercury_im.messenger.util.Optional; @@ -127,17 +129,19 @@ public class XmppPeerRepository .orderBy(PeerModel.ADDRESS) .get().observableResult() .map(ResultDelegate::toList) - .map(peerModels -> { - List peerEntities = new ArrayList<>(peerModels.size()); - for (PeerModel model : peerModels) { - peerEntities.add(peerMapping.toEntity(model)); - } - return peerEntities; - }) + .map(this::peerModelsToEntities) .subscribeOn(subscriberScheduler()) .observeOn(observerScheduler()); } + private List peerModelsToEntities(List peerModels) { + List peerEntities = new ArrayList<>(peerModels.size()); + for (PeerModel model : peerModels) { + peerEntities.add(peerMapping.toEntity(model)); + } + return peerEntities; + } + @Override public Observable> observeAllContactsOfAccount(UUID accountId) { return data().select(PeerModel.class) @@ -145,13 +149,7 @@ public class XmppPeerRepository .and(isContact()) .get().observableResult() .map(ResultDelegate::toList) - .map(peerModels -> { - List peerEntities = new ArrayList<>(peerModels.size()); - for (PeerModel model : peerModels) { - peerEntities.add(peerMapping.toEntity(model)); - } - return peerEntities; - }) + .map(this::peerModelsToEntities) .subscribeOn(subscriberScheduler()) .observeOn(observerScheduler()); } @@ -205,6 +203,11 @@ public class XmppPeerRepository @Override public Completable deletePeer(UUID accountId, String address) { - return null; + return data().delete(PeerModel.class) + .where(PeerModel.ACCOUNT_ID.eq(accountId) + .and(PeerModel.ADDRESS.eq(address))) + .get().single().ignoreElement() + .subscribeOn(subscriberScheduler()) + .observeOn(observerScheduler()); } }