/**
 * SoundChain 第三方平台功能聚合
 * @version 1.0.3
 * @author lidongtony
 * @param {String} name - 厂商+平台名称
 * @param {String} provider - 厂商
 * @param {String} platform - 平台名称
 * @param {String} os - 系统型号
 * @param {Object} device - 设备信息
 */

import { isEmpty } from 'lodash-es';
// #ifdef H5
import { isWxBrowser } from '@/common/helper/utils';
// #endif

const device = uni.getWindowInfo();

const os = uni.getDeviceInfo().platform;

let name = '';
let provider = '';
let platform = '';
let isWechatInstalled = true;

// #ifdef H5
if (isWxBrowser()) {
  name = 'WechatOfficialAccount';
  provider = 'wechat';
  platform = 'officialAccount';
} else {
  name = 'H5';
  platform = 'h5';
}
// #endif

// #ifdef APP-PLUS
name = 'App';
platform = 'openPlatform';
// 检查微信客户端是否安装，否则AppleStore会因此拒绝上架
if (os === 'ios') {
  isWechatInstalled = plus.ios.import('WXApi').isWXAppInstalled();
}
// #endif

// #ifdef MP-WEIXIN
name = 'WechatMiniProgram';
platform = 'miniProgram';
provider = 'wechat';
// #endif

if (isEmpty(name)) {
  uni.showToast({
    title: '暂不支持该平台',
    icon: 'none',
  });
}


/**
 * 检查网络
 * @param {Boolean} silence - 静默检查
 */
async function checkNetwork() {
  const networkStatus = await uni.getNetworkType();
  if (networkStatus.networkType == 'none') {
    return Promise.resolve(false);
  }
  return Promise.resolve(true);
}

// 获取小程序胶囊信息
const getCapsule = () => {
  // #ifdef MP
  let capsule = uni.getMenuButtonBoundingClientRect();
  if (!capsule) {
    capsule = {
      bottom: 56,
      height: 32,
      left: 278,
      right: 365,
      top: 24,
      width: 87,
    };
  }
  return capsule;
  // #endif

  // #ifndef MP
  return {
    bottom: 56,
    height: 32,
    left: 278,
    right: 365,
    top: 24,
    width: 87,
  };
  // #endif
};

const capsule = getCapsule();

// 标题栏高度
const getNavBar = () => {
  return device.statusBarHeight + 44;
};
const navbar = getNavBar();

const _platform = {
  name,
  device,
  os,
  provider,
  platform,
  checkNetwork,
  capsule,
  navbar,
  isWechatInstalled,
};

export default _platform;
