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; 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.mapping.PeerMapping;
import org.mercury_im.messenger.data.model.AccountModel;
import org.mercury_im.messenger.data.model.PeerModel; import org.mercury_im.messenger.data.model.PeerModel;
import org.mercury_im.messenger.entity.contact.SubscriptionDirection; import org.mercury_im.messenger.entity.contact.SubscriptionDirection;
import org.mercury_im.messenger.util.Optional; import org.mercury_im.messenger.util.Optional;
@ -127,17 +129,19 @@ public class XmppPeerRepository
.orderBy(PeerModel.ADDRESS) .orderBy(PeerModel.ADDRESS)
.get().observableResult() .get().observableResult()
.map(ResultDelegate::toList) .map(ResultDelegate::toList)
.map(peerModels -> { .map(this::peerModelsToEntities)
List<Peer> peerEntities = new ArrayList<>(peerModels.size());
for (PeerModel model : peerModels) {
peerEntities.add(peerMapping.toEntity(model));
}
return peerEntities;
})
.subscribeOn(subscriberScheduler()) .subscribeOn(subscriberScheduler())
.observeOn(observerScheduler()); .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 @Override
public Observable<List<Peer>> observeAllContactsOfAccount(UUID accountId) { public Observable<List<Peer>> observeAllContactsOfAccount(UUID accountId) {
return data().select(PeerModel.class) return data().select(PeerModel.class)
@ -145,13 +149,7 @@ public class XmppPeerRepository
.and(isContact()) .and(isContact())
.get().observableResult() .get().observableResult()
.map(ResultDelegate::toList) .map(ResultDelegate::toList)
.map(peerModels -> { .map(this::peerModelsToEntities)
List<Peer> peerEntities = new ArrayList<>(peerModels.size());
for (PeerModel model : peerModels) {
peerEntities.add(peerMapping.toEntity(model));
}
return peerEntities;
})
.subscribeOn(subscriberScheduler()) .subscribeOn(subscriberScheduler())
.observeOn(observerScheduler()); .observeOn(observerScheduler());
} }
@ -205,6 +203,11 @@ public class XmppPeerRepository
@Override @Override
public Completable deletePeer(UUID accountId, String address) { 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());
} }
} }