mirror of
https://github.com/nextcloud/talk-android
synced 2025-07-10 14:24:05 +01:00
APIv4 compatibility
Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
parent
cc538e48e3
commit
3cd18d50ca
@ -258,23 +258,27 @@ public class CallNotificationController extends BaseController {
|
||||
}
|
||||
|
||||
private void handleFromNotification() {
|
||||
boolean isConversationApiV3 = userBeingCalled.hasSpreedFeatureCapability("conversation-v3");
|
||||
if (isConversationApiV3) {
|
||||
ncApi.getRoom(credentials, ApiUtils.getRoomV3(userBeingCalled.getBaseUrl(), roomId))
|
||||
.subscribeOn(Schedulers.io())
|
||||
.retry(3)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new Observer<RoomOverall>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
disposablesList.add(d);
|
||||
}
|
||||
Integer apiVersion = ApiUtils.getApiVersion(userBeingCalled, "conversation", new int[] {4, 3, 1});
|
||||
if (apiVersion == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NotNull RoomOverall roomOverall) {
|
||||
currentConversation = roomOverall.getOcs().data;
|
||||
runAllThings();
|
||||
ncApi.getRoom(credentials, ApiUtils.getRoom(apiVersion, userBeingCalled.getBaseUrl(), roomId))
|
||||
.subscribeOn(Schedulers.io())
|
||||
.retry(3)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new Observer<RoomOverall>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
disposablesList.add(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NotNull RoomOverall roomOverall) {
|
||||
currentConversation = roomOverall.getOcs().data;
|
||||
runAllThings();
|
||||
|
||||
if (apiVersion >= 3) {
|
||||
boolean hasCallFlags = userBeingCalled.hasSpreedFeatureCapability("conversation-call-flags");
|
||||
if (hasCallFlags) {
|
||||
if (isInCallWithVideo(currentConversation.callFlag)) {
|
||||
@ -286,46 +290,19 @@ public class CallNotificationController extends BaseController {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
@SuppressLint("LongLogTag")
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
Log.e(TAG, e.getMessage(), e);
|
||||
}
|
||||
|
||||
}
|
||||
@Override
|
||||
public void onComplete() {
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
|
||||
}
|
||||
});
|
||||
} else {
|
||||
ncApi.getRoom(credentials, ApiUtils.getRoom(userBeingCalled.getBaseUrl(), roomId))
|
||||
.subscribeOn(Schedulers.io())
|
||||
.retry(3)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new Observer<RoomOverall>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
disposablesList.add(d);
|
||||
}
|
||||
|
||||
@SuppressLint("LongLogTag")
|
||||
@Override
|
||||
public void onNext(@NotNull RoomOverall roomOverall) {
|
||||
currentConversation = roomOverall.getOcs().data;
|
||||
runAllThings();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private boolean isInCallWithVideo(int callFlag) {
|
||||
|
@ -26,6 +26,7 @@ import com.nextcloud.talk.BuildConfig;
|
||||
import com.nextcloud.talk.R;
|
||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
||||
import com.nextcloud.talk.models.RetrofitBucket;
|
||||
import com.nextcloud.talk.models.database.UserEntity;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@ -37,6 +38,7 @@ import okhttp3.Credentials;
|
||||
public class ApiUtils {
|
||||
private static String ocsApiVersion = "/ocs/v2.php";
|
||||
private static String spreedApiVersion = "/apps/spreed/api/v1";
|
||||
private static String spreedApiBase = ocsApiVersion + "/apps/spreed/api/v";
|
||||
|
||||
private static String userAgent = "Mozilla/5.0 (Android) Nextcloud-Talk v";
|
||||
|
||||
@ -122,12 +124,30 @@ public class ApiUtils {
|
||||
return baseUrl + ocsApiVersion + spreedApiVersion + "/room";
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Please specify the api version you want to use via
|
||||
* {@link ApiUtils#getRoom(int, String, String)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public static String getRoom(String baseUrl, String token) {
|
||||
return baseUrl + ocsApiVersion + spreedApiVersion + "/room/" + token;
|
||||
return getRoom(1, baseUrl, token);
|
||||
}
|
||||
|
||||
public static String getRoomV3(String baseUrl, String token) {
|
||||
return baseUrl + ocsApiVersion + "/apps/spreed/api/v3" + "/room/" + token;
|
||||
public static Integer getApiVersion(UserEntity capabilities, String apiName, int[] versions) {
|
||||
for (int version : versions) {
|
||||
if (capabilities.hasSpreedFeatureCapability(apiName + "-v" + version)) {
|
||||
return version;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected static String getApi(int version, String baseUrl) {
|
||||
return baseUrl + spreedApiBase + version;
|
||||
}
|
||||
|
||||
public static String getRoom(int version, String baseUrl, String token) {
|
||||
return getApi(version, baseUrl) + "/room/" + token;
|
||||
}
|
||||
|
||||
public static RetrofitBucket getRetrofitBucketForCreateRoom(String baseUrl, String roomType,
|
||||
|
Loading…
Reference in New Issue
Block a user