Fix retreival method of GroupChatRepository to receive account as argument
This commit is contained in:
parent
8d7dd5687e
commit
c5918efc89
|
@ -3,6 +3,7 @@ package org.mercury_im.messenger.data.repository;
|
||||||
import org.mercury_im.messenger.data.mapping.GroupChatMapping;
|
import org.mercury_im.messenger.data.mapping.GroupChatMapping;
|
||||||
import org.mercury_im.messenger.data.model.GroupChatModel;
|
import org.mercury_im.messenger.data.model.GroupChatModel;
|
||||||
import org.mercury_im.messenger.data.util.Optional;
|
import org.mercury_im.messenger.data.util.Optional;
|
||||||
|
import org.mercury_im.messenger.entity.Account;
|
||||||
import org.mercury_im.messenger.entity.chat.GroupChat;
|
import org.mercury_im.messenger.entity.chat.GroupChat;
|
||||||
import org.mercury_im.messenger.entity.chat.IGroupChat;
|
import org.mercury_im.messenger.entity.chat.IGroupChat;
|
||||||
import org.mercury_im.messenger.entity.message.Message;
|
import org.mercury_im.messenger.entity.message.Message;
|
||||||
|
@ -68,9 +69,23 @@ public class XmppGroupChatRepository
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Observable<Optional<GroupChat>> observeGroupChatByRoomAddress(String roomAddress) {
|
public Single<GroupChat> getOrCreateGroupChat(Account account, String roomAddress) {
|
||||||
|
return getGroupChatByRoomAddress(account, roomAddress)
|
||||||
|
.switchIfEmpty(insertGroupChat(new IGroupChat(){
|
||||||
|
{
|
||||||
|
setAccount(account);
|
||||||
|
setRoomAddress(roomAddress);
|
||||||
|
}
|
||||||
|
}))
|
||||||
|
.subscribeOn(subscriberScheduler())
|
||||||
|
.observeOn(observerScheduler());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Observable<Optional<GroupChat>> observeGroupChatByRoomAddress(long accountId, String roomAddress) {
|
||||||
return data().select(GroupChatModel.class)
|
return data().select(GroupChatModel.class)
|
||||||
.where(GroupChatModel.ADDRESS.eq(roomAddress))
|
.where(GroupChatModel.ADDRESS.eq(roomAddress))
|
||||||
|
.and(GroupChatModel.ACCOUNT_ID.eq(accountId))
|
||||||
.get().observableResult()
|
.get().observableResult()
|
||||||
.map(result -> new Optional<>(
|
.map(result -> new Optional<>(
|
||||||
groupChatMapping.modelToEntity(result.firstOrNull(), new IGroupChat())))
|
groupChatMapping.modelToEntity(result.firstOrNull(), new IGroupChat())))
|
||||||
|
@ -79,9 +94,10 @@ public class XmppGroupChatRepository
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Maybe<GroupChat> getGroupChatByRoomAddress(String roomAddress) {
|
public Maybe<GroupChat> getGroupChatByRoomAddress(long accountId, String roomAddress) {
|
||||||
return data().select(GroupChatModel.class)
|
return data().select(GroupChatModel.class)
|
||||||
.where(GroupChatModel.ADDRESS.eq(roomAddress))
|
.where(GroupChatModel.ADDRESS.eq(roomAddress))
|
||||||
|
.and(GroupChatModel.ACCOUNT_ID.eq(accountId))
|
||||||
.get().maybe()
|
.get().maybe()
|
||||||
.map(model -> groupChatMapping.modelToEntity(model, new IGroupChat()))
|
.map(model -> groupChatMapping.modelToEntity(model, new IGroupChat()))
|
||||||
.subscribeOn(subscriberScheduler())
|
.subscribeOn(subscriberScheduler())
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package org.mercury_im.messenger.data.repository;
|
package org.mercury_im.messenger.data.repository;
|
||||||
|
|
||||||
|
import org.mercury_im.messenger.entity.Account;
|
||||||
import org.mercury_im.messenger.entity.chat.GroupChat;
|
import org.mercury_im.messenger.entity.chat.GroupChat;
|
||||||
import org.mercury_im.messenger.entity.message.Message;
|
import org.mercury_im.messenger.entity.message.Message;
|
||||||
import org.mercury_im.messenger.data.util.Optional;
|
import org.mercury_im.messenger.data.util.Optional;
|
||||||
|
@ -19,9 +20,19 @@ public interface GroupChatRepository {
|
||||||
|
|
||||||
Maybe<GroupChat> getGroupChat(long chatId);
|
Maybe<GroupChat> getGroupChat(long chatId);
|
||||||
|
|
||||||
Observable<Optional<GroupChat>> observeGroupChatByRoomAddress(String roomAddress);
|
Single<GroupChat> getOrCreateGroupChat(Account account, String roomAddress);
|
||||||
|
|
||||||
Maybe<GroupChat> getGroupChatByRoomAddress(String roomAddress);
|
default Observable<Optional<GroupChat>> observeGroupChatByRoomAddress(Account account, String roomAddress) {
|
||||||
|
return observeGroupChatByRoomAddress(account.getId(), roomAddress);
|
||||||
|
}
|
||||||
|
|
||||||
|
Observable<Optional<GroupChat>> observeGroupChatByRoomAddress(long accountId, String roomAddress);
|
||||||
|
|
||||||
|
default Maybe<GroupChat> getGroupChatByRoomAddress(Account account, String roomAddress) {
|
||||||
|
return getGroupChatByRoomAddress(account.getId(), roomAddress);
|
||||||
|
}
|
||||||
|
|
||||||
|
Maybe<GroupChat> getGroupChatByRoomAddress(long accountId, String roomAddress);
|
||||||
|
|
||||||
Observable<List<GroupChat>> observeAllGroupChats();
|
Observable<List<GroupChat>> observeAllGroupChats();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue