Skip to content

Commit dfedc81

Browse files
committed
✨ add files tab
1 parent d1b4d8d commit dfedc81

File tree

3 files changed

+54
-11
lines changed

3 files changed

+54
-11
lines changed

client/components/mobile/Explorer.jsx

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import React from 'react';
2+
import styled from 'styled-components';
3+
import PropTypes from 'prop-types';
4+
import Sidebar from './Sidebar';
5+
import ConnectedFileNode from '../../modules/IDE/components/FileNode';
6+
7+
8+
const Explorer = ({ id, canEdit }) => (
9+
<Sidebar title="Files">
10+
<ConnectedFileNode id={id} canEdit={canEdit} />
11+
</Sidebar>
12+
);
13+
14+
Explorer.propTypes = {
15+
id: PropTypes.number.isRequired,
16+
canEdit: PropTypes.bool
17+
};
18+
Explorer.defaultProps = {
19+
canEdit: false
20+
};
21+
22+
export default Explorer;

client/components/Sidebar.jsx renamed to client/components/mobile/Sidebar.jsx

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import React from 'react';
22
import PropTypes from 'prop-types';
33
import { Link } from 'react-router';
44
import styled from 'styled-components';
5-
import { remSize, prop, common } from '../theme';
6-
import Header from './mobile/Header';
7-
import IconButton from './mobile/IconButton';
8-
import { ExitIcon } from '../common/icons';
5+
import { remSize, prop, common } from '../../theme';
6+
import Header from './Header';
7+
import IconButton from './IconButton';
8+
import { ExitIcon } from '../../common/icons';
99

1010

1111
const SidebarWrapper = styled.div`
@@ -20,23 +20,26 @@ const SidebarWrapper = styled.div`
2020
box-shadow: 0 6px 6px 0 rgba(0,0,0,0.10);
2121
`;
2222

23-
const Sidebar = ({ title, onPressClose }) => (
23+
const Sidebar = ({ title, onPressClose, children }) => (
2424
<SidebarWrapper>
2525
{title &&
2626
<Header slim title={title} fixed={false}>
2727
<IconButton onPress={onPressClose} icon={ExitIcon} aria-label="Return to ide view" />
2828
</Header>}
29+
{children}
2930
</SidebarWrapper>
3031
);
3132

3233
Sidebar.propTypes = {
3334
title: PropTypes.string,
34-
onPressClose: PropTypes.func.isRequired,
35+
onPressClose: PropTypes.func,
36+
children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]),
3537
};
3638

3739
Sidebar.defaultProps = {
3840
title: null,
39-
// onPressClose: PropTypes.func.isRequired,
41+
children: [],
42+
onPressClose: () => {}
4043
};
4144

4245

client/modules/IDE/pages/MobileIDEView.jsx

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,36 @@ import Header from '../../../components/mobile/Header';
2727
import Screen from '../../../components/mobile/MobileScreen';
2828
import Footer from '../../../components/mobile/Footer';
2929
import IDEWrapper from '../../../components/mobile/IDEWrapper';
30+
import MobileExplorer from '../../../components/mobile/Explorer';
3031
import Console from '../components/Console';
3132
import { remSize } from '../../../theme';
3233
// import OverlayManager from '../../../components/OverlayManager';
3334
import ActionStrip from '../../../components/mobile/ActionStrip';
3435
import useAsModal from '../../../components/useAsModal';
3536
import { PreferencesIcon } from '../../../common/icons';
3637
import Dropdown from '../../../components/Dropdown';
37-
import Sidebar from '../../../components/Sidebar';
38+
import Sidebar from '../../../components/mobile/Sidebar';
39+
40+
41+
const getRootFile = files => files && files.filter(file => file.name === 'root')[0];
42+
const getRootFileID = files => (root => root && root.id)(getRootFile(files));
3843

3944
const isUserOwner = ({ project, user }) =>
4045
project.owner && project.owner.id === user.id;
4146

47+
48+
// const userCanEditProject = (props) => {
49+
// let canEdit;
50+
// if (!props.owner) {
51+
// canEdit = true;
52+
// } else if (props.user.authenticated && props.owner.id === props.user.id) {
53+
// canEdit = true;
54+
// } else {
55+
// canEdit = false;
56+
// }
57+
// return canEdit;
58+
// };
59+
4260
const Expander = styled.div`
4361
height: ${props => (props.expanded ? remSize(160) : remSize(27))};
4462
`;
@@ -75,6 +93,7 @@ const MobileIDEView = (props) => {
7593

7694
const { username } = user;
7795

96+
7897
// Force state reset
7998
useEffect(clearPersistedState, []);
8099
useEffect(stopSketch, []);
@@ -91,14 +110,13 @@ const MobileIDEView = (props) => {
91110
setCurrentProjectID(params.project_id);
92111
}, [params, project, username]);
93112

113+
// Screen Modals
94114
const [toggleNavDropdown, NavDropDown] = useAsModal(<Dropdown
95115
items={getNatOptions(username)}
96116
align="right"
97117
/>);
98118

99-
const [toggleExplorer, Explorer] = useAsModal(<Sidebar
100-
title="Files"
101-
/>, true);
119+
const [toggleExplorer, Explorer] = useAsModal(<MobileExplorer id={getRootFileID(files)} canEdit={false} />, true);
102120

103121
// toggle sidebar starting opened
104122
useEffect(toggleExplorer, []);

0 commit comments

Comments
 (0)