import '@tarojs/async-await';
import Taro, { Component, Config } from '@tarojs/taro';
import { Provider } from '@tarojs/redux';

import Index from './pages/index';

import store from './store';

import './app.scss';

// 如果需要在 h5 环境中开启 React Devtools
// 取消以下注释：
// if (process.env.NODE_ENV !== 'production' && process.env.TARO_ENV === 'h5') {
//   require('nerv-devtools');
// }

class App extends Component {
  /**
   * 指定config的类型声明为: Taro.Config
   *
   * 由于 typescript 对于 object 类型推导只能推出 Key 的基本类型
   * 对于像 navigationBarTextStyle: 'black' 这样的推导出的类型是 string
   * 提示和声明 navigationBarTextStyle: 'black' | 'white' 类型冲突, 需要显示声明类型
   */
  config: Config = {
    pages: [
      'pages/index/index',
      'pages/UserSetting/CustomerSetting',
      'pages/Home/Home',
      'pages/Order/OrderPay/OrderPay',
      'pages/Order/OrderList/OrderList',
      'pages/BarCode/BarCode',
      'pages/Announcement/Announcement',
      'pages/UserSetting/UserSetting',
      'pages/Password/ResetPwd',
      'pages/Register/Register',
      'pages/Login/Login',
      'pages/Feedback/Feedback',
      'pages/Order/OrderDetail/OrderDetail',
      'pages/SelectCampus/SelectCampus',
      'pages/Content/Content',
      'pages/WebPage/WebPage',
      'pages/Shower/Shower',
      'pages/Shower/ShowerAppointment',
      'pages/WaterDispenser/WaterDispenser',
      'pages/Account/Account',
      'pages/Password/ChangePwd',
      'pages/Password/ChangeHardwareAccount',
      'pages/Password/ChangeTelAccount',
      'pages/AppLaunch/AppLaunch',
    ],
    window: {
      backgroundTextStyle: 'light',
      navigationBarBackgroundColor: '#fff',
      navigationBarTitleText: '多彩校园',
      navigationBarTextStyle: 'black',
    },
  };

  // 在 App 类中的 render() 函数没有实际作用
  // 请勿修改此函数
  render() {
    return (
      <Provider store={store}>
        <Index />
      </Provider>
    );
  }
}

Taro.render(<App />, document.getElementById('app'));
