|
|
@@ -4,6 +4,7 @@ import android.content.Intent
|
|
|
import com.adealink.frame.aab.util.getCompatString
|
|
|
import com.adealink.frame.base.IError
|
|
|
import com.adealink.frame.base.Rlt
|
|
|
+import com.adealink.frame.coroutine.dispatcher.Dispatcher
|
|
|
import com.adealink.frame.data.json.froJsonErrorNull
|
|
|
import com.adealink.frame.data.json.toJsonErrorNull
|
|
|
import com.adealink.frame.frame.BaseFrame
|
|
|
@@ -31,6 +32,7 @@ import com.adealink.weparty.call.datasource.remote.CallSocketService
|
|
|
import com.adealink.weparty.call.util.debugToast
|
|
|
import com.adealink.weparty.call.util.getRoomId
|
|
|
import com.adealink.weparty.commonui.toast.util.getFailedMsg
|
|
|
+import com.adealink.weparty.commonui.toast.util.showToast
|
|
|
import com.adealink.weparty.media.MediaType
|
|
|
import com.adealink.weparty.module.account.util.isUidValid
|
|
|
import com.adealink.weparty.module.call.Call
|
|
|
@@ -165,8 +167,17 @@ class CallManager : BaseFrame<ICallListener>(), ICallManager {
|
|
|
|
|
|
override fun onError(errCode: Int, errMsg: String?) {
|
|
|
callback?.onError(errCode, errMsg)
|
|
|
+ //处理媒体冲突不需要提示
|
|
|
+ if (errCode != CALL_ERROR_MEDIA_CONFLICT_CANCEL) {
|
|
|
+ showToast(
|
|
|
+ errMsg ?: getCompatString(
|
|
|
+ com.adealink.weparty.R.string.commonui_error_msg,
|
|
|
+ errMsg ?: getCompatString(com.adealink.weparty.R.string.common_failed),
|
|
|
+ errCode
|
|
|
+ )
|
|
|
+ )
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
if (TUICallState.instance.selfUser.get().isCalling()) {
|
|
|
@@ -193,7 +204,7 @@ class CallManager : BaseFrame<ICallListener>(), ICallManager {
|
|
|
)
|
|
|
if (conflictRlt is Rlt.Failed) {
|
|
|
Log.e(TAG_CALL_FLOW, "call fail, for media conflict fail")
|
|
|
- callActionCallback.onError(CALL_ERROR_MEDIA_CONFLICT_CANCEL, "")
|
|
|
+ callActionCallback.onError(CALL_ERROR_MEDIA_CONFLICT_CANCEL, null)
|
|
|
return@launch
|
|
|
}
|
|
|
|
|
|
@@ -201,7 +212,7 @@ class CallManager : BaseFrame<ICallListener>(), ICallManager {
|
|
|
val permissionRlt = requestPermission(true, mediaType)
|
|
|
if (permissionRlt is Rlt.Failed) {
|
|
|
Log.e(TAG_CALL_FLOW, "call fail, for permission denied")
|
|
|
- callActionCallback.onError(TUICallDefine.ERROR_PERMISSION_DENIED, "")
|
|
|
+ callActionCallback.onError(TUICallDefine.ERROR_PERMISSION_DENIED, getCompatString(R.string.call_permission_grant_fail))
|
|
|
return@launch
|
|
|
}
|
|
|
|
|
|
@@ -262,6 +273,16 @@ class CallManager : BaseFrame<ICallListener>(), ICallManager {
|
|
|
override fun onError(errCode: Int, errMsg: String?) {
|
|
|
EngineManager.instance.reject(null)
|
|
|
callback?.onError(errCode, errMsg)
|
|
|
+ //处理媒体冲突不需要提示
|
|
|
+ if (errCode != CALL_ERROR_MEDIA_CONFLICT_CANCEL) {
|
|
|
+ showToast(
|
|
|
+ errMsg ?: getCompatString(
|
|
|
+ com.adealink.weparty.R.string.commonui_error_msg,
|
|
|
+ errMsg ?: getCompatString(com.adealink.weparty.R.string.common_failed),
|
|
|
+ errCode
|
|
|
+ )
|
|
|
+ )
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -307,7 +328,7 @@ class CallManager : BaseFrame<ICallListener>(), ICallManager {
|
|
|
val permissionRlt = requestPermission(false, mediaType)
|
|
|
if (permissionRlt is Rlt.Failed) {
|
|
|
Log.e(TAG_CALL_FLOW, "accept fail, permission denied")
|
|
|
- acceptCallback.onError(TUICallDefine.ERROR_PERMISSION_DENIED, "")
|
|
|
+ acceptCallback.onError(TUICallDefine.ERROR_PERMISSION_DENIED, getCompatString(R.string.call_permission_grant_fail))
|
|
|
return@launch
|
|
|
}
|
|
|
|
|
|
@@ -349,34 +370,36 @@ class CallManager : BaseFrame<ICallListener>(), ICallManager {
|
|
|
}
|
|
|
|
|
|
override suspend fun requestPermission(isCaller: Boolean, mediaType: TUICallDefine.MediaType): Rlt<Any> {
|
|
|
- return suspendCancellableCoroutine { continuation ->
|
|
|
- PermissionRequest.requestPermissions(AppUtil.appContext, mediaType, object : PermissionCallback() {
|
|
|
- override fun onGranted() {
|
|
|
- //主叫直接返回结果
|
|
|
- if (isCaller) {
|
|
|
- if (continuation.isActive) {
|
|
|
- continuation.resume(Rlt.Success(Any()), null)
|
|
|
+ return withContext(Dispatcher.UI) {
|
|
|
+ suspendCancellableCoroutine { continuation ->
|
|
|
+ PermissionRequest.requestPermissions(AppUtil.appContext, mediaType, object : PermissionCallback() {
|
|
|
+ override fun onGranted() {
|
|
|
+ //主叫直接返回结果
|
|
|
+ if (isCaller) {
|
|
|
+ if (continuation.isActive) {
|
|
|
+ continuation.resume(Rlt.Success(Any()), null)
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //被叫需要检查当前呼叫状态
|
|
|
+ if (TUICallState.instance.selfUser.get().callStatus.get() == TUICallDefine.Status.None) {
|
|
|
+ if (continuation.isActive) {
|
|
|
+ continuation.resume(Rlt.Failed(IError()), null)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (continuation.isActive) {
|
|
|
+ continuation.resume(Rlt.Success(Any()), null)
|
|
|
+ }
|
|
|
}
|
|
|
- return
|
|
|
}
|
|
|
- //被叫需要检查当前呼叫状态
|
|
|
- if (TUICallState.instance.selfUser.get().callStatus.get() == TUICallDefine.Status.None) {
|
|
|
+
|
|
|
+ override fun onDenied() {
|
|
|
if (continuation.isActive) {
|
|
|
continuation.resume(Rlt.Failed(IError()), null)
|
|
|
}
|
|
|
- } else {
|
|
|
- if (continuation.isActive) {
|
|
|
- continuation.resume(Rlt.Success(Any()), null)
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- override fun onDenied() {
|
|
|
- if (continuation.isActive) {
|
|
|
- continuation.resume(Rlt.Failed(IError()), null)
|
|
|
}
|
|
|
- }
|
|
|
- })
|
|
|
+ })
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|