import Taro, {useDidShow, useDidHide} from '@tarojs/taro'
import './app.scss'
import {CustomWrapper} from "@tarojs/components";
import {Profile} from '@/store'
import storageDep from "@/hooks/storageDep";


function updateApp() {
  if (Taro.canIUse('getUpdateManager.onCheckForUpdate')) {
    const updateManager = Taro.getUpdateManager()
    updateManager.onCheckForUpdate((res) => {
      console.log('新版本', res.hasUpdate)
    })

    updateManager.onUpdateReady(() => {
      Taro.showModal({
        title: '更新提示',
        content: '新版本已经准备好，是否重启应用？',
        success(res) {
          if (res.confirm) {
            updateManager.applyUpdate()
          }
        }
      })
    })
    updateManager.onUpdateFailed(() => {
      // 新版本下载失败
      Taro.showToast({title: '新版本下载失败'})
    })
  }
}


function App(props) {
  Taro.useLaunch(() => {
    updateApp()
    storageDep.remove()
  })

  Taro.getSystemInfo({
    success({statusBarHeight = 0, screenWidth, screenHeight, windowHeight, safeArea}) {
      const isIos = Taro.getSystemInfoSync().platform === 'ios';
      const {top, height} = Taro.getMenuButtonBoundingClientRect()
      const textBarHeight = (top - statusBarHeight) * 2 + height
      Taro.getApp().globalData = {
        statusBarHeight,
        screenWidth,
        screenHeight,
        windowHeight,
        safeArea,
        isIos,
        textBarHeight,
        pageHeight: screenHeight - statusBarHeight - textBarHeight - (screenHeight - (safeArea?.bottom || 0)),
        menu: Taro.getMenuButtonBoundingClientRect(),
      }
    }
  })


  // 对应 onShow
  useDidShow(() => {
  })

  // 对应 onHide
  useDidHide(() => {
  })

  return (
    <CustomWrapper>
      <Profile.Provider>
        {props.children}
      </Profile.Provider>
    </CustomWrapper>
  )
}

export default App
