mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-20 03:59:35 +01:00
Merge pull request #1251 from nextcloud/bugfix/noid/use-the-stun-urls-array
Use the stun urls array
This commit is contained in:
commit
b2c53d5385
@ -445,12 +445,12 @@ public class CallController extends BaseController {
|
|||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe(new Observer<RoomsOverall>() {
|
.subscribe(new Observer<RoomsOverall>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSubscribe(Disposable d) {
|
public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) {
|
||||||
|
// unused atm
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNext(RoomsOverall roomsOverall) {
|
public void onNext(@io.reactivex.annotations.NonNull RoomsOverall roomsOverall) {
|
||||||
for (Conversation conversation : roomsOverall.getOcs().getData()) {
|
for (Conversation conversation : roomsOverall.getOcs().getData()) {
|
||||||
if (roomId.equals(conversation.getRoomId())) {
|
if (roomId.equals(conversation.getRoomId())) {
|
||||||
roomToken = conversation.getToken();
|
roomToken = conversation.getToken();
|
||||||
@ -462,13 +462,13 @@ public class CallController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(Throwable e) {
|
public void onError(@io.reactivex.annotations.NonNull Throwable e) {
|
||||||
|
// unused atm
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onComplete() {
|
public void onComplete() {
|
||||||
|
// unused atm
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -500,7 +500,6 @@ public class CallController extends BaseController {
|
|||||||
pipVideoView.setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FIT);
|
pipVideoView.setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FIT);
|
||||||
|
|
||||||
pipVideoView.setOnTouchListener(new SelfVideoTouchListener());
|
pipVideoView.setOnTouchListener(new SelfVideoTouchListener());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gridView.setOnTouchListener(new View.OnTouchListener() {
|
gridView.setOnTouchListener(new View.OnTouchListener() {
|
||||||
@ -942,17 +941,16 @@ public class CallController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isConnectionEstablished()) {
|
if (isConnectionEstablished() && magicPeerConnectionWrapperList != null) {
|
||||||
if (!hasMCU) {
|
if (!hasMCU) {
|
||||||
for (int i = 0; i < magicPeerConnectionWrapperList.size(); i++) {
|
for (MagicPeerConnectionWrapper magicPeerConnectionWrapper : magicPeerConnectionWrapperList) {
|
||||||
magicPeerConnectionWrapperList.get(i).sendChannelData(new DataChannelMessage(message));
|
magicPeerConnectionWrapper.sendChannelData(new DataChannelMessage(message));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < magicPeerConnectionWrapperList.size(); i++) {
|
for (MagicPeerConnectionWrapper magicPeerConnectionWrapper : magicPeerConnectionWrapperList) {
|
||||||
if (magicPeerConnectionWrapperList.get(i).getSessionId().equals(webSocketClient.getSessionId())) {
|
if (magicPeerConnectionWrapper.getSessionId().equals(webSocketClient.getSessionId())) {
|
||||||
magicPeerConnectionWrapperList.get(i).sendChannelData(new DataChannelMessage(message));
|
magicPeerConnectionWrapper.sendChannelData(new DataChannelMessage(message));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1095,7 +1093,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())
|
||||||
@ -1103,13 +1101,12 @@ public class CallController extends BaseController {
|
|||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe(new Observer<SignalingSettingsOverall>() {
|
.subscribe(new Observer<SignalingSettingsOverall>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSubscribe(Disposable d) {
|
public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) {
|
||||||
|
// unused atm
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNext(SignalingSettingsOverall signalingSettingsOverall) {
|
public void onNext(@io.reactivex.annotations.NonNull SignalingSettingsOverall signalingSettingsOverall) {
|
||||||
IceServer iceServer;
|
|
||||||
if (signalingSettingsOverall != null && signalingSettingsOverall.getOcs() != null &&
|
if (signalingSettingsOverall != null && signalingSettingsOverall.getOcs() != null &&
|
||||||
signalingSettingsOverall.getOcs().getSettings() != null) {
|
signalingSettingsOverall.getOcs().getSettings() != null) {
|
||||||
|
|
||||||
@ -1143,30 +1140,34 @@ public class CallController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (signalingSettingsOverall.getOcs().getSettings().getStunServers() != null) {
|
if (signalingSettingsOverall.getOcs().getSettings().getStunServers() != null) {
|
||||||
for (int i = 0; i < signalingSettingsOverall.getOcs().getSettings().getStunServers().size();
|
List<IceServer> stunServers =
|
||||||
i++) {
|
signalingSettingsOverall.getOcs().getSettings().getStunServers();
|
||||||
iceServer = signalingSettingsOverall.getOcs().getSettings().getStunServers().get(i);
|
if (apiVersion == ApiUtils.APIv3) {
|
||||||
if (TextUtils.isEmpty(iceServer.getUsername()) || TextUtils.isEmpty(iceServer
|
for (IceServer stunServer : stunServers) {
|
||||||
.getCredential())) {
|
if (stunServer.getUrls() != null) {
|
||||||
iceServers.add(new PeerConnection.IceServer(iceServer.getUrl()));
|
for (String url : stunServer.getUrls()) {
|
||||||
} else {
|
iceServers.add(new PeerConnection.IceServer(url));
|
||||||
iceServers.add(new PeerConnection.IceServer(iceServer.getUrl(),
|
}
|
||||||
iceServer.getUsername(), iceServer.getCredential()));
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (signalingSettingsOverall.getOcs().getSettings().getStunServers() != null) {
|
||||||
|
for (IceServer stunServer : stunServers) {
|
||||||
|
iceServers.add(new PeerConnection.IceServer(stunServer.getUrl()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (signalingSettingsOverall.getOcs().getSettings().getTurnServers() != null) {
|
if (signalingSettingsOverall.getOcs().getSettings().getTurnServers() != null) {
|
||||||
for (int i = 0; i < signalingSettingsOverall.getOcs().getSettings().getTurnServers().size();
|
List<IceServer> turnServers =
|
||||||
i++) {
|
signalingSettingsOverall.getOcs().getSettings().getTurnServers();
|
||||||
iceServer = signalingSettingsOverall.getOcs().getSettings().getTurnServers().get(i);
|
for (IceServer turnServer : turnServers) {
|
||||||
for (int j = 0; j < iceServer.getUrls().size(); j++) {
|
if (turnServer.getUrls() != null) {
|
||||||
if (TextUtils.isEmpty(iceServer.getUsername()) || TextUtils.isEmpty(iceServer
|
for (String url : turnServer.getUrls()) {
|
||||||
.getCredential())) {
|
iceServers.add(new PeerConnection.IceServer(
|
||||||
iceServers.add(new PeerConnection.IceServer(iceServer.getUrls().get(j)));
|
url, turnServer.getUsername(), turnServer.getCredential()
|
||||||
} else {
|
));
|
||||||
iceServers.add(new PeerConnection.IceServer(iceServer.getUrls().get(j),
|
|
||||||
iceServer.getUsername(), iceServer.getCredential()));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1177,13 +1178,13 @@ public class CallController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(Throwable e) {
|
public void onError(@io.reactivex.annotations.NonNull Throwable e) {
|
||||||
Log.e(TAG, e.getMessage(), e);
|
Log.e(TAG, e.getMessage(), e);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onComplete() {
|
public void onComplete() {
|
||||||
|
// unused atm
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -1195,12 +1196,12 @@ public class CallController extends BaseController {
|
|||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe(new Observer<CapabilitiesOverall>() {
|
.subscribe(new Observer<CapabilitiesOverall>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSubscribe(Disposable d) {
|
public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) {
|
||||||
|
// unused atm
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNext(CapabilitiesOverall capabilitiesOverall) {
|
public void onNext(@io.reactivex.annotations.NonNull CapabilitiesOverall capabilitiesOverall) {
|
||||||
// FIXME check for compatible Call API version
|
// FIXME check for compatible Call API version
|
||||||
if (hasExternalSignalingServer) {
|
if (hasExternalSignalingServer) {
|
||||||
setupAndInitiateWebSocketsConnection();
|
setupAndInitiateWebSocketsConnection();
|
||||||
@ -1210,13 +1211,13 @@ public class CallController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(Throwable e) {
|
public void onError(@io.reactivex.annotations.NonNull Throwable e) {
|
||||||
|
// unused atm
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onComplete() {
|
public void onComplete() {
|
||||||
|
// unused atm
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -1234,12 +1235,12 @@ public class CallController extends BaseController {
|
|||||||
.retry(3)
|
.retry(3)
|
||||||
.subscribe(new Observer<RoomOverall>() {
|
.subscribe(new Observer<RoomOverall>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSubscribe(Disposable d) {
|
public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) {
|
||||||
|
// unused atm
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNext(RoomOverall roomOverall) {
|
public void onNext(@io.reactivex.annotations.NonNull RoomOverall roomOverall) {
|
||||||
callSession = roomOverall.getOcs().getData().getSessionId();
|
callSession = roomOverall.getOcs().getData().getSessionId();
|
||||||
ApplicationWideCurrentRoomHolder.getInstance().setSession(callSession);
|
ApplicationWideCurrentRoomHolder.getInstance().setSession(callSession);
|
||||||
ApplicationWideCurrentRoomHolder.getInstance().setCurrentRoomId(roomId);
|
ApplicationWideCurrentRoomHolder.getInstance().setCurrentRoomId(roomId);
|
||||||
@ -1249,13 +1250,13 @@ public class CallController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(Throwable e) {
|
public void onError(@io.reactivex.annotations.NonNull Throwable e) {
|
||||||
|
// unused atm
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onComplete() {
|
public void onComplete() {
|
||||||
|
// unused atm
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -1288,26 +1289,31 @@ public class CallController extends BaseController {
|
|||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe(new Observer<GenericOverall>() {
|
.subscribe(new Observer<GenericOverall>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSubscribe(Disposable d) {
|
public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) {
|
||||||
|
// unused atm
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNext(GenericOverall genericOverall) {
|
public void onNext(@io.reactivex.annotations.NonNull GenericOverall genericOverall) {
|
||||||
if (!currentCallStatus.equals(CallStatus.LEAVING)) {
|
if (!currentCallStatus.equals(CallStatus.LEAVING)) {
|
||||||
setCallState(CallStatus.JOINED);
|
setCallState(CallStatus.JOINED);
|
||||||
|
|
||||||
ApplicationWideCurrentRoomHolder.getInstance().setInCall(true);
|
ApplicationWideCurrentRoomHolder.getInstance().setInCall(true);
|
||||||
|
|
||||||
if (!TextUtils.isEmpty(roomToken)) {
|
if (!TextUtils.isEmpty(roomToken)) {
|
||||||
NotificationUtils.INSTANCE.cancelExistingNotificationsForRoom(getApplicationContext(), conversationUser, roomToken);
|
NotificationUtils.INSTANCE.cancelExistingNotificationsForRoom(getApplicationContext(),
|
||||||
|
conversationUser,
|
||||||
|
roomToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
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,
|
||||||
baseUrl, roomToken))
|
ApiUtils.getUrlForSignaling(apiVersion,
|
||||||
|
baseUrl,
|
||||||
|
roomToken))
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.repeatWhen(observable -> observable)
|
.repeatWhen(observable -> observable)
|
||||||
@ -1315,26 +1321,19 @@ public class CallController extends BaseController {
|
|||||||
.retry(3, observable -> isConnectionEstablished())
|
.retry(3, observable -> isConnectionEstablished())
|
||||||
.subscribe(new Observer<SignalingOverall>() {
|
.subscribe(new Observer<SignalingOverall>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSubscribe(Disposable d) {
|
public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) {
|
||||||
signalingDisposable = d;
|
signalingDisposable = d;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNext(SignalingOverall signalingOverall) {
|
public void onNext(
|
||||||
if (signalingOverall.getOcs().getSignalings() != null) {
|
@io.reactivex.annotations.NonNull
|
||||||
for (int i = 0; i < signalingOverall.getOcs().getSignalings().size(); i++) {
|
SignalingOverall signalingOverall) {
|
||||||
try {
|
receivedSignalingMessages(signalingOverall.getOcs().getSignalings());
|
||||||
receivedSignalingMessage(signalingOverall.getOcs().getSignalings().get(i));
|
|
||||||
} catch (IOException e) {
|
|
||||||
Log.e(TAG, "Failed to process received signaling" +
|
|
||||||
" message");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(Throwable e) {
|
public void onError(@io.reactivex.annotations.NonNull Throwable e) {
|
||||||
dispose(signalingDisposable);
|
dispose(signalingDisposable);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1343,19 +1342,18 @@ public class CallController extends BaseController {
|
|||||||
dispose(signalingDisposable);
|
dispose(signalingDisposable);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(Throwable e) {
|
public void onError(@io.reactivex.annotations.NonNull Throwable e) {
|
||||||
|
// unused atm
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onComplete() {
|
public void onComplete() {
|
||||||
|
// unused atm
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -1397,7 +1395,6 @@ public class CallController extends BaseController {
|
|||||||
} else {
|
} else {
|
||||||
initiateCall();
|
initiateCall();
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "roomJoined":
|
case "roomJoined":
|
||||||
@ -1409,14 +1406,19 @@ public class CallController extends BaseController {
|
|||||||
break;
|
break;
|
||||||
case "participantsUpdate":
|
case "participantsUpdate":
|
||||||
if (webSocketCommunicationEvent.getHashMap().get("roomToken").equals(roomToken)) {
|
if (webSocketCommunicationEvent.getHashMap().get("roomToken").equals(roomToken)) {
|
||||||
processUsersInRoom((List<HashMap<String, Object>>) webSocketClient.getJobWithId(Integer.valueOf(webSocketCommunicationEvent.getHashMap().get("jobId"))));
|
processUsersInRoom(
|
||||||
|
(List<HashMap<String, Object>>) webSocketClient
|
||||||
|
.getJobWithId(
|
||||||
|
Integer.valueOf(webSocketCommunicationEvent.getHashMap().get("jobId"))));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "signalingMessage":
|
case "signalingMessage":
|
||||||
processMessage((NCSignalingMessage) webSocketClient.getJobWithId(Integer.valueOf(webSocketCommunicationEvent.getHashMap().get("jobId"))));
|
processMessage((NCSignalingMessage) webSocketClient.getJobWithId(
|
||||||
|
Integer.valueOf(webSocketCommunicationEvent.getHashMap().get("jobId"))));
|
||||||
break;
|
break;
|
||||||
case "peerReadyForRequestingOffer":
|
case "peerReadyForRequestingOffer":
|
||||||
webSocketClient.requestOfferForSessionIdWithType(webSocketCommunicationEvent.getHashMap().get("sessionId"), "video");
|
webSocketClient.requestOfferForSessionIdWithType(
|
||||||
|
webSocketCommunicationEvent.getHashMap().get("sessionId"), "video");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1437,6 +1439,18 @@ public class CallController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void receivedSignalingMessages(@Nullable List<Signaling> signalingList) {
|
||||||
|
if (signalingList != null) {
|
||||||
|
for (Signaling signaling : signalingList) {
|
||||||
|
try {
|
||||||
|
receivedSignalingMessage(signaling);
|
||||||
|
} catch (IOException e) {
|
||||||
|
Log.e(TAG, "Failed to process received signaling message", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void receivedSignalingMessage(Signaling signaling) throws IOException {
|
private void receivedSignalingMessage(Signaling signaling) throws IOException {
|
||||||
String messageType = signaling.getType();
|
String messageType = signaling.getType();
|
||||||
|
|
||||||
@ -2000,7 +2014,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())
|
||||||
@ -2008,31 +2022,23 @@ public class CallController extends BaseController {
|
|||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.subscribe(new Observer<SignalingOverall>() {
|
.subscribe(new Observer<SignalingOverall>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSubscribe(Disposable d) {
|
public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) {
|
||||||
|
// unused atm
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNext(SignalingOverall signalingOverall) {
|
public void onNext(@io.reactivex.annotations.NonNull SignalingOverall signalingOverall) {
|
||||||
if (signalingOverall.getOcs().getSignalings() != null) {
|
receivedSignalingMessages(signalingOverall.getOcs().getSignalings());
|
||||||
for (int i = 0; i < signalingOverall.getOcs().getSignalings().size(); i++) {
|
|
||||||
try {
|
|
||||||
receivedSignalingMessage(signalingOverall.getOcs().getSignalings().get(i));
|
|
||||||
} catch (IOException e) {
|
|
||||||
Log.e(TAG, "", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(Throwable e) {
|
public void onError(@io.reactivex.annotations.NonNull Throwable e) {
|
||||||
Log.e(TAG, "", e);
|
Log.e(TAG, "", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onComplete() {
|
public void onComplete() {
|
||||||
|
// unused atm
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -385,8 +385,11 @@ public class CallNotificationController extends BaseController {
|
|||||||
avatarImageView.setVisibility(View.VISIBLE);
|
avatarImageView.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
ImageRequest imageRequest =
|
ImageRequest imageRequest =
|
||||||
DisplayUtils.getImageRequestForUrl(ApiUtils.getUrlForAvatarWithName(userBeingCalled.getBaseUrl(),
|
DisplayUtils.getImageRequestForUrl(
|
||||||
currentConversation.getName(), R.dimen.avatar_size_very_big), null);
|
ApiUtils.getUrlForAvatarWithName(userBeingCalled.getBaseUrl(),
|
||||||
|
currentConversation.getName(),
|
||||||
|
R.dimen.avatar_size_very_big),
|
||||||
|
null);
|
||||||
|
|
||||||
ImagePipeline imagePipeline = Fresco.getImagePipeline();
|
ImagePipeline imagePipeline = Fresco.getImagePipeline();
|
||||||
DataSource<CloseableReference<CloseableImage>> dataSource = imagePipeline.fetchDecodedImage(imageRequest, null);
|
DataSource<CloseableReference<CloseableImage>> dataSource = imagePipeline.fetchDecodedImage(imageRequest, null);
|
||||||
@ -399,11 +402,12 @@ public class CallNotificationController extends BaseController {
|
|||||||
true);
|
true);
|
||||||
|
|
||||||
if (getResources() != null) {
|
if (getResources() != null) {
|
||||||
incomingTextRelativeLayout.setBackground(getResources().getDrawable(R.drawable
|
incomingTextRelativeLayout.setBackground(
|
||||||
.incoming_gradient));
|
getResources().getDrawable(R.drawable.incoming_gradient));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (AvatarStatusCodeHolder.getInstance().getStatusCode() == 200 || AvatarStatusCodeHolder.getInstance().getStatusCode() == 0) {
|
if (AvatarStatusCodeHolder.getInstance().getStatusCode() == 200 ||
|
||||||
|
AvatarStatusCodeHolder.getInstance().getStatusCode() == 0) {
|
||||||
if (getActivity() != null) {
|
if (getActivity() != null) {
|
||||||
Bitmap backgroundBitmap = bitmap.copy(bitmap.getConfig(), true);
|
Bitmap backgroundBitmap = bitmap.copy(bitmap.getConfig(), true);
|
||||||
new BlurPostProcessor(5, getActivity()).process(backgroundBitmap);
|
new BlurPostProcessor(5, getActivity()).process(backgroundBitmap);
|
||||||
@ -425,6 +429,7 @@ public class CallNotificationController extends BaseController {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onFailureImpl(DataSource<CloseableReference<CloseableImage>> dataSource) {
|
protected void onFailureImpl(DataSource<CloseableReference<CloseableImage>> dataSource) {
|
||||||
|
// unused atm
|
||||||
}
|
}
|
||||||
}, UiThreadImmediateExecutorService.getInstance());
|
}, UiThreadImmediateExecutorService.getInstance());
|
||||||
|
|
||||||
@ -467,10 +472,11 @@ public class CallNotificationController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void dispose() {
|
private void dispose() {
|
||||||
Disposable disposable;
|
if (disposablesList != null) {
|
||||||
for (int i = 0; i < disposablesList.size(); i++) {
|
for (Disposable disposable : disposablesList) {
|
||||||
if (!(disposable = disposablesList.get(i)).isDisposed()) {
|
if (!disposable.isDisposed()) {
|
||||||
disposable.dispose();
|
disposable.dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -486,7 +492,8 @@ public class CallNotificationController extends BaseController {
|
|||||||
"/raw/librem_by_feandesign_call");
|
"/raw/librem_by_feandesign_call");
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
RingtoneSettings ringtoneSettings = LoganSquare.parse(callRingtonePreferenceString, RingtoneSettings.class);
|
RingtoneSettings ringtoneSettings = LoganSquare.parse(
|
||||||
|
callRingtonePreferenceString, RingtoneSettings.class);
|
||||||
ringtoneUri = ringtoneSettings.getRingtoneUri();
|
ringtoneUri = ringtoneSettings.getRingtoneUri();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
Log.e(TAG, "Failed to parse ringtone settings");
|
Log.e(TAG, "Failed to parse ringtone settings");
|
||||||
@ -501,8 +508,11 @@ public class CallNotificationController extends BaseController {
|
|||||||
mediaPlayer.setDataSource(getActivity(), ringtoneUri);
|
mediaPlayer.setDataSource(getActivity(), ringtoneUri);
|
||||||
|
|
||||||
mediaPlayer.setLooping(true);
|
mediaPlayer.setLooping(true);
|
||||||
AudioAttributes audioAttributes = new AudioAttributes.Builder().setContentType(AudioAttributes
|
AudioAttributes audioAttributes = new AudioAttributes
|
||||||
.CONTENT_TYPE_SONIFICATION).setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE).build();
|
.Builder()
|
||||||
|
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
|
||||||
|
.setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)
|
||||||
|
.build();
|
||||||
mediaPlayer.setAudioAttributes(audioAttributes);
|
mediaPlayer.setAudioAttributes(audioAttributes);
|
||||||
|
|
||||||
mediaPlayer.setOnPreparedListener(mp -> mediaPlayer.start());
|
mediaPlayer.setOnPreparedListener(mp -> mediaPlayer.start());
|
||||||
|
@ -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");
|
||||||
|
@ -1 +1 @@
|
|||||||
465
|
458
|
Loading…
Reference in New Issue
Block a user