Fix some kotlin files to allow api switching

Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
Joas Schilling 2021-05-03 17:13:27 +02:00
parent 115154331d
commit ccd752b4ca
No known key found for this signature in database
GPG Key ID: 7076EA9751AACDDA
4 changed files with 76 additions and 33 deletions

View File

@ -28,6 +28,7 @@ import android.os.Bundle
import android.os.Handler import android.os.Handler
import android.provider.ContactsContract import android.provider.ContactsContract
import android.text.TextUtils import android.text.TextUtils
import android.util.Log
import android.view.ViewGroup import android.view.ViewGroup
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import autodagger.AutoInjector import autodagger.AutoInjector
@ -48,6 +49,7 @@ import com.nextcloud.talk.R
import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.controllers.CallNotificationController import com.nextcloud.talk.controllers.CallNotificationController
import com.nextcloud.talk.controllers.ChatController
import com.nextcloud.talk.controllers.ConversationsListController import com.nextcloud.talk.controllers.ConversationsListController
import com.nextcloud.talk.controllers.LockedController import com.nextcloud.talk.controllers.LockedController
import com.nextcloud.talk.controllers.ServerSelectionController import com.nextcloud.talk.controllers.ServerSelectionController
@ -249,9 +251,17 @@ class MainActivity : BaseActivity(), ActionBarProvider {
bundle.putString(KEY_ROOM_TOKEN, roomOverall.ocs.data.token) bundle.putString(KEY_ROOM_TOKEN, roomOverall.ocs.data.token)
bundle.putString(KEY_ROOM_ID, roomOverall.ocs.data.roomId) bundle.putString(KEY_ROOM_ID, roomOverall.ocs.data.roomId)
if (currentUser.hasSpreedFeatureCapability("chat-v2")) { if (currentUser.hasSpreedFeatureCapability("chat-v2")) {
val apiVersion = ApiUtils.getApiVersion(currentUser, "conversation", intArrayOf(1))
if (apiVersion == null) {
Log.e(TAG, "No supported API version found")
return
}
ncApi.getRoom( ncApi.getRoom(
credentials, credentials,
ApiUtils.getRoom( ApiUtils.getUrlForRoom(
apiVersion,
currentUser.baseUrl, currentUser.baseUrl,
roomOverall.ocs.data.token roomOverall.ocs.data.token
) )

View File

@ -82,6 +82,7 @@ import com.facebook.imagepipeline.image.CloseableImage
import com.google.android.flexbox.FlexboxLayout import com.google.android.flexbox.FlexboxLayout
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.activities.MagicCallActivity import com.nextcloud.talk.activities.MagicCallActivity
import com.nextcloud.talk.activities.MainActivity
import com.nextcloud.talk.adapters.messages.MagicIncomingTextMessageViewHolder import com.nextcloud.talk.adapters.messages.MagicIncomingTextMessageViewHolder
import com.nextcloud.talk.adapters.messages.MagicOutcomingTextMessageViewHolder import com.nextcloud.talk.adapters.messages.MagicOutcomingTextMessageViewHolder
import com.nextcloud.talk.adapters.messages.MagicPreviewMessageViewHolder import com.nextcloud.talk.adapters.messages.MagicPreviewMessageViewHolder
@ -293,7 +294,14 @@ class ChatController(args: Bundle) :
} }
if (conversationUser != null) { if (conversationUser != null) {
ncApi?.getRoom(credentials, ApiUtils.getRoom(conversationUser.baseUrl, roomToken)) val apiVersion = ApiUtils.getApiVersion(conversationUser, "conversation", intArrayOf(1))
if (apiVersion == null) {
Log.e(TAG, "No supported API version found")
return
}
ncApi?.getRoom(credentials, ApiUtils.getUrlForRoom(apiVersion, conversationUser.baseUrl, roomToken))
?.subscribeOn(Schedulers.io()) ?.subscribeOn(Schedulers.io())
?.observeOn(AndroidSchedulers.mainThread()) ?.observeOn(AndroidSchedulers.mainThread())
?.subscribe(object : Observer<RoomOverall> { ?.subscribe(object : Observer<RoomOverall> {
@ -332,7 +340,18 @@ class ChatController(args: Bundle) :
} }
private fun handleFromNotification() { private fun handleFromNotification() {
ncApi?.getRooms(credentials, ApiUtils.getUrlForGetRooms(conversationUser?.baseUrl)) if (ncApi == null) {
return
}
val apiVersion = ApiUtils.getApiVersion(conversationUser, "conversation", intArrayOf(1))
if (apiVersion == null) {
Log.e(TAG, "No supported API version found")
return
}
ncApi?.getRooms(credentials, ApiUtils.getUrlForRooms(apiVersion, conversationUser?.baseUrl))
?.subscribeOn(Schedulers.io())?.observeOn(AndroidSchedulers.mainThread()) ?.subscribeOn(Schedulers.io())?.observeOn(AndroidSchedulers.mainThread())
?.subscribe(object : Observer<RoomsOverall> { ?.subscribe(object : Observer<RoomsOverall> {
override fun onSubscribe(d: Disposable) { override fun onSubscribe(d: Disposable) {

View File

@ -20,11 +20,13 @@
package com.nextcloud.talk.controllers package com.nextcloud.talk.controllers
import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.graphics.drawable.LayerDrawable import android.graphics.drawable.LayerDrawable
import android.os.Bundle import android.os.Bundle
import android.text.TextUtils import android.text.TextUtils
import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
@ -298,6 +300,7 @@ class ConversationInfoController(args: Bundle) : BaseController(args), FlexibleA
} }
} }
@SuppressLint("LongLogTag")
fun submitLobbyChanges() { fun submitLobbyChanges() {
val state = if ( val state = if (
( (
@ -306,9 +309,17 @@ class ConversationInfoController(args: Bundle) : BaseController(args), FlexibleA
) as SwitchCompat ) as SwitchCompat
).isChecked ).isChecked
) 1 else 0 ) 1 else 0
val apiVersion = ApiUtils.getApiVersion(conversationUser, "conversation", intArrayOf(1))
if (apiVersion == null) {
Log.e(TAG, "No supported API version found")
return
}
ncApi.setLobbyForConversation( ncApi.setLobbyForConversation(
ApiUtils.getCredentials(conversationUser!!.username, conversationUser.token), ApiUtils.getCredentials(conversationUser!!.username, conversationUser.token),
ApiUtils.getUrlForLobbyForConversation(conversationUser.baseUrl, conversation!!.token), ApiUtils.getUrlForRoomWebinaryLobby(apiVersion, conversationUser.baseUrl, conversation!!.token),
state, state,
conversation!!.lobbyTimer conversation!!.lobbyTimer
) )
@ -438,9 +449,16 @@ class ConversationInfoController(args: Bundle) : BaseController(args), FlexibleA
} }
private fun getListOfParticipants() { private fun getListOfParticipants() {
val apiVersion = ApiUtils.getApiVersion(conversationUser, "conversation", intArrayOf(1))
if (apiVersion == null) {
Log.e(TAG, "No supported API version found")
return
}
ncApi.getPeersForCall( ncApi.getPeersForCall(
credentials, credentials,
ApiUtils.getUrlForParticipants(conversationUser!!.baseUrl, conversationToken) ApiUtils.getUrlForParticipants(apiVersion, conversationUser!!.baseUrl, conversationToken)
) )
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
@ -527,7 +545,14 @@ class ConversationInfoController(args: Bundle) : BaseController(args), FlexibleA
} }
private fun fetchRoomInfo() { private fun fetchRoomInfo() {
ncApi.getRoom(credentials, ApiUtils.getRoom(conversationUser!!.baseUrl, conversationToken)) val apiVersion = ApiUtils.getApiVersion(conversationUser, "conversation", intArrayOf(1))
if (apiVersion == null) {
Log.e(TAG, "No supported API version found")
return
}
ncApi.getRoom(credentials, ApiUtils.getUrlForRoom(apiVersion, conversationUser!!.baseUrl, conversationToken))
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(object : Observer<RoomOverall> { .subscribe(object : Observer<RoomOverall> {
@ -701,11 +726,18 @@ class ConversationInfoController(args: Bundle) : BaseController(args), FlexibleA
title(text = participant.displayName) title(text = participant.displayName)
listItemsWithImage(items = items) { dialog, index, _ -> listItemsWithImage(items = items) { dialog, index, _ ->
val apiVersion = ApiUtils.getApiVersion(conversationUser, "conversation", intArrayOf(1))
if (apiVersion == null) {
Log.e(TAG, "No supported API version found")
}
if (index == 0) { if (index == 0) {
if (participant.type == Participant.ParticipantType.MODERATOR) { if (participant.type == Participant.ParticipantType.MODERATOR) {
ncApi.demoteModeratorToUser( ncApi.demoteModeratorToUser(
credentials, credentials,
ApiUtils.getUrlForModerators(conversationUser.baseUrl, conversation!!.token), ApiUtils.getUrlForRoomModerators(apiVersion, conversationUser.baseUrl,
conversation!!.token),
participant.userId participant.userId
) )
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
@ -716,7 +748,8 @@ class ConversationInfoController(args: Bundle) : BaseController(args), FlexibleA
} else if (participant.type == Participant.ParticipantType.USER) { } else if (participant.type == Participant.ParticipantType.USER) {
ncApi.promoteUserToModerator( ncApi.promoteUserToModerator(
credentials, credentials,
ApiUtils.getUrlForModerators(conversationUser.baseUrl, conversation!!.token), ApiUtils.getUrlForRoomModerators(apiVersion, conversationUser.baseUrl,
conversation!!.token),
participant.userId participant.userId
) )
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
@ -771,6 +804,7 @@ class ConversationInfoController(args: Bundle) : BaseController(args), FlexibleA
companion object { companion object {
private val TAG = "ConversationInfoController"
private const val ID_DELETE_CONVERSATION_DIALOG = 0 private const val ID_DELETE_CONVERSATION_DIALOG = 0
} }

View File

@ -53,13 +53,8 @@ public class ApiUtils {
/** /**
* @deprecated Please specify the api version you want to use via * @deprecated Please specify the api version you want to use via
* {@link ApiUtils#getUrlForRoomWebinaryLobby(int, String, String)} instead. * {@link ApiUtils#getUrlForAttendees(int, String, String)} instead.
*/ */
@Deprecated
public static String getUrlForLobbyForConversation(String baseUrl, String token) {
return getUrlForRoomWebinaryLobby(1, baseUrl, token);
}
@Deprecated @Deprecated
public static String getUrlForRemovingParticipantFromConversation(String baseUrl, String roomToken, boolean isGuest) { public static String getUrlForRemovingParticipantFromConversation(String baseUrl, String roomToken, boolean isGuest) {
String url = getUrlForParticipants(1, baseUrl, roomToken); String url = getUrlForParticipants(1, baseUrl, roomToken);
@ -122,16 +117,6 @@ public class ApiUtils {
return getUrlForParticipantsActive(1, baseUrl, token); return getUrlForParticipantsActive(1, baseUrl, token);
} }
/**
* @deprecated Please specify the api version you want to use via
* {@link ApiUtils#getUrlForParticipants(int, String, String)} instead.
*/
@Deprecated
public static String getUrlForParticipants(String baseUrl, String token) {
return getUrlForParticipants(1, baseUrl, token);
}
public static String getUrlForCapabilities(String baseUrl) { public static String getUrlForCapabilities(String baseUrl) {
return baseUrl + ocsApiVersion + "/cloud/capabilities"; return baseUrl + ocsApiVersion + "/cloud/capabilities";
} }
@ -145,15 +130,6 @@ public class ApiUtils {
return getUrlForRooms(1, baseUrl); return getUrlForRooms(1, baseUrl);
} }
/**
* @deprecated Please specify the api version you want to use via
* {@link ApiUtils#getUrlForRoom(int, String, String)} instead.
*/
@Deprecated
public static String getRoom(String baseUrl, String token) {
return getUrlForRoom(1, baseUrl, token);
}
public static Integer getApiVersion(UserEntity capabilities, String apiName, int[] versions) { public static Integer getApiVersion(UserEntity capabilities, String apiName, int[] versions) {
if (apiName.equals("conversation")) { if (apiName.equals("conversation")) {
boolean hasApiV4 = false; boolean hasApiV4 = false;
@ -197,6 +173,10 @@ public class ApiUtils {
return getUrlForRooms(version, baseUrl) + "/" + token; return getUrlForRooms(version, baseUrl) + "/" + token;
} }
public static String getUrlForAttendees(int version, String baseUrl, String token) {
return getUrlForRoom(version, baseUrl, token) + "/attendees";
}
public static String getUrlForParticipants(int version, String baseUrl, String token) { public static String getUrlForParticipants(int version, String baseUrl, String token) {
return getUrlForRoom(version, baseUrl, token) + "/participants"; return getUrlForRoom(version, baseUrl, token) + "/participants";
} }