From 172d8da1cfef1a38d3ee20fb30adb8ac2d131d03 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Sat, 8 May 2021 14:27:01 +0200 Subject: [PATCH] "chat-v2" capability is available since Nextcloud 13 Signed-off-by: Joas Schilling --- .../nextcloud/talk/activities/MainActivity.kt | 66 ++++++-------- .../talk/controllers/ChatController.kt | 20 ++--- .../talk/controllers/ContactsController.java | 85 +++++++------------ .../ConversationsListController.java | 14 +-- .../bottomsheet/OperationsMenuController.java | 18 ++-- .../talk/jobs/NotificationWorker.java | 5 +- 6 files changed, 77 insertions(+), 131 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt index 132687f6b..57088dc4b 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt @@ -25,7 +25,6 @@ import android.content.Context import android.content.Intent import android.os.Build import android.os.Bundle -import android.os.Handler import android.provider.ContactsContract import android.text.TextUtils import android.view.ViewGroup @@ -244,51 +243,38 @@ class MainActivity : BaseActivity(), ActionBarProvider { .subscribe(object : Observer { override fun onSubscribe(d: Disposable) {} override fun onNext(roomOverall: RoomOverall) { - val conversationIntent = Intent(context, MagicCallActivity::class.java) val bundle = Bundle() bundle.putParcelable(KEY_USER_ENTITY, currentUser) bundle.putString(KEY_ROOM_TOKEN, roomOverall.ocs.data.token) bundle.putString(KEY_ROOM_ID, roomOverall.ocs.data.roomId) - if (currentUser.hasSpreedFeatureCapability("chat-v2")) { - // FIXME once APIv2 or later is used only, the createRoom already returns all the data - ncApi.getRoom( - credentials, - ApiUtils.getUrlForRoom( - apiVersion, - currentUser.baseUrl, - roomOverall.ocs.data.token - ) - ) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Observer { - override fun onSubscribe(d: Disposable) {} - override fun onNext(roomOverall: RoomOverall) { - bundle.putParcelable( - KEY_ACTIVE_CONVERSATION, - Parcels.wrap(roomOverall.ocs.data) - ) - remapChatController( - router!!, currentUser.id, - roomOverall.ocs.data.token, bundle, true - ) - } - override fun onError(e: Throwable) {} - override fun onComplete() {} - }) - } else { - conversationIntent.putExtras(bundle) - startActivity(conversationIntent) - Handler().postDelayed( - { - if (!isDestroyed) { - router!!.popCurrentController() - } - }, - 100 + // FIXME once APIv2 or later is used only, the createRoom already returns all the data + ncApi.getRoom( + credentials, + ApiUtils.getUrlForRoom( + apiVersion, + currentUser.baseUrl, + roomOverall.ocs.data.token ) - } + ) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Observer { + override fun onSubscribe(d: Disposable) {} + override fun onNext(roomOverall: RoomOverall) { + bundle.putParcelable( + KEY_ACTIVE_CONVERSATION, + Parcels.wrap(roomOverall.ocs.data) + ) + remapChatController( + router!!, currentUser.id, + roomOverall.ocs.data.token, bundle, true + ) + } + + override fun onError(e: Throwable) {} + override fun onComplete() {} + }) } override fun onError(e: Throwable) {} diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt index 3163c9583..6a735d9e6 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt @@ -1777,18 +1777,16 @@ class ChatController(args: Bundle) : bundle.putString(BundleKeys.KEY_ROOM_ID, roomOverall.ocs.data.roomId) if (conversationUser != null) { - if (conversationUser.hasSpreedFeatureCapability("chat-v2")) { - bundle.putParcelable( - BundleKeys.KEY_ACTIVE_CONVERSATION, - Parcels.wrap(roomOverall.ocs.data) - ) - conversationIntent.putExtras(bundle) + bundle.putParcelable( + BundleKeys.KEY_ACTIVE_CONVERSATION, + Parcels.wrap(roomOverall.ocs.data) + ) + conversationIntent.putExtras(bundle) - ConductorRemapping.remapChatController( - router, conversationUser.id, - roomOverall.ocs.data.token, bundle, false - ) - } + ConductorRemapping.remapChatController( + router, conversationUser.id, + roomOverall.ocs.data.token, bundle, false + ) } else { conversationIntent.putExtras(bundle) startActivity(conversationIntent) diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java b/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java index fc9d2d8ce..e9d0aa44d 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java @@ -308,57 +308,43 @@ public class ContactsController extends BaseController implements SearchView.OnQ @Override public void onNext(RoomOverall roomOverall) { - Intent conversationIntent = new Intent(getActivity(), MagicCallActivity.class); Bundle bundle = new Bundle(); bundle.putParcelable(BundleKeys.INSTANCE.getKEY_USER_ENTITY(), currentUser); bundle.putString(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN(), roomOverall.getOcs().getData().getToken()); bundle.putString(BundleKeys.INSTANCE.getKEY_ROOM_ID(), roomOverall.getOcs().getData().getRoomId()); - if (currentUser.hasSpreedFeatureCapability("chat-v2")) { - // FIXME once APIv2 or later is used only, the createRoom already returns all the data - ncApi.getRoom(credentials, - ApiUtils.getUrlForRoom(apiVersion, currentUser.getBaseUrl(), - roomOverall.getOcs().getData().getToken())) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Observer() { + // FIXME once APIv2 or later is used only, the createRoom already returns all the data + ncApi.getRoom(credentials, + ApiUtils.getUrlForRoom(apiVersion, currentUser.getBaseUrl(), + roomOverall.getOcs().getData().getToken())) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { + @Override + public void onSubscribe(Disposable d) { - } - - @Override - public void onNext(RoomOverall roomOverall) { - bundle.putParcelable(BundleKeys.INSTANCE.getKEY_ACTIVE_CONVERSATION(), - Parcels.wrap(roomOverall.getOcs().getData())); - - ConductorRemapping.INSTANCE.remapChatController(getRouter(), currentUser.getId(), - roomOverall.getOcs().getData().getToken(), bundle, true); - } - - @Override - public void onError(Throwable e) { - - } - - @Override - public void onComplete() { - - } - }); - } else { - conversationIntent.putExtras(bundle); - startActivity(conversationIntent); - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - if (!isDestroyed() && !isBeingDestroyed()) { - getRouter().popCurrentController(); } - } - }, 100); - } + + @Override + public void onNext(RoomOverall roomOverall) { + bundle.putParcelable(BundleKeys.INSTANCE.getKEY_ACTIVE_CONVERSATION(), + Parcels.wrap(roomOverall.getOcs().getData())); + + ConductorRemapping.INSTANCE.remapChatController(getRouter(), currentUser.getId(), + roomOverall.getOcs().getData().getToken(), bundle, true); + } + + @Override + public void onError(Throwable e) { + + } + + @Override + public void onComplete() { + + } + }); } @Override @@ -885,16 +871,11 @@ public class ContactsController extends BaseController implements SearchView.OnQ bundle.putString(BundleKeys.INSTANCE.getKEY_ROOM_ID(), roomOverall.getOcs().getData().getRoomId()); conversationIntent.putExtras(bundle); - if (currentUser.hasSpreedFeatureCapability("chat-v2")) { - bundle.putParcelable(BundleKeys.INSTANCE.getKEY_ACTIVE_CONVERSATION(), - Parcels.wrap(roomOverall.getOcs().getData())); + bundle.putParcelable(BundleKeys.INSTANCE.getKEY_ACTIVE_CONVERSATION(), + Parcels.wrap(roomOverall.getOcs().getData())); - ConductorRemapping.INSTANCE.remapChatController(getRouter(), currentUser.getId(), - roomOverall.getOcs().getData().getToken(), bundle, true); - } else { - startActivity(conversationIntent); - new Handler().postDelayed(() -> getRouter().popCurrentController(), 100); - } + ConductorRemapping.INSTANCE.remapChatController(getRouter(), currentUser.getId(), + roomOverall.getOcs().getData().getToken(), bundle, true); } } diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java b/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java index 78af3abf5..1c23e6ab6 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java @@ -736,17 +736,9 @@ public class ConversationsListController extends BaseController implements Searc } else { currentUser = userUtils.getCurrentUser(); - if (currentUser.hasSpreedFeatureCapability("chat-v2")) { - bundle.putParcelable(BundleKeys.INSTANCE.getKEY_ACTIVE_CONVERSATION(), Parcels.wrap(conversation)); - ConductorRemapping.INSTANCE.remapChatController(getRouter(), currentUser.getId(), - conversation.getToken(), bundle, false); - } else { - overridePushHandler(new NoOpControllerChangeHandler()); - overridePopHandler(new NoOpControllerChangeHandler()); - Intent callIntent = new Intent(getActivity(), MagicCallActivity.class); - callIntent.putExtras(bundle); - startActivity(callIntent); - } + bundle.putParcelable(BundleKeys.INSTANCE.getKEY_ACTIVE_CONVERSATION(), Parcels.wrap(conversation)); + ConductorRemapping.INSTANCE.remapChatController(getRouter(), currentUser.getId(), + conversation.getToken(), bundle, false); } } diff --git a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java index 69811b8d9..a7190a404 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java @@ -448,6 +448,8 @@ public class OperationsMenuController extends BaseController { @Override public void onNext(CapabilitiesOverall capabilitiesOverall) { + // Guest checking the capabilities so there is no global server EOL warning until here. + // FIXME check the serverEOL capabilities instead if (capabilitiesOverall.getOcs().getData() .getCapabilities().getSpreedCapability() != null && capabilitiesOverall.getOcs().getData() @@ -471,14 +473,6 @@ public class OperationsMenuController extends BaseController { initiateConversation(false, capabilitiesOverall.getOcs().getData() .getCapabilities()); } - } else if (capabilitiesOverall.getOcs().getData() - .getCapabilities().getSpreedCapability() != null && - capabilitiesOverall.getOcs().getData() - .getCapabilities().getSpreedCapability() - .getFeatures() != null && capabilitiesOverall.getOcs().getData() - .getCapabilities().getSpreedCapability() - .getFeatures().contains("guest-signaling")) { - initiateCall(); } else { showResultImage(false, true); } @@ -590,11 +584,7 @@ public class OperationsMenuController extends BaseController { }); } } else { - if (!currentUser.hasSpreedFeatureCapability("chat-v2")) { - showResultImage(true, false); - } else { - initiateConversation(true, null); - } + initiateConversation(true, null); } } @@ -605,6 +595,8 @@ public class OperationsMenuController extends BaseController { if (baseUrl != null && !baseUrl.equals(currentUser.getBaseUrl())) { isGuestUser = true; + // Guest checking the capabilities so there is no global server EOL warning until here. + // FIXME check the serverEOL capabilities instead hasChatCapability = capabilities != null && capabilities.getSpreedCapability() != null && capabilities.getSpreedCapability().getFeatures() != null && capabilities.getSpreedCapability().getFeatures().contains("chat-v2"); } else { hasChatCapability = currentUser.hasSpreedFeatureCapability("chat-v2"); diff --git a/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java b/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java index 1ef0fd4bc..3331881d7 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java +++ b/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java @@ -598,9 +598,6 @@ public class NotificationWorker extends Worker { ncApi = retrofit.newBuilder().client(okHttpClient.newBuilder().cookieJar(new JavaNetCookieJar(new CookieManager())).build()).build().create(NcApi.class); - boolean hasChatSupport = signatureVerification.getUserEntity(). - hasSpreedFeatureCapability("chat-v2"); - boolean shouldShowNotification = decryptedPushMessage.getApp().equals("spreed"); if (shouldShowNotification) { @@ -608,7 +605,7 @@ public class NotificationWorker extends Worker { Bundle bundle = new Bundle(); - boolean startACall = decryptedPushMessage.getType().equals("call") || !hasChatSupport; + boolean startACall = decryptedPushMessage.getType().equals("call"); if (startACall) { intent = new Intent(context, MagicCallActivity.class); } else {