import audio, {PlayStatus, TriggerAudioListener} from "$utils/tool/audio";

import popup from "$utils/tool/popup";

import personalDetail, {OpenType} from '$utils/control/personal-detail';

export default <LibMixins>{

    computed:{

        price(){

            if (this.item.price) {

                let price = parseFloat(parseFloat(this.item.price).toFixed(2));

                if (Math.floor(price) === price) {
                    return Math.floor(price);
                } else {
                    return  price;
                }

            } else {
                return 0;
            }

        },

        row(){
            return Math.floor(this.index / this.nth)
        },

        rowLast(){
            return (this.index + 1) % this.nth === 0;
        },

        rowStart(){
            return this.index % this.nth === 0;
        }

    },

    data(){
        return {
            play: false
        }
    },

    methods:{

        setPlayStatus(status:boolean){
            if (this.play !== status) {
                this.play = status;
            }
        },

        triggerPlay(){

            if (this.play) {
                audio.paused();
            } else {
                if (this.item.sound) {
                    audio.setSrc(this.item.sound).addListener(TriggerAudioListener.fail, (data)=> {
                        this.setPlayStatus(false);
                        return data.message && popup.$toast(data.message);
                    })
                        .addListener(TriggerAudioListener.clear, (data)=> {
                            this.setPlayStatus(false);
                        })
                        .addListener(TriggerAudioListener.status, (status)=> {
                            if (status === PlayStatus.playBefore || status === PlayStatus.play) {
                                this.setPlayStatus(true);
                            } else if (status === PlayStatus.playFail || status === PlayStatus.pause){
                                this.setPlayStatus(false);
                            }
                        }).replay()
                }
            }

        },

        triggerRoomDetail(){
          if (this.item.stay_roominfo) {
              return personalDetail.openDetail(this.item.stay_roominfo,OpenType.room);
          } else {
              return this.triggerDetail();
          }
        },

        triggerDetail(){

            return personalDetail.openDetail({
                uid: this.item.uid,
                pid: this.item.pid
            });
            // if (!user.verificationLogin()) return;
            //
            // this.clearTargetDetail();
            //
            // popup.$loading({
            //     title:'获取中',
            //     delay:1000
            // });
            //
            // Promise.all([this.getPlayInfo(),this.getPlayList(),this.getDetail()]).then(([info,playData,detail])=>{
            //     this.clearTargetDetail();
            //
            //     playData = playData.data.palyer_game_list || [];
            //
            //     let unshiftData;
            //
            //     let resultData = [];
            //
            //     playData.map((item,index)=>{
            //
            //         let resultItem = {
            //             label: item.game_name,
            //             slot: 'tab-'+index,
            //             pid: item.pid,
            //             price: item.price
            //         }
            //
            //         if (item.pid === this.item.pid) {
            //             unshiftData = resultItem;
            //         } else {
            //             resultData.push(resultItem);
            //         }
            //
            //     });
            //
            //     unshiftData && resultData.unshift(unshiftData);
            //
            //     info = info.data || {};
            //
            //     info.gameList = resultData;
            //
            //     if (detail) {
            //         info.gameInfo = {
            //             [this.item.pid]:detail
            //         }
            //     }
            //
            //
            //     // info
            //     if (!info.images) {
            //         info.images = [this.item.cover_image];
            //     } else {
            //         info.images = info.images.split(',');
            //     }
            //
            //     popup.$popup.open(PopupExportComponent.detail,{
            //         option: info
            //     });
            //
            // }).catch(()=> this.clearTargetDetail('服务繁忙'));

        },

        // clearTargetDetail(fail?:string){
        //   popup.hideLoading();
        //   if (fail) {
        //       popup.$toast(fail);
        //   }
        //
        // },
        //
        // // 获取陪玩基本信息
        // getPlayInfo() {
        //     return this.$request({
        //         url:'hxuser/get_base_user_info',
        //         data:{
        //             uid: this.item.uid
        //         },
        //         cache:{
        //             type: InstructionsCacheType.memory,
        //             id: 'get_base_user_info-'+this.item.uid
        //         },
        //         token:true
        //     });
        // },
        //
        // // 获取陪玩下的游戏列表
        // getPlayList(){
        //     return this.$request({
        //         url:'player/get_player_game_lists',
        //         data:{
        //             pid: this.item.pid
        //         },
        //         cache:{
        //             type: InstructionsCacheType.memory
        //         },
        //         token:true
        //     })
        // },
        //
        // // 获取陪玩当前游戏的详情
        // getDetail(){
        //
        //     return new Promise((resolve)=>{
        //         this.$request({
        //             url:'player/get_player_info',
        //             data:{
        //                 pid: this.item.pid
        //             },
        //             cache:{
        //                 type: InstructionsCacheType.memory
        //             },
        //             token:true
        //         }).then((data)=>{
        //             data = data.data || {};
        //
        //             data.game_info.skill_level_list.map((item)=>{
        //                 if (item.lid === data.lid) {
        //                     data.game_level_name = item.game_level_name;
        //                 }
        //             });
        //
        //             resolve(data);
        //
        //         }).catch(()=> resolve(undefined));
        //     });
        // }

    },

    beforeUnmount() {
        this.play && audio.destroy();
    }

}
