Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,10 @@ public void startConference(ConferenceDefine.StartConferenceParams startConferen
mViewModel.startConference(startConferenceParams, new ConferenceMainViewModel.GetConferenceInfoCallback() {
@Override
public void onSuccess(TUIRoomDefine.RoomInfo roomInfo) {
if (!isAdded()) {
Log.w(TAG, "startConference onSuccess but fragment not attached");
return;
}
Map<String, Object> param = new HashMap<>(3);
param.put(KEY_CONFERENCE_INFO, roomInfo);
param.put(KEY_CONFERENCE_ERROR, SUCCESS);
Expand All @@ -83,6 +87,10 @@ public void onSuccess(TUIRoomDefine.RoomInfo roomInfo) {

@Override
public void onError(TUIRoomDefine.RoomInfo roomInfo, TUICommonDefine.Error error, String message) {
if (!isAdded()) {
Log.w(TAG, "startConference onError but fragment not attached, error=" + error);
return;
}
onDismiss();
Map<String, Object> param = new HashMap<>(3);
param.put(KEY_CONFERENCE_INFO, roomInfo);
Expand All @@ -103,6 +111,10 @@ public void joinConference(ConferenceDefine.JoinConferenceParams joinConferenceP
mViewModel.joinConference(joinConferenceParams, new ConferenceMainViewModel.GetConferenceInfoCallback() {
@Override
public void onSuccess(TUIRoomDefine.RoomInfo roomInfo) {
if (!isAdded()) {
Log.w(TAG, "joinConference onSuccess but fragment not attached");
return;
}
Map<String, Object> param = new HashMap<>(3);
param.put(KEY_CONFERENCE_INFO, roomInfo);
param.put(KEY_CONFERENCE_ERROR, SUCCESS);
Expand All @@ -112,6 +124,10 @@ public void onSuccess(TUIRoomDefine.RoomInfo roomInfo) {

@Override
public void onError(TUIRoomDefine.RoomInfo roomInfo, TUICommonDefine.Error error, String message) {
if (!isAdded()) {
Log.w(TAG, "joinConference onError but fragment not attached, error=" + error);
return;
}
if (error == TUICommonDefine.Error.NEED_PASSWORD) {
popEnterPasswordView(joinConferenceParams);
} else {
Expand Down Expand Up @@ -139,7 +155,9 @@ public void onCancel() {
@Override
public void onConfirm(String password) {
if (TextUtils.isEmpty(password)) {
RoomToast.toastShortMessageCenter(getContext().getString(R.string.tuiroomkit_password_is_empty));
if (isAdded()) {
RoomToast.toastShortMessageCenter(getString(R.string.tuiroomkit_password_is_empty));
}
return;
}
mPasswordPopView.enableJoinRoomButton(false);
Expand All @@ -152,19 +170,31 @@ public void enterEncryptRoom(ConferenceDefine.JoinConferenceParams joinConferenc
mViewModel.joinEncryptRoom(joinConferenceParams, password, new ConferenceMainViewModel.GetConferenceInfoCallback() {
@Override
public void onSuccess(TUIRoomDefine.RoomInfo roomInfo) {
if (!isAdded()) {
Log.w(TAG, "joinEncryptRoom onSuccess but fragment not attached");
return;
}
Map<String, Object> param = new HashMap<>(3);
param.put(KEY_CONFERENCE_INFO, roomInfo);
param.put(KEY_CONFERENCE_ERROR, SUCCESS);
param.put(KEY_CONFERENCE_MESSAGE, "");
TUICore.notifyEvent(KEY_CONFERENCE, KEY_CONFERENCE_JOINED, param);
mPasswordPopView.dismiss();
if (mPasswordPopView != null) {
mPasswordPopView.dismiss();
}
}

@Override
public void onError(TUIRoomDefine.RoomInfo roomInfo, TUICommonDefine.Error error, String message) {
if (!isAdded()) {
Log.w(TAG, "joinEncryptRoom onError but fragment not attached, error=" + error);
return;
}
if (error == TUICommonDefine.Error.WRONG_PASSWORD) {
mPasswordPopView.enableJoinRoomButton(true);
RoomToast.toastShortMessageCenter(getContext().getString(R.string.tuiroomkit_room_password_error));
if (mPasswordPopView != null) {
mPasswordPopView.enableJoinRoomButton(true);
}
RoomToast.toastShortMessageCenter(getString(R.string.tuiroomkit_room_password_error));
} else {
Map<String, Object> param = new HashMap<>(3);
param.put(KEY_CONFERENCE_INFO, roomInfo);
Expand Down Expand Up @@ -279,6 +309,10 @@ public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) {
}

public void onDismiss() {
if (mActivity == null) {
Log.w(TAG, "onDismiss but activity already released");
return;
}
mActivity.finish();
release();
}
Expand Down Expand Up @@ -327,6 +361,10 @@ private void release() {
}

private String transErrorMessage(TUICommonDefine.Error error, String message) {
if (!isAdded()) {
Log.w(TAG, "transErrorMessage fragment not attached, error=" + error);
return message;
}
String errorMessage = "";
switch (error) {
case ROOM_ID_NOT_EXIST:
Expand Down Expand Up @@ -361,6 +399,10 @@ private String transErrorMessage(TUICommonDefine.Error error, String message) {
}

private void showErrorToast(TUICommonDefine.Error error) {
if (!isAdded()) {
Log.w(TAG, "showErrorToast fragment not attached, error=" + error);
return;
}
String errorMessage = "";
switch (error) {
case ROOM_ID_NOT_EXIST:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,19 @@ public UserViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType

@Override
public void onBindViewHolder(@NonNull UserViewHolder holder, int position) {
if (mUserList == null || position < 0 || position >= mUserList.size()) {
return;
}
UserState.UserInfo user = mUserList.get(position);
if (user == null || user.userId == null) {
return;
}
holder.bindData(user);
}

@Override
public int getItemCount() {
return mUserList.size();
return mUserList == null ? 0 : mUserList.size();
}

public static class UserViewHolder extends RecyclerView.ViewHolder {
Expand Down Expand Up @@ -109,7 +115,13 @@ public void onClick(View v) {
}

private boolean hasAbilityToManageUser(UserState.UserInfo user) {
if (user == null) {
return false;
}
UserState.UserInfo localUser = ConferenceController.sharedInstance().getUserState().selfInfo.get();
if (localUser == null) {
return false;
}
if (TextUtils.equals(localUser.userId, user.userId) || localUser.role.get() == TUIRoomDefine.Role.ROOM_OWNER) {
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,12 @@ private void notifyInRoomUserRemoved(UserState.UserInfo user) {

private void notifySeatUserInserted(String userId) {
if (mSelectedUserListType == ON_SEAT) {
mSelectedUserList.insert(mUserState.allUsers.find(new UserState.UserInfo(userId)), mUserListComparator);
UserState.UserInfo user = mUserState.allUsers.find(new UserState.UserInfo(userId));
if (user == null) {
Log.w(TAG, "notifySeatUserInserted ON_SEAT user not found in allUsers, userId=" + userId);
return;
}
mSelectedUserList.insert(user, mUserListComparator);
return;
}
if (mSelectedUserListType == OFF_SEAT) {
Expand All @@ -195,7 +200,12 @@ private void notifySeatUserRemoved(String userId) {
return;
}
if (mSelectedUserListType == OFF_SEAT) {
mSelectedUserList.insert(mUserState.allUsers.find(new UserState.UserInfo(userId)), mUserListComparator);
UserState.UserInfo user = mUserState.allUsers.find(new UserState.UserInfo(userId));
if (user == null) {
Log.w(TAG, "notifySeatUserRemoved OFF_SEAT user not found in allUsers, userId=" + userId);
return;
}
mSelectedUserList.insert(user, mUserListComparator);
}
}

Expand All @@ -218,6 +228,10 @@ private void notifyUserMediaStateChanged(String userId) {
return;
}
UserState.UserInfo user = mUserState.allUsers.find(new UserState.UserInfo(userId));
if (user == null) {
Log.w(TAG, "notifyUserMediaStateChanged user not found in allUsers, userId=" + userId);
return;
}
mSelectedUserList.move(user, mUserListComparator);
}

Expand Down Expand Up @@ -289,6 +303,9 @@ private List<UserState.UserInfo> filterUserOutRoom() {
List<UserState.UserInfo> userList = new LinkedList<>();
List<InvitationState.Invitation> invitationList = mInvitationState.invitationList.getList();
for (InvitationState.Invitation invitation : invitationList) {
if (invitation == null || invitation.invitee == null) {
continue;
}
if (!isContainsSearchWord(invitation.invitee.userName)) {
continue;
}
Expand Down