import Taro from '@tarojs/taro';

import { omit } from 'lodash-es';

import { PageType, PageUrl } from '@/constants/app';

export type TabItemType = Taro.TabBarItem & { type: PageType };

export type AppConfigType = Taro.AppConfig & { tabBar: Taro.AppConfig['tabBar'] & { list: TabItemType[] } };

const CommonTabs: TabItemType[] = [
  {
    type: PageType.Message,
    pagePath: PageUrl.Message,
    text: ' 消息',
  },
  {
    type: PageType.User,
    pagePath: PageUrl.User,
    text: ' 我的',
  },
  // {
  //   type: PageType.DEV,
  //   pagePath: PageUrl.DevDebug,
  //   text: ' 调试页面',
  // },
];

const AnchorTabs: TabItemType[] = [
  {
    type: PageType.JOB,
    pagePath: PageUrl.Job,
    text: '通告',
  },
  {
    type: PageType.GroupV2,
    pagePath: PageUrl.GroupV2,
    text: '通告群',
  },
];

const CompanyTabs: TabItemType[] = [
  {
    type: PageType.Anchor,
    pagePath: PageUrl.Anchor,
    text: '主播',
  },
  {
    type: PageType.BatchPublish,
    pagePath: PageUrl.UserBatchPublish,
    text: '主播群',
  },
];

export const ANCHOR_TAB_LIST: TabItemType[] = AnchorTabs.concat(CommonTabs);

export const COMPANY_TAB_LIST: TabItemType[] = CompanyTabs.concat(CommonTabs);

const ALL_TABS = AnchorTabs.concat(CompanyTabs.concat(CommonTabs));

export const APP_CONFIG: AppConfigType = {
  entryPagePath: PageUrl.Start,
  pages: [
    PageUrl.Start,
    PageUrl.Job,
    PageUrl.JobDetail,
    PageUrl.JobSearch,
    PageUrl.JobPublish,
    // PageUrl.JobPublishAddress,
    PageUrl.JobPublishDescribe,
    PageUrl.JobSelectMyPublish,
    // PageUrl.Group,
    PageUrl.GroupV2,
    PageUrl.GroupList,
    // PageUrl.GroupJob,
    PageUrl.Anchor,
    PageUrl.Message,
    PageUrl.MessageChat,
    PageUrl.User,
    PageUrl.UserInfo,
    PageUrl.UserBatchPublish,
    PageUrl.CitySearch,
    PageUrl.CitySearchProfile,
    PageUrl.MyDeclaration,
    PageUrl.MyPublish,
    // PageUrl.FollowGroup,
    PageUrl.MaterialProfile,
    PageUrl.MaterialUploadVideo,
    PageUrl.MaterialCreateProfile,
    PageUrl.MaterialEditProfile,
    PageUrl.MaterialView,
    PageUrl.MaterialWebview,
    PageUrl.Certification,
    PageUrl.CertificationStart,
    PageUrl.CertificationManage,
    PageUrl.ProtocolWebview,
    PageUrl.PrivacyWebview,
    PageUrl.Partner,
    PageUrl.WithdrawRecord,
    PageUrl.GroupDelegatePublish,
    PageUrl.PartnerShare,
    // PageUrl.DevDebug,
  ],
  window: {
    backgroundColor: '#F5F6FA',
    backgroundTextStyle: 'light',
    navigationBarBackgroundColor: '#F5F6FA',
    backgroundColorTop: '#F5F6FA',
    backgroundColorBottom: '#F5F6FA',
    navigationBarTextStyle: 'black',
  },
  permission: {
    'scope.userLocation': {
      desc: '获取经纬度',
    },
  },
  requiredPrivateInfos: ['getLocation'],
  tabBar: {
    custom: true,
    color: '#999999',
    selectedColor: '#333333',
    backgroundColor: '#fff',
    position: 'bottom',
    list: ALL_TABS.map(tab => omit(tab, 'type')),
  },
  lazyCodeLoading: 'requiredComponents',
  plugins: {
    chooseLocation: {
      version: '1.1.1',
      provider: 'wx76a9a06e5b4e693e',
    },
  },
};

function useConfig() {
  return APP_CONFIG;
}

export default useConfig;
