cncjs

Форк
0
69 строк · 1.8 Кб
1
import React, { PureComponent } from 'react';
2
import { Redirect, withRouter } from 'react-router-dom';
3
import { trackPage } from '../lib/analytics';
4
import Header from './Header';
5
import Sidebar from './Sidebar';
6
import Workspace from './Workspace';
7
import Settings from './Settings';
8
import styles from './App.styl';
9

10
class App extends PureComponent {
11
    static propTypes = {
12
      ...withRouter.propTypes
13
    };
14

15
    render() {
16
      const { location } = this.props;
17
      const accepted = ([
18
        '/workspace',
19
        '/settings',
20
        '/settings/general',
21
        '/settings/workspace',
22
        '/settings/machine-profiles',
23
        '/settings/user-accounts',
24
        '/settings/controller',
25
        '/settings/commands',
26
        '/settings/events',
27
        '/settings/about'
28
      ].indexOf(location.pathname) >= 0);
29

30
      if (!accepted) {
31
        return (
32
          <Redirect
33
            to={{
34
              pathname: '/workspace',
35
              state: {
36
                from: location
37
              }
38
            }}
39
          />
40
        );
41
      }
42

43
      trackPage(location.pathname);
44

45
      return (
46
        <div>
47
          <Header {...this.props} />
48
          <aside className={styles.sidebar} id="sidebar">
49
            <Sidebar {...this.props} />
50
          </aside>
51
          <div className={styles.main}>
52
            <div className={styles.content}>
53
              <Workspace
54
                {...this.props}
55
                style={{
56
                  display: (location.pathname !== '/workspace') ? 'none' : 'block'
57
                }}
58
              />
59
              {location.pathname.indexOf('/settings') === 0 &&
60
                <Settings {...this.props} />
61
              }
62
            </div>
63
          </div>
64
        </div>
65
      );
66
    }
67
}
68

69
export default withRouter(App);
70

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.