import { isInAppWebView, isInWeixinMpWebView } from ".";

export function getNavigationBarHeight() {
  // eslint-disable-next-line no-console
  // console.log('statusBarHeight + 44:', uni.getSystemInfoSync().statusBarHeight + 44);
  // eslint-disable-next-line no-console
  // console.log('menu.bottom + 6:', getMenuButtonBoundingClientRect().bottom + 6);

  // 计算自定义NavigationBar的高度
  // 自定义NavigationBar的高度 = statusBarHeight + Nav区域的高度
  // 原生NavigationBar的高度在各个平台都是44
  // 01. H5上面不需要加statusBarHeight，自定义NavigationBar的高度就是44
  let height = 44;
  if (isInWeixinMpWebView()) {
    height = 0;
  }

  // 02. 微信上用微信小程序API去计算
  // #ifdef MP-WEIXIN
  height = getMenuButtonBoundingClientRect().bottom + 6;
  // #endif

  // 03. APP上用API获取statusBarHeight，再加上44
  // #ifdef APP-PLUS
  height = getStatusbarHeight() + height;
  // #endif

  // 04. H5页面，在APP的web-view中打开，也是用API获取statusBarHeight，再加上44
  // #ifdef H5
  try {
    if (isInAppWebView()) {
      height = getStatusbarHeight() + height;
    }
  } catch { }
  // #endif

  return height;
}

// TODO app 测试
export function getMenuButtonBoundingClientRect() {
  // 在iPhone X 上的值
  let menu = {
    width: 87,
    height: 32,
    top: 48,
    right: 368,
    bottom: 80,
    left: 281,
  };

  // 微信：用微信小程序的API计算menu的全部值
  // #ifdef MP-WEIXIN
  menu = uni.getMenuButtonBoundingClientRect();
  // #endif


  // TODO: 非微信平台的处理
  // 目前代码只用到了menu.top，menu.height 和 menu.width
  // 所以只重新计算这三个值

  // #ifdef APP-PLUS || H5
  menu.top = getStatusbarHeight() + 6;
  // #endif

  // menu.height的值固定为32
  // eslint-disable-next-line no-console
  // console.log('menu.height:', menu.height);

  // menu.width的值固定为87
  // eslint-disable-next-line no-console
  // console.log('menu.width:', menu.width);

  return menu;
}


export function getSystemInfoSync() {
  const result = uni.getSystemInfoSync();

  if (!result.statusBarHeight) {
    result.statusBarHeight = 0;
  }

  // #ifdef H5
  try {
    if (isInAppWebView()) {
      result.statusBarHeight = plus.navigator.getStatusbarHeight();
    }
  } catch { }
  // #endif

  return result;
}

function getStatusbarHeight() {
  let statusbarHeight = getSystemInfoSync().statusBarHeight;
  if (!statusbarHeight) {
    statusbarHeight = 0;
  }
  return statusbarHeight;
}
