mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-20 12:09:45 +01:00
Merge pull request #1276 from nextcloud/conversationActions
Make observer type save
This commit is contained in:
commit
3ca56793ff
@ -51,6 +51,7 @@ import com.nextcloud.talk.models.json.capabilities.Capabilities;
|
|||||||
import com.nextcloud.talk.models.json.capabilities.CapabilitiesOverall;
|
import com.nextcloud.talk.models.json.capabilities.CapabilitiesOverall;
|
||||||
import com.nextcloud.talk.models.json.conversations.Conversation;
|
import com.nextcloud.talk.models.json.conversations.Conversation;
|
||||||
import com.nextcloud.talk.models.json.conversations.RoomOverall;
|
import com.nextcloud.talk.models.json.conversations.RoomOverall;
|
||||||
|
import com.nextcloud.talk.models.json.generic.GenericOverall;
|
||||||
import com.nextcloud.talk.models.json.participants.AddParticipantOverall;
|
import com.nextcloud.talk.models.json.participants.AddParticipantOverall;
|
||||||
import com.nextcloud.talk.utils.ApiUtils;
|
import com.nextcloud.talk.utils.ApiUtils;
|
||||||
import com.nextcloud.talk.utils.ConductorRemapping;
|
import com.nextcloud.talk.utils.ConductorRemapping;
|
||||||
@ -75,6 +76,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
|
|||||||
import io.reactivex.disposables.Disposable;
|
import io.reactivex.disposables.Disposable;
|
||||||
import io.reactivex.schedulers.Schedulers;
|
import io.reactivex.schedulers.Schedulers;
|
||||||
import retrofit2.HttpException;
|
import retrofit2.HttpException;
|
||||||
|
import retrofit2.Response;
|
||||||
|
|
||||||
@AutoInjector(NextcloudTalkApplication.class)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class OperationsMenuController extends BaseController {
|
public class OperationsMenuController extends BaseController {
|
||||||
@ -260,7 +262,8 @@ public class OperationsMenuController extends BaseController {
|
|||||||
|
|
||||||
@SuppressLint("LongLogTag")
|
@SuppressLint("LongLogTag")
|
||||||
private void processOperation() {
|
private void processOperation() {
|
||||||
OperationsObserver operationsObserver = new OperationsObserver();
|
RoomOperationsObserver roomOperationsObserver = new RoomOperationsObserver();
|
||||||
|
GenericOperationsObserver genericOperationsObserver = new GenericOperationsObserver();
|
||||||
|
|
||||||
if (currentUser == null) {
|
if (currentUser == null) {
|
||||||
showResultImage(false, true);
|
showResultImage(false, true);
|
||||||
@ -279,7 +282,7 @@ public class OperationsMenuController extends BaseController {
|
|||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.retry(1)
|
.retry(1)
|
||||||
.subscribe(operationsObserver);
|
.subscribe(genericOperationsObserver);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
ncApi.makeRoomPublic(credentials, ApiUtils.getUrlForRoomPublic(apiVersion, currentUser.getBaseUrl(),
|
ncApi.makeRoomPublic(credentials, ApiUtils.getUrlForRoomPublic(apiVersion, currentUser.getBaseUrl(),
|
||||||
@ -287,7 +290,7 @@ public class OperationsMenuController extends BaseController {
|
|||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.retry(1)
|
.retry(1)
|
||||||
.subscribe(operationsObserver);
|
.subscribe(genericOperationsObserver);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
case 5:
|
case 5:
|
||||||
@ -301,7 +304,7 @@ public class OperationsMenuController extends BaseController {
|
|||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.retry(1)
|
.retry(1)
|
||||||
.subscribe(operationsObserver);
|
.subscribe(genericOperationsObserver);
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
// Operation 7 is sharing, so we handle this differently
|
// Operation 7 is sharing, so we handle this differently
|
||||||
@ -313,7 +316,7 @@ public class OperationsMenuController extends BaseController {
|
|||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.retry(1)
|
.retry(1)
|
||||||
.subscribe(operationsObserver);
|
.subscribe(genericOperationsObserver);
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
ncApi.getRoom(credentials, ApiUtils.getUrlForRoom(apiVersion, baseUrl, conversationToken))
|
ncApi.getRoom(credentials, ApiUtils.getUrlForRoom(apiVersion, baseUrl, conversationToken))
|
||||||
@ -477,7 +480,7 @@ public class OperationsMenuController extends BaseController {
|
|||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.retry(1)
|
.retry(1)
|
||||||
.subscribe(operationsObserver);
|
.subscribe(genericOperationsObserver);
|
||||||
} else {
|
} else {
|
||||||
ncApi.addConversationToFavorites(credentials,
|
ncApi.addConversationToFavorites(credentials,
|
||||||
ApiUtils.getUrlForRoomFavorite(apiVersion,
|
ApiUtils.getUrlForRoomFavorite(apiVersion,
|
||||||
@ -486,7 +489,7 @@ public class OperationsMenuController extends BaseController {
|
|||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.retry(1)
|
.retry(1)
|
||||||
.subscribe(operationsObserver);
|
.subscribe(genericOperationsObserver);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 99:
|
case 99:
|
||||||
@ -497,7 +500,7 @@ public class OperationsMenuController extends BaseController {
|
|||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.retry(1)
|
.retry(1)
|
||||||
.subscribe(operationsObserver);
|
.subscribe(roomOperationsObserver);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -690,32 +693,12 @@ public class OperationsMenuController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class OperationsObserver implements Observer {
|
private void handleObserverError(@io.reactivex.annotations.NonNull Throwable e) {
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onSubscribe(Disposable d) {
|
|
||||||
disposable = d;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onNext(Object o) {
|
|
||||||
if (operationCode != 99) {
|
|
||||||
RoomOverall roomOverall = (RoomOverall) o;
|
|
||||||
conversation = roomOverall.getOcs().getData();
|
|
||||||
showResultImage(true, false);
|
|
||||||
} else {
|
|
||||||
RoomOverall roomOverall = (RoomOverall) o;
|
|
||||||
conversation = roomOverall.getOcs().getData();
|
|
||||||
initiateConversation(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onError(Throwable e) {
|
|
||||||
if (operationCode != 99 || !(e instanceof HttpException)) {
|
if (operationCode != 99 || !(e instanceof HttpException)) {
|
||||||
showResultImage(false, false);
|
showResultImage(false, false);
|
||||||
} else {
|
} else {
|
||||||
if (((HttpException) e).response().code() == 403) {
|
Response<?> response = ((HttpException) e).response();
|
||||||
|
if (response != null && response.code() == 403) {
|
||||||
eventBus.post(new BottomSheetLockEvent(true, 0, false,
|
eventBus.post(new BottomSheetLockEvent(true, 0, false,
|
||||||
false));
|
false));
|
||||||
ApplicationWideMessageHolder.getInstance().setMessageType(ApplicationWideMessageHolder.MessageType.CALL_PASSWORD_WRONG);
|
ApplicationWideMessageHolder.getInstance().setMessageType(ApplicationWideMessageHolder.MessageType.CALL_PASSWORD_WRONG);
|
||||||
@ -727,6 +710,56 @@ public class OperationsMenuController extends BaseController {
|
|||||||
dispose();
|
dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class GenericOperationsObserver implements Observer<GenericOverall> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) {
|
||||||
|
disposable = d;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNext(@io.reactivex.annotations.NonNull GenericOverall genericOverall) {
|
||||||
|
if (operationCode != 99) {
|
||||||
|
showResultImage(true, false);
|
||||||
|
} else {
|
||||||
|
throw new IllegalArgumentException("Unsupported operation code observed!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(@io.reactivex.annotations.NonNull Throwable e) {
|
||||||
|
handleObserverError(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onComplete() {
|
||||||
|
dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class RoomOperationsObserver implements Observer<RoomOverall> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) {
|
||||||
|
disposable = d;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNext(@io.reactivex.annotations.NonNull RoomOverall roomOverall) {
|
||||||
|
conversation = roomOverall.getOcs().getData();
|
||||||
|
if (operationCode != 99) {
|
||||||
|
showResultImage(true, false);
|
||||||
|
} else {
|
||||||
|
conversation = roomOverall.getOcs().getData();
|
||||||
|
initiateConversation(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(@io.reactivex.annotations.NonNull Throwable e) {
|
||||||
|
handleObserverError(e);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onComplete() {
|
public void onComplete() {
|
||||||
dispose();
|
dispose();
|
||||||
|
Loading…
Reference in New Issue
Block a user