mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-20 12:09:45 +01:00
Add support for signaling v3
Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
parent
c97df9a435
commit
de6683815a
@ -1095,7 +1095,7 @@ public class CallController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void fetchSignalingSettings() {
|
private void fetchSignalingSettings() {
|
||||||
int apiVersion = ApiUtils.getSignalingApiVersion(conversationUser, new int[] {2, 1});
|
int apiVersion = ApiUtils.getSignalingApiVersion(conversationUser, new int[] {ApiUtils.APIv3, 2, 1});
|
||||||
|
|
||||||
ncApi.getSignalingSettings(credentials, ApiUtils.getUrlForSignalingSettings(apiVersion, baseUrl))
|
ncApi.getSignalingSettings(credentials, ApiUtils.getUrlForSignalingSettings(apiVersion, baseUrl))
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
@ -1142,16 +1142,22 @@ public class CallController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (signalingSettingsOverall.getOcs().getSettings().getStunServers() != null) {
|
if (apiVersion == ApiUtils.APIv3) {
|
||||||
for (int i = 0; i < signalingSettingsOverall.getOcs().getSettings().getStunServers().size();
|
if (signalingSettingsOverall.getOcs().getSettings().getStunServers() != null) {
|
||||||
i++) {
|
for (int i = 0; i < signalingSettingsOverall.getOcs().getSettings().getStunServers().size();
|
||||||
iceServer = signalingSettingsOverall.getOcs().getSettings().getStunServers().get(i);
|
i++) {
|
||||||
if (TextUtils.isEmpty(iceServer.getUsername()) || TextUtils.isEmpty(iceServer
|
iceServer = signalingSettingsOverall.getOcs().getSettings().getStunServers().get(i);
|
||||||
.getCredential())) {
|
for (int j = 0; j < iceServer.getUrls().size(); j++) {
|
||||||
|
iceServers.add(new PeerConnection.IceServer(iceServer.getUrls().get(j)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (signalingSettingsOverall.getOcs().getSettings().getStunServers() != null) {
|
||||||
|
for (int i = 0; i < signalingSettingsOverall.getOcs().getSettings().getStunServers().size();
|
||||||
|
i++) {
|
||||||
|
iceServer = signalingSettingsOverall.getOcs().getSettings().getStunServers().get(i);
|
||||||
iceServers.add(new PeerConnection.IceServer(iceServer.getUrl()));
|
iceServers.add(new PeerConnection.IceServer(iceServer.getUrl()));
|
||||||
} else {
|
|
||||||
iceServers.add(new PeerConnection.IceServer(iceServer.getUrl(),
|
|
||||||
iceServer.getUsername(), iceServer.getCredential()));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1161,13 +1167,11 @@ public class CallController extends BaseController {
|
|||||||
i++) {
|
i++) {
|
||||||
iceServer = signalingSettingsOverall.getOcs().getSettings().getTurnServers().get(i);
|
iceServer = signalingSettingsOverall.getOcs().getSettings().getTurnServers().get(i);
|
||||||
for (int j = 0; j < iceServer.getUrls().size(); j++) {
|
for (int j = 0; j < iceServer.getUrls().size(); j++) {
|
||||||
if (TextUtils.isEmpty(iceServer.getUsername()) || TextUtils.isEmpty(iceServer
|
iceServers.add(new PeerConnection.IceServer(
|
||||||
.getCredential())) {
|
iceServer.getUrls().get(j),
|
||||||
iceServers.add(new PeerConnection.IceServer(iceServer.getUrls().get(j)));
|
iceServer.getUsername(),
|
||||||
} else {
|
iceServer.getCredential()
|
||||||
iceServers.add(new PeerConnection.IceServer(iceServer.getUrls().get(j),
|
));
|
||||||
iceServer.getUsername(), iceServer.getCredential()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1304,7 +1308,8 @@ public class CallController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!hasExternalSignalingServer) {
|
if (!hasExternalSignalingServer) {
|
||||||
int apiVersion = ApiUtils.getSignalingApiVersion(conversationUser, new int[] {2, 1});
|
int apiVersion = ApiUtils.getSignalingApiVersion(conversationUser,
|
||||||
|
new int[] {ApiUtils.APIv3, 2, 1});
|
||||||
|
|
||||||
ncApi.pullSignalingMessages(credentials, ApiUtils.getUrlForSignaling(apiVersion,
|
ncApi.pullSignalingMessages(credentials, ApiUtils.getUrlForSignaling(apiVersion,
|
||||||
baseUrl, roomToken))
|
baseUrl, roomToken))
|
||||||
@ -2000,7 +2005,7 @@ public class CallController extends BaseController {
|
|||||||
String stringToSend = stringBuilder.toString();
|
String stringToSend = stringBuilder.toString();
|
||||||
strings.add(stringToSend);
|
strings.add(stringToSend);
|
||||||
|
|
||||||
int apiVersion = ApiUtils.getSignalingApiVersion(conversationUser, new int[] {2, 1});
|
int apiVersion = ApiUtils.getSignalingApiVersion(conversationUser, new int[] {ApiUtils.APIv3, 2, 1});
|
||||||
|
|
||||||
ncApi.sendSignalingMessages(credentials, ApiUtils.getUrlForSignaling(apiVersion, baseUrl, roomToken),
|
ncApi.sendSignalingMessages(credentials, ApiUtils.getUrlForSignaling(apiVersion, baseUrl, roomToken),
|
||||||
strings.toString())
|
strings.toString())
|
||||||
|
@ -565,7 +565,7 @@ public class OperationsMenuController extends BaseController {
|
|||||||
ApiUtils.getConversationApiVersion(currentUser, new int[] {ApiUtils.APIv4, 1});
|
ApiUtils.getConversationApiVersion(currentUser, new int[] {ApiUtils.APIv4, 1});
|
||||||
ApiUtils.getCallApiVersion(currentUser, new int[] {ApiUtils.APIv4, 1});
|
ApiUtils.getCallApiVersion(currentUser, new int[] {ApiUtils.APIv4, 1});
|
||||||
ApiUtils.getChatApiVersion(currentUser, new int[] {1});
|
ApiUtils.getChatApiVersion(currentUser, new int[] {1});
|
||||||
ApiUtils.getSignalingApiVersion(currentUser, new int[] {2, 1});
|
ApiUtils.getSignalingApiVersion(currentUser, new int[] {ApiUtils.APIv3, 2, 1});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void inviteUsersToAConversation() {
|
private void inviteUsersToAConversation() {
|
||||||
|
@ -90,7 +90,7 @@ public class SignalingSettingsWorker extends Worker {
|
|||||||
userEntity = userEntityList.get(i);
|
userEntity = userEntityList.get(i);
|
||||||
UserEntity finalUserEntity = userEntity;
|
UserEntity finalUserEntity = userEntity;
|
||||||
|
|
||||||
int apiVersion = ApiUtils.getSignalingApiVersion(finalUserEntity, new int[] {2, 1});
|
int apiVersion = ApiUtils.getSignalingApiVersion(finalUserEntity, new int[] {ApiUtils.APIv3, 2, 1});
|
||||||
|
|
||||||
ncApi.getSignalingSettings(ApiUtils.getCredentials(userEntity.getUsername(), userEntity.getToken()),
|
ncApi.getSignalingSettings(ApiUtils.getCredentials(userEntity.getUsername(), userEntity.getToken()),
|
||||||
ApiUtils.getUrlForSignalingSettings(apiVersion, userEntity.getBaseUrl()))
|
ApiUtils.getUrlForSignalingSettings(apiVersion, userEntity.getBaseUrl()))
|
||||||
|
@ -27,6 +27,7 @@ import java.util.List;
|
|||||||
|
|
||||||
@JsonObject
|
@JsonObject
|
||||||
public class IceServer {
|
public class IceServer {
|
||||||
|
@Deprecated
|
||||||
@JsonField(name = "url")
|
@JsonField(name = "url")
|
||||||
String url;
|
String url;
|
||||||
|
|
||||||
@ -39,6 +40,7 @@ public class IceServer {
|
|||||||
@JsonField(name = "credential")
|
@JsonField(name = "credential")
|
||||||
String credential;
|
String credential;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public String getUrl() {
|
public String getUrl() {
|
||||||
return this.url;
|
return this.url;
|
||||||
}
|
}
|
||||||
|
@ -146,12 +146,19 @@ public class ApiUtils {
|
|||||||
|
|
||||||
public static int getSignalingApiVersion(UserEntity capabilities, int[] versions) throws NoSupportedApiException {
|
public static int getSignalingApiVersion(UserEntity capabilities, int[] versions) throws NoSupportedApiException {
|
||||||
for (int version : versions) {
|
for (int version : versions) {
|
||||||
if (version == 2 && capabilities.hasSpreedFeatureCapability("sip-support")) {
|
if (capabilities.hasSpreedFeatureCapability("signaling-v" + version)) {
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (version == 1) {
|
if (version == 2 &&
|
||||||
// Has no capability, we just assume it is always there for now.
|
capabilities.hasSpreedFeatureCapability("sip-support") &&
|
||||||
|
!capabilities.hasSpreedFeatureCapability("signaling-v3")) {
|
||||||
|
return version;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (version == 1 &&
|
||||||
|
!capabilities.hasSpreedFeatureCapability("signaling-v3")) {
|
||||||
|
// Has no capability, we just assume it is always there when there is no v3 or later
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -101,7 +101,7 @@ public class WebSocketConnectionHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
HelloOverallWebSocketMessage getAssembledHelloModel(UserEntity userEntity, String ticket) {
|
HelloOverallWebSocketMessage getAssembledHelloModel(UserEntity userEntity, String ticket) {
|
||||||
int apiVersion = ApiUtils.getSignalingApiVersion(userEntity, new int[] {2, 1});
|
int apiVersion = ApiUtils.getSignalingApiVersion(userEntity, new int[] {ApiUtils.APIv3, 2, 1});
|
||||||
|
|
||||||
HelloOverallWebSocketMessage helloOverallWebSocketMessage = new HelloOverallWebSocketMessage();
|
HelloOverallWebSocketMessage helloOverallWebSocketMessage = new HelloOverallWebSocketMessage();
|
||||||
helloOverallWebSocketMessage.setType("hello");
|
helloOverallWebSocketMessage.setType("hello");
|
||||||
|
Loading…
Reference in New Issue
Block a user