'use strict';

exports.__esModule = true;

var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

var _DB = require('./../DB');

var _DB2 = _interopRequireDefault(_DB);

var _locale = require('./../locale');

var _locale2 = _interopRequireDefault(_locale);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var Bridge = {
  /**
   * 定制功能
   */
  platform: 'wq',
  // 自定义操作
  invoke: function invoke(api, params, callback) {
    /* eslint-disable */
    if (!wq.invoke) {
      console.log('没有wq.invoke的方法');
      return;
    }
    wq.invoke(api, params, function (res) {
      callback && callback(res);
    });
    /* eslint-enable */
  },
  // 配置鉴权
  config: function config() {
    var self = this;
    /* eslint-disable */
    wq.config({ auth: false });
    wq.ready(function () {
      self.addBackPress();
    });
    /* eslint-enable */
  },
  // 判断是否是主页
  isHomePage: function isHomePage(callback, rule) {
    if (rule && window.location.href.indexOf(rule) >= 0) {
      callback(true);
      return;
    }
    callback(false);
  },
  // 获得版本信息
  getAppVersion: function getAppVersion() {
    return window.navigator.appVersion;
  },
  // 返回首页
  goHome: function goHome() {
    window.history.go(-1);
  },
  // 退出到登陆页面
  logOut: function logOut() {
    wq.invoke('logout'); // eslint-disable-line
  },
  // 打开新的窗口
  openWindow: function openWindow() {
    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

    wq.openWindow(params); // eslint-disable-line
  },
  // 关闭窗口
  closeWindow: function closeWindow() {
    wq.closeWindow(); // eslint-disable-line
  },
  /**
    * 修改原生标题
    * @param {Object} params {title: '自定义标题', visiable: '0' 隐藏  '1' 展示, left: { show: false 隐藏返回按钮 true 显示返回按钮}}
    */
  setTitle: function setTitle(params) {
    if (params && params.title) document.title = params.title;
    wq.setTitle(params); // eslint-disable-line
  },
  // 客户端返回绑定
  addBackPress: function addBackPress(callback) {
    var self = this;
    if (wq.onHistoryBack) {
      // eslint-disable-line
      wq.onHistoryBack(function () {
        // eslint-disable-line
        if (callback) {
          callback();
          self.addBackPress();
        } else {
          self.back();
          self.addBackPress();
        }
        return false;
      });
    }
  },
  // 客户端移除返回绑定
  removeBackPress: function removeBackPress() {
    if (wq.onHistoryBack) {
      // eslint-disable-line
      wq.onHistoryBack(function () {
        // eslint-disable-line
        return true;
      });
    }
  },
  /**
    * 获取当前地理位置
    * @param {Object} params
    * params: {
    * type {String}: 'wgs84'|'gcj02'坐标类型微信默认使用国际坐标'wgs84',
    * cache {Number}: 默认60秒缓存防重复定位
    * }
    * @returns {Object} {latitude: '纬度', longitude: '经度', speed:'速度', accuracy:'位置精度'}
    */
  getLocation: function getLocation() {
    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

    var self = this;
    // 先从cookie中读取位置信息
    var appLocation = _DB2.default.getCookie('app_location');
    if (appLocation === 'undefined') {
      _DB2.default.removeCookie('app_location');
      appLocation = '';
    }
    try {
      if (appLocation) appLocation = JSON.parse(appLocation);
    } catch (error) {
      appLocation = '';
    }
    if (appLocation) {
      if (params.success) params.success(appLocation);
      return;
    }
    // 调用定位
    if (self.locationTask) {
      self.locationTask.push(params);
      return;
    }
    self.locationTask = [];
    console.log('调用定位...');
    wq.getLocation({ // eslint-disable-line
      // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'
      type: 'gcj02',
      success: function success(res) {
        // 将位置信息存储到cookie中60秒
        if (res.latitude && res.latitude) {
          if (params.cache) _DB2.default.setCookie('app_location', JSON.stringify(res), params.cache || 60);
          if (params.success) params.success(res);
        } else {
          if (params.fail) params.fail(res);else self.showToast('没有获取到经纬度', { mask: false });
        }
        self.getLocationTask(res);
      },
      fail: function fail(res) {
        if (params.fail) params.fail(res);else self.showToast('定位失败,请检查微信定位权限是否开启', { mask: false });
        self.getLocationTask(res);
      },
      complete: function complete(res) {
        if (params.complete) params.complete(res);
      }
    });
  },
  /*
   * 扫描二维码并返回结果
   * 返回：{resultStr:''}
   * */
  scanQRCode: function scanQRCode() {
    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

    var self = this;
    wq.scanQRCode({ // eslint-disable-line
      needResult: params.needResult || 1, // 默认为0，扫描结果由微信处理，1则直接返回扫描结果
      scanType: params.scanType || ['qrCode', 'barCode'],
      desc: params.desc || '二维码／条码',
      success: function success(res) {
        if (!params.success) return;
        params.success(res);
      },
      fail: function fail(res) {
        if (params.fail) params.fail(res);else self.showToast(res.errMsg, { mask: false });
      },
      cancel: function cancel(res) {
        if (params.cancel) params.cancel(res);
      },
      complete: function complete(res) {
        if (params.complete) params.complete(res);
      }
    });
  },

  /**
    * 拍照、本地选图
    * @param {Object} params
    * {
      count: 1, // 默认9
      sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
      watermark: ['第一行', '第二行'],
      success({localIds:[src]})
    * }
    */
  chooseImage: function chooseImage(params) {
    console.log('外勤WK内核chooseImage', params);
    wq.chooseImage(params); // eslint-disable-line
  },
  /**
    * 照片上传, ios测试环境无法上传
    * @param {Object} params
    * {
      uploadDir: '目录/年月',
      tenantId: '企业id'
      localId: 'localId',
      success: func(res)
    * }
    */
  uploadImage: function uploadImage(params) {
    var uploadParams = Object.clone(params);
    var self = this;
    if (!params.uploadDir) {
      self.showToast((0, _locale2.default)('hint_no_upload_dir') || '没有上传目录', { mask: false });
      return;
    }
    if (!params.localId) {
      self.showToast((0, _locale2.default)('hint_no_upload_localid') || '没有上传地址', { mask: false });
      return;
    }
    if (params.tenantId) uploadParams.tenantId = params.tenantId;
    if (params.isAI) uploadParams.isAI = params.isAI;
    // 构建成功回调的参数
    uploadParams.success = function () {
      if (params.success) {
        params.success({
          errMsg: 'uploadImage:ok',
          path: params.uploadDir + '/' + params.localId, // 前后不带/, 并且不带企业参数的上传路径
          serverId: params.serverId,
          tenantId: params.tenantId
        });
      }
    };
    console.log('外勤WK内核上传');
    console.log(uploadParams);
    wq.uploadImage(uploadParams); // eslint-disable-line
  },
  previewImage: function previewImage(params) {
    wq.previewImage(params); // eslint-disable-line
  },
  /**
    * 视频文件上传, 658支持
    * @param {Object} params
    * {
      uploadDir: '目录/年月',
      localId: 'localId',
      success: func(res)
    * }
    */
  uploadFile: function uploadFile() {
    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

    var self = this;
    if (Device.compareVersion(Device.platformVersion, '6.5.8') < 0) {
      self.showToast((0, _locale2.default)('hint_upload_file_version') || '此功能需要升级至6.5.8及以上的客户端', { mask: false });
      return;
    }
    if (!params.localId) {
      self.showToast((0, _locale2.default)('hint_no_upload_localid') || '没有上传地址', { mask: false });
      return;
    }
    wq.uploadFile({
      url: '/fileupload/v1/doUpload.do?uploadPath=' + (params.uploadDir || 'file'),
      filePath: params.localId,
      name: 'file',
      formData: params.data,
      success: function success() {
        var result = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

        if (result.code === '1' && result.data[0]) {
          var data = result.data[0];
          var tenantId = data.url.replace('/' + data.filePath, '');
          tenantId = tenantId.substring(tenantId.lastIndexOf('/') + 1, tenantId.length);
          if (!params.success) return;
          params.success({
            errMsg: 'uploadFile:ok',
            thumb: data.url,
            src: data.url,
            tenantId: tenantId,
            path: data.filePath
          });
        } else {
          if (!params.fail) return;
          params.fail(_extends({
            errMsg: 'uploadFile:fail ' + (result.message || (0, _locale2.default)('hint_upload_failed') || '上传失败')
          }, result));
        }
      },
      fail: function fail() {
        var err = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

        if (!params.fail) return;
        params.fail(_extends({
          errMsg: 'uploadFile:fail ' + (err.message || (0, _locale2.default)('hint_upload_failed') || '上传失败')
        }, err));
      }
    });
  },
  /**
    * 选择、录制视频
    * @param {Object} params
    * {
      sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
      maxDuration: 60, // 最大录相时长
      camera: 'back', // back || front，默认拉起的是前置或者后置摄像头。非必填，默认back
      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
      success({localIds:[src]})
    * }
    */
  chooseVideo: function chooseVideo() {
    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

    var self = this;
    if (Device.compareVersion(Device.platformVersion, '6.5.8') < 0) {
      self.showToast((0, _locale2.default)('hint_choose_video_version') || '此功能需要升级至6.5.8及以上的客户端', { mask: false });
      return;
    }
    // 标准化参数
    params.compressed = true;
    if (params.sizeType && params.sizeType.length) {
      if (params.sizeType.indexOf('compressed') === -1) {
        params.compressed = false;
      }
    }
    console.log('外勤WK内核chooseVideo', params);
    wq.chooseVideo(_extends({}, params, {
      success: function success(res) {
        // 标准化回调参数: 将tempFilePath改为localId
        res.localId = res.tempFilePath;
        if (params.success) params.success(res);
      }
    })); // eslint-disable-line
  },
  /**
    * 文件操作: 预览文件
    * @param {Object} params
    * params: {
    *  url: '', // 需要预览文件的地址(必填，可以使用相对路径)
    *  name: '', // 需要预览文件的文件名(不填的话取url的最后部分)
    *  size: 1048576 // 需要预览文件的字节大小(必填)
    * }
    */
  previewFile: function previewFile(params) {
    wq.previewFile(params); // eslint-disable-line
  }
};

exports.default = Bridge;
module.exports = exports['default'];