package com.ydl.audioim.contract

import com.ydl.audioim.bean.ConnectBean
import com.ydl.audioim.http.command.*
import com.ydl.ydlcommon.data.http.BaseAPIResponse
import com.ydl.ydlcommon.data.http.BaseResponse
import com.ydl.ydlcommon.mvp.base.IModel
import com.ydl.ydlcommon.mvp.base.IPresenter
import com.ydl.ydlcommon.mvp.base.IView
import io.reactivex.Observable

/**
 * @author jiucheng
 * @描述:声网倾诉首页约束类
 * @Copyright Copyright (c) 2018
 * @Company 壹点灵
 * @date 2018/10/30
 */
interface IAudioHomeActivityContract {
    interface View : IView {
        /**
         * 显示进度条
         */
        fun showProgressView()

        /**
         * 关闭进度条
         */
        fun dismissProgressView()


        /**
         *切换axb回调
         */
        fun switchAXBResponse(axbPhone: String)

        /**
         * 跳转拨号页面
         */
        fun dialPhone()
    }


    interface Presenter : IPresenter<View> {
        /**
         * 登录信令
         */
        fun loginChatNet(signalingToken: String)

        /**
         * 获取axb电话
         */
        fun getAXBPhone(cmd: ConnectCommand)



        /**
         * 通话开始（更新专家状态）
         * @param param 请求参数
         */
//        fun connectStart(param: ConnectStartCommand)

        /**
         * 通话结束（更新专家状态）
         * @param param 请求参数
         */
//        fun connectFinish(param: ConnectFinishCommand)


        /**
         * 通知服务端发送推送
         */
        fun noticeServerPush(cmd: NoticePushCommand)
    }


    interface Model : IModel {
        /**
         * 获取axb电话
         */
        fun getAXBPhone(cmd: ConnectCommand): Observable<BaseAPIResponse<ConnectBean>>

        /**
         * 通话开始回调（更新专家状态）
         */
//        fun connectStart(param: ConnectStartCommand): Observable<BaseAPIResponse<Any>>

        /**
         * 通话结束（更新专家状态）
         */
//        fun connectFinish(param: ConnectFinishCommand): Observable<BaseAPIResponse<Any>>

        /**
         * 通话异常
         */
        fun connectException(param: ConnectExceptionCommand): Observable<BaseAPIResponse<Any>>


        /**
         * 通知服务端发送推送
         */
        fun noticeServerPush(param: NoticePushCommand): Observable<BaseResponse<Any>>
    }
}