mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-20 12:09:45 +01:00
Merge pull request #1229 from nextcloud/feature/apiv4/calls
[apiv4] ☎️ Calls
This commit is contained in:
commit
90ad596f90
@ -70,7 +70,8 @@ public class UserItem extends AbstractFlexibleItem<UserItem.UserItemViewHolder>
|
||||
public boolean equals(Object o) {
|
||||
if (o instanceof UserItem) {
|
||||
UserItem inItem = (UserItem) o;
|
||||
return participant.getUserId().equals(inItem.getModel().getUserId());
|
||||
return participant.getActorType() == inItem.getModel().getActorType() &&
|
||||
participant.getActorId().equals(inItem.getModel().getActorId());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -177,7 +178,7 @@ public class UserItem extends AbstractFlexibleItem<UserItem.UserItemViewHolder>
|
||||
.setOldController(holder.simpleDraweeView.getController())
|
||||
.setAutoPlayAnimations(true)
|
||||
.setImageRequest(DisplayUtils.getImageRequestForUrl(ApiUtils.getUrlForAvatarWithName(userEntity.getBaseUrl(),
|
||||
participant.getUserId(), R.dimen.avatar_size), null))
|
||||
participant.getActorId(), R.dimen.avatar_size), null))
|
||||
.build();
|
||||
holder.simpleDraweeView.setController(draweeController);
|
||||
}
|
||||
@ -278,7 +279,7 @@ public class UserItem extends AbstractFlexibleItem<UserItem.UserItemViewHolder>
|
||||
public boolean filter(String constraint) {
|
||||
return participant.getDisplayName() != null &&
|
||||
(Pattern.compile(constraint, Pattern.CASE_INSENSITIVE | Pattern.LITERAL).matcher(participant.getDisplayName().trim()).find() ||
|
||||
Pattern.compile(constraint, Pattern.CASE_INSENSITIVE | Pattern.LITERAL).matcher(participant.getUserId().trim()).find());
|
||||
Pattern.compile(constraint, Pattern.CASE_INSENSITIVE | Pattern.LITERAL).matcher(participant.getActorId().trim()).find());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1273,7 +1273,7 @@ public class CallController extends BaseController {
|
||||
inCallFlag = (int) Participant.ParticipantFlags.IN_CALL_WITH_AUDIO_AND_VIDEO.getValue();
|
||||
}
|
||||
|
||||
int apiVersion = ApiUtils.getCallApiVersion(conversationUser, new int[] {1});
|
||||
int apiVersion = ApiUtils.getCallApiVersion(conversationUser, new int[] {ApiUtils.APIv4, 1});
|
||||
|
||||
ncApi.joinCall(credentials, ApiUtils.getUrlForCall(apiVersion, baseUrl, roomToken), inCallFlag)
|
||||
.subscribeOn(Schedulers.io())
|
||||
@ -1558,7 +1558,7 @@ public class CallController extends BaseController {
|
||||
}
|
||||
|
||||
private void hangupNetworkCalls(boolean shutDownView) {
|
||||
int apiVersion = ApiUtils.getCallApiVersion(conversationUser, new int[] {1});
|
||||
int apiVersion = ApiUtils.getCallApiVersion(conversationUser, new int[] {ApiUtils.APIv4, 1});
|
||||
|
||||
ncApi.leaveCall(credentials, ApiUtils.getUrlForCall(apiVersion, baseUrl, roomToken))
|
||||
.subscribeOn(Schedulers.io())
|
||||
@ -1686,7 +1686,7 @@ public class CallController extends BaseController {
|
||||
|
||||
private void getPeersForCall() {
|
||||
Log.d(TAG, "getPeersForCall");
|
||||
int apiVersion = ApiUtils.getCallApiVersion(conversationUser, new int[] {1});
|
||||
int apiVersion = ApiUtils.getCallApiVersion(conversationUser, new int[] {ApiUtils.APIv4, 1});
|
||||
|
||||
ncApi.getPeersForCall(credentials, ApiUtils.getUrlForCall(apiVersion, baseUrl, roomToken))
|
||||
.subscribeOn(Schedulers.io())
|
||||
@ -1866,15 +1866,21 @@ public class CallController extends BaseController {
|
||||
}
|
||||
}
|
||||
} else if (peerConnectionEvent.getPeerConnectionEventType().equals(PeerConnectionEvent.PeerConnectionEventType.NICK_CHANGE)) {
|
||||
participantDisplayItems.get(sessionId).setNick(peerConnectionEvent.getNick());
|
||||
if (participantDisplayItems.get(sessionId) != null) {
|
||||
participantDisplayItems.get(sessionId).setNick(peerConnectionEvent.getNick());
|
||||
}
|
||||
participantsAdapter.notifyDataSetChanged();
|
||||
|
||||
} else if (peerConnectionEvent.getPeerConnectionEventType().equals(PeerConnectionEvent.PeerConnectionEventType.VIDEO_CHANGE) && !isVoiceOnlyCall) {
|
||||
participantDisplayItems.get(sessionId).setStreamEnabled(peerConnectionEvent.getChangeValue());
|
||||
if (participantDisplayItems.get(sessionId) != null) {
|
||||
participantDisplayItems.get(sessionId).setStreamEnabled(peerConnectionEvent.getChangeValue());
|
||||
}
|
||||
participantsAdapter.notifyDataSetChanged();
|
||||
|
||||
} else if (peerConnectionEvent.getPeerConnectionEventType().equals(PeerConnectionEvent.PeerConnectionEventType.AUDIO_CHANGE)) {
|
||||
participantDisplayItems.get(sessionId).setAudioEnabled(peerConnectionEvent.getChangeValue());
|
||||
if (participantDisplayItems.get(sessionId) != null) {
|
||||
participantDisplayItems.get(sessionId).setAudioEnabled(peerConnectionEvent.getChangeValue());
|
||||
}
|
||||
participantsAdapter.notifyDataSetChanged();
|
||||
|
||||
} else if (peerConnectionEvent.getPeerConnectionEventType().equals(PeerConnectionEvent.PeerConnectionEventType.PUBLISHER_FAILED)) {
|
||||
@ -2044,11 +2050,11 @@ public class CallController extends BaseController {
|
||||
nick = getPeerConnectionWrapperForSessionIdAndType(session, videoStreamType, false).getNick();
|
||||
}
|
||||
|
||||
String userId;
|
||||
String userId = "";
|
||||
if (hasMCU) {
|
||||
userId = webSocketClient.getUserIdForSession(session);
|
||||
} else {
|
||||
userId = participantMap.get(session).getUserId();
|
||||
} else if (participantMap.get(session).getActorType() == Participant.ActorType.USERS) {
|
||||
userId = participantMap.get(session).getActorId();
|
||||
}
|
||||
|
||||
String urlForAvatar;
|
||||
|
@ -209,7 +209,7 @@ public class CallNotificationController extends BaseController {
|
||||
}
|
||||
|
||||
private void checkIfAnyParticipantsRemainInRoom() {
|
||||
int apiVersion = ApiUtils.getCallApiVersion(userBeingCalled, new int[] {1});
|
||||
int apiVersion = ApiUtils.getCallApiVersion(userBeingCalled, new int[] {ApiUtils.APIv4, 1});
|
||||
|
||||
ncApi.getPeersForCall(credentials, ApiUtils.getUrlForCall(apiVersion, userBeingCalled.getBaseUrl(),
|
||||
currentConversation.getToken()))
|
||||
@ -230,7 +230,8 @@ public class CallNotificationController extends BaseController {
|
||||
|
||||
if (hasParticipantsInCall) {
|
||||
for (Participant participant : participantList) {
|
||||
if (participant.getUserId().equals(userBeingCalled.getUserId())) {
|
||||
if (participant.getActorType() == Participant.ActorType.USERS &&
|
||||
participant.getActorId().equals(userBeingCalled.getUserId())) {
|
||||
inCallOnDifferentDevice = true;
|
||||
break;
|
||||
}
|
||||
|
@ -848,7 +848,7 @@ public class ContactsController extends BaseController implements SearchView.OnQ
|
||||
RetrofitBucket retrofitBucket = ApiUtils.getRetrofitBucketForCreateRoom(apiVersion,
|
||||
currentUser.getBaseUrl(),
|
||||
roomType,
|
||||
userItem.getModel().getUserId(),
|
||||
userItem.getModel().getActorId(),
|
||||
null);
|
||||
|
||||
ncApi.createRoom(credentials,
|
||||
@ -895,15 +895,15 @@ public class ContactsController extends BaseController implements SearchView.OnQ
|
||||
|
||||
if ("groups".equals(participant.getSource())) {
|
||||
if (participant.isSelected()) {
|
||||
selectedGroupIds.add(participant.getUserId());
|
||||
selectedGroupIds.add(participant.getActorId());
|
||||
} else {
|
||||
selectedGroupIds.remove(participant.getUserId());
|
||||
selectedGroupIds.remove(participant.getActorId());
|
||||
}
|
||||
} else {
|
||||
if (participant.isSelected()) {
|
||||
selectedUserIds.add(participant.getUserId());
|
||||
selectedUserIds.add(participant.getActorId());
|
||||
} else {
|
||||
selectedUserIds.remove(participant.getUserId());
|
||||
selectedUserIds.remove(participant.getActorId());
|
||||
}
|
||||
}
|
||||
|
||||
@ -916,10 +916,11 @@ public class ContactsController extends BaseController implements SearchView.OnQ
|
||||
Participant internalParticipant;
|
||||
for (int i = 0; i < currentItems.size(); i++) {
|
||||
internalParticipant = currentItems.get(i).getModel();
|
||||
if (internalParticipant.getUserId().equals(participant.getUserId()) &&
|
||||
"groups".equals(internalParticipant.getSource()) && internalParticipant.isSelected()) {
|
||||
if (internalParticipant.getActorId().equals(participant.getActorId()) &&
|
||||
internalParticipant.getActorType() == Participant.ActorType.GROUPS &&
|
||||
internalParticipant.isSelected()) {
|
||||
internalParticipant.setSelected(false);
|
||||
selectedGroupIds.remove(internalParticipant.getUserId());
|
||||
selectedGroupIds.remove(internalParticipant.getActorId());
|
||||
}
|
||||
}
|
||||
|
||||
@ -959,9 +960,10 @@ public class ContactsController extends BaseController implements SearchView.OnQ
|
||||
for (int i = 0; i < currentItems.size(); i++) {
|
||||
if (currentItems.get(i) instanceof UserItem) {
|
||||
internalParticipant = ((UserItem) currentItems.get(i)).getModel();
|
||||
if ("groups".equals(internalParticipant.getSource()) && internalParticipant.isSelected()) {
|
||||
if (internalParticipant.getActorType() == Participant.ActorType.GROUPS &&
|
||||
internalParticipant.isSelected()) {
|
||||
internalParticipant.setSelected(false);
|
||||
selectedGroupIds.remove(internalParticipant.getUserId());
|
||||
selectedGroupIds.remove(internalParticipant.getActorId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -125,23 +125,10 @@ public class Participant {
|
||||
return attendeePin;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public String getUserId() {
|
||||
if (this.actorType != null && this.actorType == ActorType.USERS) {
|
||||
return this.actorId;
|
||||
}
|
||||
return this.userId;
|
||||
}
|
||||
|
||||
public ParticipantType getType() {
|
||||
return this.type;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
public String getDisplayName() {
|
||||
return this.displayName;
|
||||
}
|
||||
@ -159,11 +146,6 @@ public class Participant {
|
||||
return sessionIds;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public long getRoomId() {
|
||||
return this.roomId;
|
||||
}
|
||||
|
||||
public Object getInCall() {
|
||||
return this.inCall;
|
||||
}
|
||||
@ -176,11 +158,6 @@ public class Participant {
|
||||
return this.selected;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setUserId(String userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public void setAttendeeId(Long attendeeId) {
|
||||
this.attendeeId = attendeeId;
|
||||
}
|
||||
@ -201,11 +178,6 @@ public class Participant {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public void setDisplayName(String displayName) {
|
||||
this.displayName = displayName;
|
||||
}
|
||||
@ -219,11 +191,6 @@ public class Participant {
|
||||
this.sessionId = sessionId;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setRoomId(long roomId) {
|
||||
this.roomId = roomId;
|
||||
}
|
||||
|
||||
public void setInCall(Object inCall) {
|
||||
this.inCall = inCall;
|
||||
}
|
||||
|
@ -64,6 +64,9 @@ import okhttp3.WebSocket;
|
||||
import okhttp3.WebSocketListener;
|
||||
import okio.ByteString;
|
||||
|
||||
import static com.nextcloud.talk.models.json.participants.Participant.ActorType.GUESTS;
|
||||
import static com.nextcloud.talk.models.json.participants.Participant.ActorType.USERS;
|
||||
|
||||
@AutoInjector(NextcloudTalkApplication.class)
|
||||
public class MagicWebSocketInstance extends WebSocketListener {
|
||||
private static final String TAG = "MagicWebSocketInstance";
|
||||
@ -246,7 +249,14 @@ public class MagicWebSocketInstance extends WebSocketListener {
|
||||
internalHashMap = joinEventMap.get(i);
|
||||
HashMap<String, Object> userMap = (HashMap<String, Object>) internalHashMap.get("user");
|
||||
participant = new Participant();
|
||||
participant.setUserId((String) internalHashMap.get("userid"));
|
||||
String userId = (String) internalHashMap.get("userid");
|
||||
if (userId != null) {
|
||||
participant.setActorType(USERS);
|
||||
participant.setActorId(userId);
|
||||
} else {
|
||||
participant.setActorType(GUESTS);
|
||||
// FIXME seems to be not given by the HPB: participant.setActorId();
|
||||
}
|
||||
if (userMap != null) {
|
||||
// There is no "user" attribute for guest participants.
|
||||
participant.setDisplayName((String) userMap.get("displayname"));
|
||||
@ -399,16 +409,22 @@ public class MagicWebSocketInstance extends WebSocketListener {
|
||||
}
|
||||
|
||||
public String getDisplayNameForSession(String session) {
|
||||
if (usersHashMap.containsKey(session)) {
|
||||
return usersHashMap.get(session).getDisplayName();
|
||||
Participant participant = usersHashMap.get(session);
|
||||
if (participant != null) {
|
||||
if (participant.getDisplayName() != null) {
|
||||
return participant.getDisplayName();
|
||||
}
|
||||
}
|
||||
|
||||
return NextcloudTalkApplication.Companion.getSharedApplication().getString(R.string.nc_nick_guest);
|
||||
}
|
||||
|
||||
public String getUserIdForSession(String session) {
|
||||
if (usersHashMap.containsKey(session)) {
|
||||
return usersHashMap.get(session).getUserId();
|
||||
Participant participant = usersHashMap.get(session);
|
||||
if (participant != null) {
|
||||
if (participant.getActorType() == USERS) {
|
||||
return participant.getActorId();
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
|
Loading…
Reference in New Issue
Block a user