From e9fa343fce27788dbdcd4173bbe614b22a5c2c6b Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Thu, 6 May 2021 09:45:09 +0200 Subject: [PATCH] Add APIv4 to easy conversation API calls Signed-off-by: Joas Schilling --- .../com/nextcloud/talk/activities/MainActivity.kt | 3 ++- .../nextcloud/talk/controllers/CallController.java | 6 +++--- .../talk/controllers/CallNotificationController.java | 3 ++- .../com/nextcloud/talk/controllers/ChatController.kt | 12 ++++++------ .../talk/controllers/ContactsController.java | 5 +++-- .../talk/controllers/ConversationInfoController.kt | 4 ++-- .../controllers/ConversationsListController.java | 2 +- .../bottomsheet/OperationsMenuController.java | 4 ++-- .../talk/jobs/DeleteConversationWorker.java | 2 +- .../nextcloud/talk/jobs/LeaveConversationWorker.java | 2 +- .../com/nextcloud/talk/jobs/NotificationWorker.java | 2 +- .../main/java/com/nextcloud/talk/utils/ApiUtils.java | 2 ++ .../preferencestorage/DatabaseStorageModule.java | 2 +- 13 files changed, 27 insertions(+), 22 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 486253ec9..132687f6b 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt @@ -229,7 +229,7 @@ class MainActivity : BaseActivity(), ActionBarProvider { val roomType = "1" val currentUser = userUtils.currentUser ?: return - val apiVersion = ApiUtils.getConversationApiVersion(currentUser, intArrayOf(1)) + val apiVersion = ApiUtils.getConversationApiVersion(currentUser, intArrayOf(ApiUtils.APIv4, 1)) val credentials = ApiUtils.getCredentials(currentUser.username, currentUser.token) val retrofitBucket = ApiUtils.getRetrofitBucketForCreateRoom( apiVersion, currentUser.baseUrl, roomType, @@ -250,6 +250,7 @@ class MainActivity : BaseActivity(), ActionBarProvider { 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( diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java index 3aea3dd8d..89f3555f1 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java @@ -437,7 +437,7 @@ public class CallController extends BaseController { } private void handleFromNotification() { - int apiVersion = ApiUtils.getConversationApiVersion(conversationUser, new int[] {1}); + int apiVersion = ApiUtils.getConversationApiVersion(conversationUser, new int[] {ApiUtils.APIv4, 1}); ncApi.getRooms(credentials, ApiUtils.getUrlForRooms(apiVersion, baseUrl)) .retry(3) @@ -1217,7 +1217,7 @@ public class CallController extends BaseController { private void joinRoomAndCall() { callSession = ApplicationWideCurrentRoomHolder.getInstance().getSession(); - int apiVersion = ApiUtils.getConversationApiVersion(conversationUser, new int[] {1}); + int apiVersion = ApiUtils.getConversationApiVersion(conversationUser, new int[] {ApiUtils.APIv4, 1}); if (TextUtils.isEmpty(callSession)) { ncApi.joinRoom(credentials, ApiUtils.getUrlForParticipantsActive(apiVersion, baseUrl, roomToken), @@ -1591,7 +1591,7 @@ public class CallController extends BaseController { } private void leaveRoom(boolean shutDownView) { - int apiVersion = ApiUtils.getConversationApiVersion(conversationUser, new int[] {1}); + int apiVersion = ApiUtils.getConversationApiVersion(conversationUser, new int[] {ApiUtils.APIv4, 1}); ncApi.leaveRoom(credentials, ApiUtils.getUrlForParticipantsActive(apiVersion, baseUrl, roomToken)) .subscribeOn(Schedulers.io()) diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java index 52c0390b9..8254dc60c 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java @@ -260,7 +260,8 @@ public class CallNotificationController extends BaseController { } private void handleFromNotification() { - int apiVersion = ApiUtils.getConversationApiVersion(userBeingCalled, new int[] {4, 3, 1}); + int apiVersion = ApiUtils.getConversationApiVersion(userBeingCalled, new int[] {ApiUtils.APIv4, + ApiUtils.APIv3, 1}); ncApi.getRoom(credentials, ApiUtils.getUrlForRoom(apiVersion, userBeingCalled.getBaseUrl(), roomId)) .subscribeOn(Schedulers.io()) 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 125a9e138..c261145d5 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt @@ -292,7 +292,7 @@ class ChatController(args: Bundle) : } if (conversationUser != null) { - val apiVersion = ApiUtils.getConversationApiVersion(conversationUser, intArrayOf(1)) + val apiVersion = ApiUtils.getConversationApiVersion(conversationUser, intArrayOf(ApiUtils.APIv4, 1)) ncApi?.getRoom(credentials, ApiUtils.getUrlForRoom(apiVersion, conversationUser.baseUrl, roomToken)) ?.subscribeOn(Schedulers.io()) @@ -336,7 +336,7 @@ class ChatController(args: Bundle) : var apiVersion = 1 // FIXME Can this be called for guests? if (conversationUser != null) { - apiVersion = ApiUtils.getConversationApiVersion(conversationUser, intArrayOf(1)) + apiVersion = ApiUtils.getConversationApiVersion(conversationUser, intArrayOf(ApiUtils.APIv4, 1)) } ncApi?.getRooms(credentials, ApiUtils.getUrlForRooms(apiVersion, conversationUser?.baseUrl)) @@ -933,7 +933,7 @@ class ChatController(args: Bundle) : var apiVersion = 1 // FIXME Fix API checking with guests? if (conversationUser != null) { - apiVersion = ApiUtils.getConversationApiVersion(conversationUser, intArrayOf(1)) + apiVersion = ApiUtils.getConversationApiVersion(conversationUser, intArrayOf(ApiUtils.APIv4, 1)) } ncApi?.joinRoom( @@ -1004,7 +1004,7 @@ class ChatController(args: Bundle) : var apiVersion = 1 // FIXME Fix API checking with guests? if (conversationUser != null) { - apiVersion = ApiUtils.getConversationApiVersion(conversationUser, intArrayOf(1)) + apiVersion = ApiUtils.getConversationApiVersion(conversationUser, intArrayOf(ApiUtils.APIv4, 1)) } ncApi?.leaveRoom( @@ -1627,7 +1627,7 @@ class ChatController(args: Bundle) : var apiVersion = 1 // FIXME Fix API checking with guests? if (conversationUser != null) { - apiVersion = ApiUtils.getConversationApiVersion(conversationUser, intArrayOf(1)) + apiVersion = ApiUtils.getChatApiVersion(conversationUser, intArrayOf(1)) } ncApi?.deleteChatMessage( @@ -1750,7 +1750,7 @@ class ChatController(args: Bundle) : var apiVersion = 1 // FIXME Fix API checking with guests? if (conversationUser != null) { - apiVersion = ApiUtils.getConversationApiVersion(conversationUser, intArrayOf(1)) + apiVersion = ApiUtils.getConversationApiVersion(conversationUser, intArrayOf(ApiUtils.APIv4, 1)) } val retrofitBucket = ApiUtils.getRetrofitBucketForCreateRoom( 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 a0f4ff797..501bf47ce 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java @@ -288,7 +288,7 @@ public class ContactsController extends BaseController implements SearchView.OnQ userId = selectedUserIds.iterator().next(); } - int apiVersion = ApiUtils.getConversationApiVersion(currentUser, new int[] {1}); + int apiVersion = ApiUtils.getConversationApiVersion(currentUser, new int[] {ApiUtils.APIv4, 1}); RetrofitBucket retrofitBucket = ApiUtils.getRetrofitBucketForCreateRoom(apiVersion, currentUser.getBaseUrl(), roomType, @@ -313,6 +313,7 @@ public class ContactsController extends BaseController implements SearchView.OnQ 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())) @@ -852,7 +853,7 @@ public class ContactsController extends BaseController implements SearchView.OnQ roomType = "2"; } - int apiVersion = ApiUtils.getConversationApiVersion(currentUser, new int[] {1}); + int apiVersion = ApiUtils.getConversationApiVersion(currentUser, new int[] {ApiUtils.APIv4, 1}); RetrofitBucket retrofitBucket = ApiUtils.getRetrofitBucketForCreateRoom(apiVersion, currentUser.getBaseUrl(), diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt index 27fba851e..3100500b2 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt @@ -307,7 +307,7 @@ class ConversationInfoController(args: Bundle) : BaseController(args), FlexibleA ).isChecked ) 1 else 0 - val apiVersion = ApiUtils.getConversationApiVersion(conversationUser, intArrayOf(1)) + val apiVersion = ApiUtils.getConversationApiVersion(conversationUser, intArrayOf(ApiUtils.APIv4, 1)) ncApi.setLobbyForConversation( ApiUtils.getCredentials(conversationUser!!.username, conversationUser.token), @@ -539,7 +539,7 @@ class ConversationInfoController(args: Bundle) : BaseController(args), FlexibleA var apiVersion = 1 // FIXME Fix API checking with guests? if (conversationUser != null) { - apiVersion = ApiUtils.getConversationApiVersion(conversationUser, intArrayOf(1)) + apiVersion = ApiUtils.getConversationApiVersion(conversationUser, intArrayOf(ApiUtils.APIv4, 1)) } ncApi.getRoom(credentials, ApiUtils.getUrlForRoom(apiVersion, conversationUser!!.baseUrl, conversationToken)) 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 8fc10a198..fc42b621d 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java @@ -418,7 +418,7 @@ public class ConversationsListController extends BaseController implements Searc callItems = new ArrayList<>(); - int apiVersion = ApiUtils.getConversationApiVersion(currentUser, new int[] {4, 1}); + int apiVersion = ApiUtils.getConversationApiVersion(currentUser, new int[] {ApiUtils.APIv4, ApiUtils.APIv3, 1}); roomsQueryDisposable = ncApi.getRooms(credentials, ApiUtils.getUrlForRooms(apiVersion, currentUser.getBaseUrl())) 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 d3bea42d3..23705faa4 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 @@ -191,7 +191,7 @@ public class OperationsMenuController extends BaseController { // FIXME joining a public link we need to check other capabilities apiVersion = 1; } else { - apiVersion = ApiUtils.getConversationApiVersion(currentUser, new int[] {1}); + apiVersion = ApiUtils.getConversationApiVersion(currentUser, new int[] {ApiUtils.APIv4, 1}); } @@ -394,7 +394,7 @@ public class OperationsMenuController extends BaseController { } private void performGroupCallWorkaround(String credentials) { - int apiVersion = ApiUtils.getConversationApiVersion(currentUser, new int[] {1}); + int apiVersion = ApiUtils.getConversationApiVersion(currentUser, new int[] {ApiUtils.APIv4, 1}); ncApi.makeRoomPrivate(credentials, ApiUtils.getUrlForRoomPublic(apiVersion, currentUser.getBaseUrl(), conversation.getToken())) diff --git a/app/src/main/java/com/nextcloud/talk/jobs/DeleteConversationWorker.java b/app/src/main/java/com/nextcloud/talk/jobs/DeleteConversationWorker.java index b22e1adfd..2c0cb66b2 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/DeleteConversationWorker.java +++ b/app/src/main/java/com/nextcloud/talk/jobs/DeleteConversationWorker.java @@ -75,7 +75,7 @@ public class DeleteConversationWorker extends Worker { UserEntity operationUser = userUtils.getUserWithId(operationUserId); if (operationUser != null) { - int apiVersion = ApiUtils.getConversationApiVersion(operationUser, new int[] {1}); + int apiVersion = ApiUtils.getConversationApiVersion(operationUser, new int[] {ApiUtils.APIv4, 1}); String credentials = ApiUtils.getCredentials(operationUser.getUsername(), operationUser.getToken()); ncApi = retrofit.newBuilder().client(okHttpClient.newBuilder().cookieJar(new diff --git a/app/src/main/java/com/nextcloud/talk/jobs/LeaveConversationWorker.java b/app/src/main/java/com/nextcloud/talk/jobs/LeaveConversationWorker.java index 3704b5d2f..5ddab19f3 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/LeaveConversationWorker.java +++ b/app/src/main/java/com/nextcloud/talk/jobs/LeaveConversationWorker.java @@ -83,7 +83,7 @@ public class LeaveConversationWorker extends Worker { EventStatus eventStatus = new EventStatus(operationUser.getId(), EventStatus.EventType.CONVERSATION_UPDATE, true); - int apiVersion = ApiUtils.getConversationApiVersion(operationUser, new int[] {1}); + int apiVersion = ApiUtils.getConversationApiVersion(operationUser, new int[] {ApiUtils.APIv4, 1}); ncApi.removeSelfFromRoom(credentials, ApiUtils.getUrlForParticipantsSelf(apiVersion, operationUser.getBaseUrl(), 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 a9932c2c3..1ef0fd4bc 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java +++ b/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java @@ -152,7 +152,7 @@ public class NotificationWorker extends Worker { importantConversation = Boolean.parseBoolean(arbitraryStorageEntity.getValue()); } - int apiVersion = ApiUtils.getConversationApiVersion(userEntity, new int[] {1}); + int apiVersion = ApiUtils.getConversationApiVersion(userEntity, new int[] {ApiUtils.APIv4, 1}); ncApi.getRoom(credentials, ApiUtils.getUrlForRoom(apiVersion, userEntity.getBaseUrl(), intent.getExtras().getString(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN()))) diff --git a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java index 9a5ac3cc6..8a037c951 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java +++ b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java @@ -37,6 +37,8 @@ import androidx.annotation.Nullable; import okhttp3.Credentials; public class ApiUtils { + public static final int APIv3 = 3; + public static final int APIv4 = 4; private static final String TAG = "ApiUtils"; private static final String ocsApiVersion = "/ocs/v2.php"; private static final String spreedApiVersion = "/apps/spreed/api/v1"; diff --git a/app/src/main/java/com/nextcloud/talk/utils/preferences/preferencestorage/DatabaseStorageModule.java b/app/src/main/java/com/nextcloud/talk/utils/preferences/preferencestorage/DatabaseStorageModule.java index b0b5b3cc2..9e6c29721 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/preferences/preferencestorage/DatabaseStorageModule.java +++ b/app/src/main/java/com/nextcloud/talk/utils/preferences/preferencestorage/DatabaseStorageModule.java @@ -93,7 +93,7 @@ public class DatabaseStorageModule implements StorageModule { intValue = 0; } - int apiVersion = ApiUtils.getConversationApiVersion(conversationUser, new int[] {4, 1}); + int apiVersion = ApiUtils.getConversationApiVersion(conversationUser, new int[] {ApiUtils.APIv4, 1}); ncApi.setNotificationLevel(ApiUtils.getCredentials(conversationUser.getUsername(), conversationUser.getToken()), ApiUtils.getUrlForRoomNotificationLevel(apiVersion, conversationUser.getBaseUrl(),