content: /* eslint-disable react/prefer-stateless-function */
  import React from 'react';
  import { View, TouchableOpacity } from 'react-native';
  import { Actions, Scene } from 'react-native-router-flux';
  import { Icon } from 'react-native-elements';
  import Home from '../containers/home/Home';
  import AppConfig from '../constants/config';
  import AppSizes from '../theme/sizes';
  import AppStyles from '../theme/styles';
  import Community from '../containers/community/Community';
  import UserCenter from '../containers/user-center/UserCenter';
  import AboutUs from '../containers/user-center/about-us/AboutUs';
  import ContributorProfile from '../containers/user-center/about-us/ContributorProfile';
  import Discover from '../containers/discover/Discover';
  import RoadmapList from '../containers/discover/roadmap-list/RoadmapList';
  import RoadmapDetail from '../containers/discover/roadmap-detail/RoadmapDetail';
  import ProjectList from '../containers/discover/project-list/ProjectList';
  import ProjectDetail from '../containers/discover/project-detail/ProjectDetail';
  import ToolBoxList from '../containers/discover/toolbox-list/ToolBoxList';
  import ToolBoxDetail from '../containers/discover/toolbox-detail/ToolBoxDetail';
  import ArticleList from '../containers/discover/article-list/ArticleList';
  import ArticleDetail from '../containers/discover/article-detail/ArticleDetail';
  import ExamList from '../containers/discover/exam-list/ExamList';
  import ExamDetail from '../containers/discover/exam-detail/ExamDetail';
  import Solution from '../containers/discover/solution/Solution';
  import SolutionDetail from '../containers/discover/solution-detail/SolutionDetail';
  import ThoughtworksBooks from '../containers/discover/thoughtworks-books/ThoughtworksBooks';
  import DomainDetailPage from '../containers/discover/thoughtworks-books/domain-detail-page/DomainDetailPage';
  import RecommendBooks from '../containers/discover/recommend-books/RecommendBooks';
  import RecommendBooksDetail from '../containers/discover/recommend-books/article/Article';
  import RecommendArticles from '../containers/discover/recommend-articles/RecommendArticles';
  import LocalArticleView from '../components/LocalArticleView';
  import TodoLists from '../containers/discover/todo-lists/TodoLists';
  import TodoList from '../containers/discover/todo-list/TodoList';
  import ChapterList from '../containers/discover/chapter-list/ChapterList';
  import ChapterListArticle from '../containers/discover/chapter-list/article/Article';
  import SkillTree from '../containers/skill-tree/SkillTree';
  import SkillDetailView from '../containers/skill-tree/SkillDetailView';
  import ComingSoonView from '../containers/ComingSoonView';
  import Helper from '../utils/helper';
  import TabIcon from '../components/TabIcon';
  import Practises from '../containers/practises/Practises';
  import GrEditor from '../components/GrEditor';
  import SectionPage from '../containers/home/sections/SectionPage';
  import HtmlView from '../components/HtmlView';
  import SectionIntro from '../containers/home/sections/SectionIntro';
  import AlgorithmListView from '../containers/practises/algorithm/AlgorithmListView';
  import PaperIntroView from '../containers/home/paper/PaperIntroView';
  import SectionPageHelper from '../utils/SectionPageHelper';
  import ForumDetail from '../containers/community/forum/ForumDetail';
  import ForumUserCenter from '../containers/community/forum/ForumUserCenter';
  import LeetCodeView from '../containers/practises/leetcode/LeetCodeView';
  import FreeBookList from '../containers/discover/free-book-list/FreeBookList';
  import AwesomeLists from '../containers/discover/awesomes/AwesomeLists';
  import CopyrightView from '../containers/user-center/CopyrightView';
  import GrowthView from '../containers/home/GrowthView';
  import AwesomesDetail from '../containers/discover/awesomes/AwesomesDetail';
  import MoRegexView from '../containers/practises/moregex/MoRegexView';
  import RegexListView from '../containers/practises/moregex/RegexListView';
  import MoRegexInfoView from '../containers/practises/moregex/MoRegexInfoView';
  import BookmarkHelper from '../utils/BookmarkHelper';
  import PatternsView from '../containers/practises/patterns/PatternsView';
  import PatternDetailView from '../containers/practises/patterns/PatternDetailView';
  import AlgorithmDetailView from '../containers/practises/algorithm/AlgorithmDetailView';
  import HelpUs from '../containers/home/HelpUs';
  
  const navbarPropsTabs = {
    ...AppConfig.navbarProps,
    sceneStyle: {
      ...AppConfig.navbarProps.sceneStyle,
      paddingBottom: AppSizes.tabbarHeight,
    },
  };
  
  export default Actions.create(
    <Scene key="root" {...AppConfig.navbarProps}>
      <Scene key="tabs" initial={'tabBar'} tabs tabBarIconContainerStyle={AppStyles.tabbar} pressOpacity={0.95}>
        <Scene
          {...navbarPropsTabs}
          key={'home'}
          title={'首页'}
          iconName={'md-home'}
          iconType={'ionicon'}
          leftTitle={'帮助我们'}
          onLeft={() => Actions.helpUs()}
          leftButtonTextStyle={AppStyles.navbarTitle}
          rightTitle={'购买纸质版'}
          onRight={() => Actions.paperIntroView()}
          rightButtonTextStyle={AppStyles.navbarTitle}
          icon={TabIcon}
          component={Home}
          analyticsDesc={' Home '}
        />
        <Scene
          {...navbarPropsTabs}
          key={'discover'}
          title={'探索'}
          rightTitle={'更多功能'}
          onRight={() => Helper.getMoreFeatures()}
          rightButtonTextStyle={AppStyles.navbarTitle}
          iconName={'md-compass'}
          iconType={'ionicon'}
          icon={TabIcon}
          component={Discover}
          analyticsDesc={' Discover '}
        />
  
        <Scene
          {...navbarPropsTabs}
          key={'community'}
          title={'社区'}
          renderRightButton={() => Helper.gotoLogin()}
          iconName={'md-people'}
          iconType={'ionicon'}
          icon={TabIcon}
          component={Community}
          analyticsDesc={' Community '}
        />
        <Scene
          {...navbarPropsTabs}
          key={'practises'}
          title={'练习'}
          iconName={'md-bonfire'}
          iconType={'ionicon'}
          icon={TabIcon}
          rightTitle={'编辑器'}
          onRight={() => Actions.grEditor()}
          rightButtonTextStyle={AppStyles.navbarTitle}
          component={Practises}
          analyticsDesc={' Practises '}
        />
  
        <Scene
          {...navbarPropsTabs}
          key={'userCenter'}
          title={'用户中心'}
          iconName={'md-apps'}
          iconType={'ionicon'}
          icon={TabIcon}
          component={UserCenter}
          analyticsDesc={' UserCenter '}
        />
      </Scene>
  
      <Scene
        {...AppConfig.navbarProps}
        key={'skillTree'}
        title={'技能树'}
        rightTitle={'获取专业版'}
        onRight={() => Helper.getProfessionalSkilltree()}
        rightButtonTextStyle={AppStyles.navbarTitle}
        iconName={'md-egg'}
        iconType={'ionicon'}
        icon={TabIcon}
        component={SkillTree}
        analyticsDesc={' SkillTree '}
      />
  
      <Scene
        {...AppConfig.navbarProps}
        key={'skillDetail'}
        title={'技能'}
        component={SkillDetailView}
        analyticsDesc={' SkillDetailView '}
      />
  
      <Scene
        {...AppConfig.navbarProps}
        key={'growthView'}
        title={'Growth'}
        component={GrowthView}
        analyticsDesc={' GrowthView '}
      />
  
      <Scene
        {...AppConfig.navbarProps}
        key={'comingSoon'}
        title={'Coming Soon'}
        component={ComingSoonView}
        rightTitle={'其他功能'}
        rightButtonTextStyle={AppStyles.navbarTitle}
        onRight={() => Helper.getMoreFeatures()}
        analyticsDesc={' ComingSoonView '}
      />
  
      <Scene
        key={'roadmapList'}
        title={'学习路线'}
        duration={0}
        component={RoadmapList}
        analyticsDesc={' RoadmapList '}
      />
  
      <Scene
        key={'roadmapDetail'}
        duration={0}
        component={RoadmapDetail}
        analyticsDesc={' RoadmapDetail '}
      />
  
      <Scene
        key={'projectList'}
        duration={0}
        title={'练手项目'}
        component={ProjectList}
        analyticsDesc={' ProjectList '}
      />
  
      <Scene
        key={'projectDetail'}
        duration={0}
        component={ProjectDetail}
        analyticsDesc={' ProjectDetail '}
      />
  
      <Scene
        key={'toolBoxList'}
        duration={0}
        title={'工具箱'}
        component={ToolBoxList}
        analyticsDesc={' ToolBoxList '}
      />
  
      <Scene
        key={'toolBoxDetail'}
        duration={0}
        title={'工具箱'}
        component={ToolBoxDetail}
        analyticsDesc={' ToolBoxDetail '}
      />
  
      <Scene
        key={'articleList'}
        duration={0}
        title={'文章推荐'}
        component={ArticleList}
        analyticsDesc={' ArticleList '}
      />
  
      <Scene
        key={'articleDetail'}
        duration={0}
        title={'文章详情'}
        component={ArticleDetail}
        analyticsDesc={' ArticleDetail '}
      />
  
      <Scene
        key={'examList'}
        duration={0}
        title={'技能测验'}
        component={ExamList}
        analyticsDesc={' ExamList '}
      />
  
      <Scene
        key={'examDetail'}
        duration={0}
        hideNavBar
        component={ExamDetail}
        analyticsDesc={' ExamDetail '}
      />
  
      <Scene
        key={'solution'}
        duration={0}
        title={'解决方案'}
        component={Solution}
        analyticsDesc={' Solution '}
      />
  
      <Scene
        key={'solutionDetail'}
        duration={0}
        title={'解决方案'}
        component={SolutionDetail}
        analyticsDesc={' SolutionDetail '}
      />
  
      <Scene
        key={'thoughtworksBooks'}
        duration={0}
        title={'ThoughtWorks读书路线'}
        component={ThoughtworksBooks}
        analyticsDesc={' ThoughtworksBooks '}
      />
  
      <Scene
        key={'domainDetailPage'}
        duration={0}
        component={DomainDetailPage}
        analyticsDesc={' DomainDetailPage '}
      />
  
      <Scene
        key={'recommendBooks'}
        duration={0}
        title={'推荐书籍'}
        component={RecommendBooks}
        analyticsDesc={' RecommendBooks '}
      />
  
      <Scene
        key={'recommendBooksDetail'}
        duration={0}
        title={'书评'}
        component={RecommendBooksDetail}
        analyticsDesc={' RecommendBooksDetail '}
      />
  
      <Scene
        key={'recommendArticles'}
        duration={0}
        title={'推荐文章'}
        component={RecommendArticles}
        analyticsDesc={' RecommendArticles '}
      />
  
      <Scene
        key={'localArticleView'}
        duration={0}
        title={'文章'}
        component={LocalArticleView}
        renderRightButton={() => {
          let isRead = false;
          BookmarkHelper.isArticleRead((result) => {
            if (result) {
              isRead = true;
            }
          });
  
          return (
            <View>
              <TouchableOpacity
                onPress={() => {
                  BookmarkHelper.makeBookmark();
                }}
              >
                {
                  isRead
                    ? <Icon name="bookmark" size={24} color="#fff" />
                    : <Icon name="bookmark-border" size={24} color="#fff" />
                }
              </TouchableOpacity>
            </View>
          );
        }
        }
        analyticsDesc={' LocalArticleView '}
      />
  
      <Scene
        key={'todoLists'}
        duration={0}
        title={'待办事项'}
        component={TodoLists}
        analyticsDesc={' TodoLists '}
      />
  
      <Scene
        key={'todoList'}
        duration={0}
        title={'Todo'}
        component={TodoList}
        analyticsDesc={' TodoList '}
      />
  
      <Scene
        key={'chapterList'}
        duration={0}
        component={ChapterList}
        analyticsDesc={' ChapterList '}
      />
  
      <Scene
        key={'chapterListArticle'}
        duration={0}
        title={'章节详情'}
        component={ChapterListArticle}
        analyticsDesc={' ChapterListArticle '}
      />
  
      <Scene
        key={'aboutUs'}
        title={'关于'}
        component={AboutUs}
        analyticsDesc={' AboutUs '}
      />
  
      <Scene
        key={'contributorProfile'}
        title={'Contributor Profile'}
        component={ContributorProfile}
        analyticsDesc={' ContributorProfile '}
      />
  
      <Scene
        {...navbarPropsTabs}
        key={'sectionPage'}
        title={'Section'}
        component={SectionPage}
        renderRightButton={() => (
          <View>
            <TouchableOpacity
              onPress={() => {
                const sectionInfo = SectionPageHelper.getSection();
                const slug = sectionInfo.intros[0].info.slug;
                Actions.sectionIntro({ slug });
              }}
            >
              <Icon name="help-outline" size={24} color="#fff" />
            </TouchableOpacity>
          </View>
          )
        }
        analyticsDesc={' SectionPage '}
      />
  
      <Scene
        key={'sectionIntro'}
        title={'简介'}
        component={SectionIntro}
        analyticsDesc={' SectionIntro '}
      />
  
      <Scene
        {...AppConfig.navbarProps}
        key={'paperIntroView'}
        title={'全栈应用开发：精益实践'}
        component={PaperIntroView}
        analyticsDesc={' PaperIntroView '}
      />
  
      <Scene
        key={'htmlView'}
        component={HtmlView}
        analyticsDesc={' HtmlView '}
      />
  
      <Scene
        {...AppConfig.navbarProps}
        key={'algorithmListView'}
        rightTitle={'访问原作者 GitHub'}
        rightButtonTextStyle={AppStyles.navbarTitle}
        onRight={() => Helper.openAlgorithmGitHub()}
        component={AlgorithmListView}
        analyticsDesc={' AlgorithmListView '}
      />
  
      <Scene
        {...AppConfig.navbarProps}
        key={'algorithmDetailView'}
        component={AlgorithmDetailView}
        analyticsDesc={' AlgorithmDetailView '}
      />
  
      <Scene
        {...AppConfig.navbarProps}
        key={'forumDetail'}
        component={ForumDetail}
        analyticsDesc={' ForumDetail '}
      />
  
      <Scene
        {...AppConfig.navbarProps}
        key={'forumUserCenter'}
        title={'用户'}
        component={ForumUserCenter}
        analyticsDesc={' ForumUserCenter '}
      />
  
      <Scene
        {...AppConfig.navbarProps}
        key={'leetCodeView'}
        component={LeetCodeView}
        analyticsDesc={' LeetCodeView '}
      />
  
      <Scene
        {...AppConfig.navbarProps}
        key={'moRegexView'}
        title={' Mo正则表达式工具 '}
        rightTitle={'正则示例'}
        rightButtonTextStyle={AppStyles.navbarTitle}
        onRight={() => Actions.regexListView()}
        component={MoRegexView}
        analyticsDesc={' MoRegexView '}
      />
  
      <Scene
        {...AppConfig.navbarProps}
        title={'示例'}
        key={'regexListView'}
        component={RegexListView}
        analyticsDesc={' RegexListView '}
      />
  
      <Scene
        title={'正则资料（MDN)'}
        key={'moRegexInfoView'}
        component={MoRegexInfoView}
        rightTitle={'访问 MDN'}
        rightButtonTextStyle={AppStyles.navbarTitle}
        onRight={() => Helper.openMDNRegex()}
        analyticsDesc={' MoRegexInfoView '}
      />
  
      <Scene
        {...AppConfig.navbarProps}
        key={'freeBookList'}
        title={'在线电子书'}
        rightTitle={'访问原作者 GitHub'}
        rightButtonTextStyle={AppStyles.navbarTitle}
        onRight={() => Helper.openFreeBookGitHub()}
        component={FreeBookList}
        analyticsDesc={' FreeBookList '}
      />
  
      <Scene
        {...AppConfig.navbarProps}
        title={'设计模式'}
        key={'patternsView'}
        rightTitle={'访问原作者 GitHub'}
        rightButtonTextStyle={AppStyles.navbarTitle}
        onRight={() => Helper.openDPGitHub()}
        component={PatternsView}
        analyticsDesc={' PatternsView '}
      />
  
      <Scene
        {...AppConfig.navbarProps}
        key={'patternDetailView'}
        component={PatternDetailView}
        analyticsDesc={' PatternDetailView '}
      />
  
      <Scene
        {...AppConfig.navbarProps}
        title={'Awesomes'}
        key={'awesomeLists'}
        component={AwesomeLists}
        analyticsDesc={' AwesomeLists '}
      />
  
      <Scene
        {...AppConfig.navbarProps}
        key={'awesomesDetail'}
        component={AwesomesDetail}
        analyticsDesc={' AwesomesDetail '}
      />
  
      <Scene
        {...AppConfig.navbarProps}
        title={'版权声明'}
        key={'copyrightView'}
        component={CopyrightView}
        analyticsDesc={' CopyrightView '}
      />
  
      <Scene
        {...AppConfig.navbarProps}
        title={'帮助我们'}
        key={'helpUs'}
        component={HelpUs}
        analyticsDesc={' HelpUs '}
      />
  
      <Scene
        {...AppConfig.navbarProps}
        key={'grEditor'}
        duration={500}
        title={'编辑器'}
        rightTitle={'Run'}
        rightButtonTextStyle={AppStyles.navbarTitle}
        onRight={() => GrEditor.runCode()}
        component={GrEditor}
        analyticsDesc={' GrEditor '}
      />
  
    </Scene>,
  );
  