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.model.GroupChatModel;
|
||||
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.IGroupChat;
|
||||
import org.mercury_im.messenger.entity.message.Message;
|
||||
|
@ -68,9 +69,23 @@ public class XmppGroupChatRepository
|
|||
}
|
||||
|
||||
@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)
|
||||
.where(GroupChatModel.ADDRESS.eq(roomAddress))
|
||||
.and(GroupChatModel.ACCOUNT_ID.eq(accountId))
|
||||
.get().observableResult()
|
||||
.map(result -> new Optional<>(
|
||||
groupChatMapping.modelToEntity(result.firstOrNull(), new IGroupChat())))
|
||||
|
@ -79,9 +94,10 @@ public class XmppGroupChatRepository
|
|||
}
|
||||
|
||||
@Override
|
||||
public Maybe<GroupChat> getGroupChatByRoomAddress(String roomAddress) {
|
||||
public Maybe<GroupChat> getGroupChatByRoomAddress(long accountId, String roomAddress) {
|
||||
return data().select(GroupChatModel.class)
|
||||
.where(GroupChatModel.ADDRESS.eq(roomAddress))
|
||||
.and(GroupChatModel.ACCOUNT_ID.eq(accountId))
|
||||
.get().maybe()
|
||||
.map(model -> groupChatMapping.modelToEntity(model, new IGroupChat()))
|
||||
.subscribeOn(subscriberScheduler())
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
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.message.Message;
|
||||
import org.mercury_im.messenger.data.util.Optional;
|
||||
|
@ -19,9 +20,19 @@ public interface GroupChatRepository {
|
|||
|
||||
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();
|
||||
|
||||
|
|
Loading…
Reference in New Issue