-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathApp.js
102 lines (88 loc) · 2.38 KB
/
App.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import React, { Component } from 'react';
import CSSTransitionGroup from 'react/lib/ReactCSSTransitionGroup';
import { connect } from 'react-redux';
import { hideModal, showModal } from './lib/actions';
import CreateModal from './CreateModal';
import Extensions from './Extensions';
import Header from './Header';
import Installer from './Installer';
import MachineList from './MachineList';
import Modal from './Modal';
import Settings from './Settings';
import openBrowser from './lib/openBrowser';
import Button from './Button';
import './App.css';
class App extends Component {
render() {
const { dispatch, installer } = this.props;
const { modal } = this.props.ui;
const installed = installer.installed.chassis;
let modalComponent = null;
const onDismiss = () => dispatch(hideModal());
switch ( modal ) {
case 'create':
modalComponent = <Modal key="create"><CreateModal onDismiss={onDismiss} /></Modal>;
break;
case 'settings':
modalComponent = <Modal key="settings"><Settings onDismiss={onDismiss} /></Modal>;
break;
case 'extensions':
modalComponent = <Modal key="extensions"><Extensions onDismiss={onDismiss} /></Modal>;
break;
default:
// No-op
break;
}
// Installation override.
if ( ! installed ) {
modalComponent = <Modal key="install"><Installer onDismiss={onDismiss} /></Modal>;
}
const logo = <img role="presentation" src="logo.png" />;
return <div className="App">
{ installed ?
<Header icon={ logo } title="Chassis">
<Button
icon="bullhorn"
light
noborder
onClick={ () => openBrowser( 'https://github.com/Chassis/Desktop/issues' ) }
>
Feedback
</Button>
<Button
icon="gear"
light
noborder
shortcut="Cmd+,"
onClick={ () => dispatch(showModal('settings')) }
>
Settings
</Button>
<Button
icon="plus"
light
noborder
shortcut="Cmd+N"
onClick={ () => dispatch(showModal('create')) }
>
Add…
</Button>
</Header>
: null }
<CSSTransitionGroup
component="div"
transitionEnterTimeout={ 150 }
transitionLeaveTimeout={ 150 }
transitionName="splash-fade"
>
{ modalComponent }
</CSSTransitionGroup>
{ installed ?
<div className="app-content">
<MachineList />
</div>
: null }
</div>;
}
}
export default connect(state => state)(App);