Further refactoring of XmppPeerRepo

This commit is contained in:
Paul Schaub 2019-12-22 02:46:52 +01:00
parent 7606a3c351
commit 266bc1f55a
Signed by: vanitasvitae
GPG key ID: 62BEE9264BF17311

View file

@ -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<Peer> 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<Peer> peerModelsToEntities(List<PeerModel> peerModels) {
List<Peer> peerEntities = new ArrayList<>(peerModels.size());
for (PeerModel model : peerModels) {
peerEntities.add(peerMapping.toEntity(model));
}
return peerEntities;
}
@Override
public Observable<List<Peer>> 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<Peer> 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());
}
}