This commit is contained in:
Mario Danic 2018-11-04 01:12:05 +01:00
parent 732a24692e
commit ec2557567c

View File

@ -504,7 +504,6 @@ public class ChatController extends BaseController implements MessagesListAdapte
protected void onDetach(@NonNull View view) { protected void onDetach(@NonNull View view) {
super.onDetach(view); super.onDetach(view);
if (conversationUser.hasSpreedCapabilityWithName("no-ping")) { if (conversationUser.hasSpreedCapabilityWithName("no-ping")) {
dispose();
wasDetached = true; wasDetached = true;
} }
} }
@ -572,6 +571,8 @@ public class ChatController extends BaseController implements MessagesListAdapte
private void joinRoomWithPassword() { private void joinRoomWithPassword() {
wasDetached = false;
if (currentCall == null) { if (currentCall == null) {
ncApi.joinRoom(credentials, ApiUtils.getUrlForSettingMyselfAsActiveParticipant(baseUrl, roomToken), roomPassword) ncApi.joinRoom(credentials, ApiUtils.getUrlForSettingMyselfAsActiveParticipant(baseUrl, roomToken), roomPassword)
.subscribeOn(Schedulers.newThread()) .subscribeOn(Schedulers.newThread())
@ -738,62 +739,64 @@ public class ChatController extends BaseController implements MessagesListAdapte
fieldMap.put("lastKnownMessageId", lastKnown); fieldMap.put("lastKnownMessageId", lastKnown);
} }
if (lookIntoFuture == 1) { if (!wasDetached) {
ncApi.pullChatMessages(credentials, ApiUtils.getUrlForChat(baseUrl, roomToken), fieldMap) if (lookIntoFuture == 1) {
.subscribeOn(Schedulers.newThread()) ncApi.pullChatMessages(credentials, ApiUtils.getUrlForChat(baseUrl, roomToken), fieldMap)
.observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.newThread())
.takeWhile(observable -> inChat) .observeOn(AndroidSchedulers.mainThread())
.retry(3, observable -> inChat) .takeWhile(observable -> inChat && !wasDetached)
.subscribe(new Observer<Response>() { .retry(3, observable -> inChat && !wasDetached)
@Override .subscribe(new Observer<Response>() {
public void onSubscribe(Disposable d) { @Override
disposableList.add(d); public void onSubscribe(Disposable d) {
} disposableList.add(d);
}
@Override @Override
public void onNext(Response response) { public void onNext(Response response) {
processMessages(response, true); processMessages(response, true);
} }
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
} }
@Override @Override
public void onComplete() { public void onComplete() {
pullChatMessages(1); pullChatMessages(1);
} }
}); });
} else { } else {
ncApi.pullChatMessages(credentials, ncApi.pullChatMessages(credentials,
ApiUtils.getUrlForChat(baseUrl, roomToken), fieldMap) ApiUtils.getUrlForChat(baseUrl, roomToken), fieldMap)
.subscribeOn(Schedulers.newThread()) .subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.retry(3, observable -> inChat) .retry(3, observable -> inChat && !wasDetached)
.takeWhile(observable -> inChat) .takeWhile(observable -> inChat && !wasDetached)
.subscribe(new Observer<Response>() { .subscribe(new Observer<Response>() {
@Override @Override
public void onSubscribe(Disposable d) { public void onSubscribe(Disposable d) {
disposableList.add(d); disposableList.add(d);
} }
@Override @Override
public void onNext(Response response) { public void onNext(Response response) {
processMessages(response, false); processMessages(response, false);
} }
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
} }
@Override @Override
public void onComplete() { public void onComplete() {
} }
}); });
}
} }
} }