AudioHomePresenterImpl.kt 5.78 KB
Newer Older
洪国微 committed
1 2 3 4 5
package com.ydl.audioim.presenter

import com.ydl.audioim.BuildConfig
import com.ydl.ydl_av.chat.config.YDLChatParam
import com.ydl.audioim.contract.IAudioHomeActivityContract
6
import com.ydl.audioim.http.command.*
洪国微 committed
7 8 9
import com.ydl.audioim.model.AudioHomeModelImpl
import com.ydl.ydlcommon.mvp.base.BasePresenter
import com.ydl.ydlcommon.router.YdlCommonRouterManager
10
import com.ydl.ydlcommon.utils.LogUtil
洪国微 committed
11 12 13 14 15 16 17 18 19 20 21 22
import com.ydl.ydlcommon.utils.remind.ToastHelper
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers

/**
 * @author jiucheng
 * @描述:
 * @Copyright Copyright (c) 2018
 * @Company 壹点灵
 * @date 2018/10/30
 */
class AudioHomePresenterImpl : BasePresenter<IAudioHomeActivityContract.View, IAudioHomeActivityContract.Model>(), IAudioHomeActivityContract.Presenter {
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
//    override fun connectStart(param: ConnectStartCommand) {
//        mModel.connectStart(param)
//                .subscribeOn(Schedulers.io())
//                .observeOn(AndroidSchedulers.mainThread())
//                .doOnSubscribe {
//
//                }
//                .doAfterTerminate {
////                    view.dismissProgressView()
//                }
//                .subscribe({
////                    if (isSwitchAxb) {
////                        //切换axb:跳到拨号界面
////                        view.dialPhone()
////                    }
//                }, { e ->
//                    LogUtil.e(e.message)
//                })
//    }
洪国微 committed
42

43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
//    override fun connectFinish(param: ConnectFinishCommand) {
//        mModel.connectFinish(param)
//                .subscribeOn(Schedulers.io())
//                .observeOn(AndroidSchedulers.mainThread())
//                .doOnSubscribe {
//                    //通知服务端专家已经接通时,此时用户已在界面通话中,不需要弹进度条
//                    mView.showProgressView()
//                }
//                .doAfterTerminate {
//                    mView.dismissProgressView()
//                }
//                .subscribe({
////                    if (isSwitchAxb) {
////                        //切换axb:跳到拨号界面
////                        view.dialPhone()
////                    }
//                    //挂断逻辑:不管接口调用成功与否,都关闭界面
//                    mView.finishActivity()
//                }, { e ->
//                    LogUtil.e(e.message)
//                    //挂断逻辑:不管接口调用成功与否,都关闭界面
//                    mView.finishActivity()
//                })
//    }
洪国微 committed
67

68 69 70 71 72 73 74 75 76 77 78 79 80 81
    override fun connectException(param: ConnectExceptionCommand) {
        mModel.connectException(param)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .doOnSubscribe {
                }
                .doAfterTerminate {
                }
                .subscribe({
                }, { e ->
                    LogUtil.e(e.message)
                })
    }

洪国微 committed
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
    /**
     * 登录声网
     */
    override fun loginChatNet(signalingToken: String) {
        mView.showProgressView()
        // appId:应用id
        // account:uid
        // token :由 App ID 和 App Certificate 生成的 SignalingToken (如果不使用token可以设为字符串 _no_need_token)
        // uid:固定填 0
        // deviceID:暂时无用,设置为空
        // retry_time_in_s:登录重试时间,默认为 30 秒
        // retry_count:登录重试次数,默认为 3 次
        val ydlChtat = YDLChatParam()
        ydlChtat.appId = BuildConfig.AGORA_APPID
        ydlChtat.account = YdlCommonRouterManager.getYdlCommonRoute().getUid().toString()
        ydlChtat.token = signalingToken
        ydlChtat.uid = 0
        ydlChtat.deviceID = ""
        ydlChtat.retry_time_in_s = 30
        ydlChtat.retry_count = 3

//        YDLChartManager.instance!!.getChatApi().login(ydlChtat)
    }

    /**
     * 获取axb电话
     */
    override fun getAXBPhone(cmd: ConnectCommand) {
        mModel.getAXBPhone(cmd)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .doOnSubscribe { mView.showProgressView() }
                .doAfterTerminate { mView.dismissProgressView() }
                .subscribe({
                    if ("200".equals(it.code)){
                        if(0==it.data?.dialDetail?.dialStatus?:-1){
                            //连接成功
                            if(it.data?.dialDetail?.callConnectType?:-1==1){
                                //axb
                                mView.switchAXBResponse(it.data?.dialDetail?.phoneNu?:"")
                            }else{
                                ToastHelper.show(it.data?.dialDetail?.dialReason?:"连接失败")
                            }
                        }else{
                            ToastHelper.show(it.data?.dialDetail?.dialReason?:"连接失败")
                        }
                    }else{
                        ToastHelper.show(it.data?.dialDetail?.dialReason?:"连接失败")
                    }
                }, { e ->
                    LogUtil.d(e.message)
                })
    }

    /**
     * 通知服务端发送推送
     */
    override fun noticeServerPush(param: NoticePushCommand) {
        mModel.noticeServerPush(param)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe({
                    if (it.code == 200) {
//TODO
                    } else {
                        LogUtil.e(it.msg)
                    }
                }, { e ->
                    LogUtil.e(e.message)
                })
    }


    override fun createModel(): IAudioHomeActivityContract.Model {
        return AudioHomeModelImpl()
    }
}