const Client = {
    // 获取系统信息
    getSystemInfo() {
        return new Promise(function(resolve, reject) {
            if (bridge) {
                bridge.get_system_info(function(returnValue) {
                    resolve(returnValue)
                })
            } else {
                reject('不是客户端')
            }
        })
    },
    // user.dat中进行数据操作
    deleteData(key) {
        return new Promise(function(resolve, reject) {
            // console.log('保存数据')
            if (bridge) {
                bridge.delete_data(key)
            } else {
                reject('不是客户端')
            }
        })
    },
    saveData(key, value) {
        return new Promise(function(resolve, reject) {
            // console.log('保存数据')
            if (bridge) {
                bridge.save_data(key, value)
            } else {
                reject('不是客户端')
            }
        })
    },
    getData(key) {
        return new Promise(function(resolve, reject) {
            // console.log('获取数据')
            if (bridge) {
                bridge.get_data(key, function(returnValue) {
                    resolve(returnValue)
                        // console.log(returnValue, 'resolve')
                })
            } else {
                reject('不是客户端')
            }
        })
    },
    // 读取配置文件字段值：我的文档\MiguGame\Settings.ini。
    getIniInt(key, default_value) {
        return new Promise(function(resolve, reject) {
            if (bridge) {
                bridge.get_ini_int(key, default_value, function(returnValue) {
                    // returnValue为整数值
                    resolve(returnValue)
                })
            } else {
                reject('不是客户端')
            }
        })
    },
    // 设置配置文件字段
    setIniInt(key, value) {
        return new Promise(function(resolve, reject) {
            if (bridge) {
                bridge.set_ini_int(key, value)
            } else {
                reject('不是客户端')
            }
        })
    },
    getIniStr(key, default_value) {
        return new Promise(function(resolve, reject) {
            if (bridge) {
                bridge.get_ini_str(key, default_value, function(returnValue) {
                    // returnValue为字符串值
                    resolve(returnValue)
                })
            } else {
                reject('不是客户端')
            }
        })
    },
    setIniStr(key, value) {
        return new Promise(function(resolve, reject) {
            if (bridge) {
                bridge.set_ini_str(key, value) // 只支持单行字符串，不支持引号、单引号
            } else {
                reject('不是客户端')
            }
        })
    },
    // 写配置文件字段值：客户端目录\MiguGame.ini。
    // 读取私有配置
    getPrivateInt(key, default_value) {
        return new Promise(function(resolve, reject) {
            if (bridge) {
                bridge.get_private_int(key, default_value, function(returnValue) {
                    /*
                    key格式：节点名/键名，例如：
                    games/gameid表示：
                    [games]
                    gameid=xx
                    节点名为General时，key可以只填键名
                    */
                    resolve(returnValue)
                })
            } else {
                reject('不是客户端')
            }
        })
    },
    // 写入私有配置
    setPrivateInt(key, default_value) {
        return new Promise(function(resolve, reject) {
            if (bridge) {
                // key的格式同get_private_int和get_private_str
                bridge.set_private_int(key, default_value)
            } else {
                reject('不是客户端')
            }
        })
    },
    // 读取私有配置
    getPrivateStr(key, default_value) {
        return new Promise(function(resolve, reject) {
            if (bridge) {
                bridge.get_private_str(key, default_value, function(returnValue) {
                    /*
                    key格式：节点名/键名，例如：
                    games/gameid表示：
                    [games]
                    gameid=xx
                    节点名为General时，key可以只填键名
                    */
                    resolve(returnValue)
                })
            } else {
                reject('不是客户端')
            }
        })
    },
    // 写入私有配置
    setPrivateStr(key, default_value) {
        return new Promise(function(resolve, reject) {
            if (bridge) {
                bridge.set_private_str(key, default_value)
                    // key的格式同get_private_int和get_private_str
            } else {
                reject('不是客户端')
            }
        })
    },
    // 获取客户端内存中的int变量
    getIntVar(name) {
        return new Promise(function(resolve, reject) {
            if (bridge) {
                bridge.get_int_var(name, (value) => {
                    // is_cybercafe 是否网吧，返回：0非网吧，1网吧
                    resolve(value)
                })
            } else {
                reject('不是客户端')
            }
        })
    },
    // 获取客户端内存中的str变量
    getStrVar(name) {
        return new Promise(function(resolve, reject) {
            if (bridge) {
                bridge.get_str_var(name, (value) => {
                    // returnValue为整数值
                    resolve(value)
                })
            } else {
                reject('不是客户端')
            }
        })
    },
    // 打开外部链接
    openUrl(url) {
        return new Promise(function(resolve, reject) {
            if (bridge) {
                bridge.open_url(url)
            } else {
                reject('不是客户端')
            }
        })
    },
    // 保存用户信息
    saveUserInfo(data) {
        return new Promise(function(resolve, reject) {
            if (bridge) {
                bridge.save_userinfo(data)
            } else {
                reject('不是客户端')
            }
        })
    },
    // 写日志
    log(logLevel, msg) {
        return new Promise(function(resolve, reject) {
            if (bridge) {
                // int log_level 日志级别， 0 - trace 1 - debug 2 - warning 3 - error 4 - fatal
                // string msg 消息
                bridge.log(logLevel, msg)
            } else {
                reject('不是客户端')
            }
        })
    },
    closeWindow() {
        // url 关闭窗口后跳转。没有url则直接关闭
        return new Promise(function(resolve, reject) {
            if (bridge) {
                bridge.close()
            } else {
                reject('不是客户端')
            }
        })
    },
    //   打开新窗口
    openNewWindow(windowType, url, width, height, titleContent) {
        /* window_type int 窗口类型，0登录，1反馈 2站内信 3开通会员 4账号管理 5注销登录（隐藏窗口） 6新版wiki 7：双十二活动页面（全屏打开，宽高传0） 8小包个人信息
                                        url string 链接
                                        width int 窗口宽
                                        height int 窗口高
                                        title_content 标题
                                    */
        return new Promise(function(resolve, reject) {
            // console.log('页面跳转')
            if (bridge) {
                bridge.open_new_window(windowType, utils.urlAddChannel(url), width, height, titleContent)
            } else {
                reject('不是客户端')
            }
        })
    },
    // 打开不带头部的窗口
    openWindow(windowInfo) {
        return new Promise(function(resolve, reject) {
            if (bridge) {
                // windowInfo 字段内容
                // url	string	链接
                // width	int	400	宽度（含左右各1像素边框，如果希望客户区为400，填402）
                // height	int	300	高度（含上下各1像素边框）
                // title_height	int	50	标题栏高度（不含边框），顶部可以拖动的高度
                // window_type	int	-1	窗口类型，-1未指定，0登录，1反馈，2wiki，3开通会员，4帐号管理，5注销登录（隐藏窗口）
                // fixed_size	bool	true	是否固定尺寸
                // title	string	""	标题，任务栏小窗口标题
                // bk_color	uint	0x11121A	页面开始渲染前窗口背景色（页面开始渲染后的背景色由url对应的页面设置）
                // can_maximize	bool	true	是否可以双击标题栏最大化
                // zoomable	bool	true	是否可缩放
                // title_buttons	array	标题栏按纽位置和大小（未指定按钮将不可点击）
                // x	int	title_buttons	按纽x坐标，窗口最左边为0，页面客户区最左边为1
                // y	int	title_buttons	按纽y坐标，窗口最上边为0，页面客户区最上边为1
                // width	int	title_buttons	按钮宽度
                // height	int	title_buttons	按钮高度
                bridge.open_window(JSON.stringify(windowInfo))
            } else {
                reject('不是客户端')
            }
        })
    },
    // 打开会员窗口
    openMemberWindow(url) {
        if (bridge) {
            var windowInfo = {
                'url': url, // 链接
                'width': 632, // 宽度（含左右各1像素边框，如果希望客户区为400，填402）
                'height': 677, // 高度（含上下各1像素边框）
                'window_type': 3, // 窗口类型，-1未指定，0登录，1反馈，2wiki，3开通会员，4帐号管理，5注销登录（隐藏窗口）
                'fixed_size': true, //	bool	true	是否固定尺寸
                'title': '开通会员', //	string	""	标题，任务栏小窗口标题'
                'bk_color': '#12161f', // 页面开始渲染前窗口背景色（页面开始渲染后的背景色由url对应的页面设置）
                'can_maximize': false, // 是否可以双击标题栏最大化
                'zoomable': false, // 页面是否可缩放
                'title_buttons': [{
                    'x': 30, // int	title_buttons	按纽x坐标，窗口最左边为0，页面客户区最左边为1
                    'y': 40, // int	title_buttons	按纽y坐标，窗口最上边为0，页面客户区最上边为1
                    'width': 50, // int	title_buttons	按钮宽度
                    'height': 20 // int	title_buttons	按钮高度
                }]
            }
            bridge.open_window(JSON.stringify(windowInfo))
        } else {
            reject('不是客户端')
        }
    },
    // 客户端增加商店回调跳转
    feedbackInHome(callbackStr) {
        if (bridge) {
            bridge.feedback_in_home("urlCallback('" + callbackStr + "')")
        } else {
            reject('不是客户端')
        }
    },
    // 事件通知
    notify(event_type, json_str) {
        return new Promise(function(resolve, reject) {
            if (bridge) {
                // event_type 事件类型，0登录，1退出登录 2会员领取成功 3重新刷新我的页面用户剩余时长 4创建桌面快捷方式完成
                // json_str 参数， { "uid": "xxxx" }
                bridge.notify(event_type, json_str)
            } else {
                reject('不是客户端')
            }
        })
    },
    
    // 在商店运行代码
    runJS(code){
        return new Promise(function(resolve, reject) {
            if (bridge) {
                bridge.run_javascript(code)
            } else {
                reject('不是客户端')
            }
        })
    }

}

// export default Client