Skip to content

Commit 71cfe59

Browse files
wuweiweiwuCompuIves
authored andcommitted
feat: Allow users to add uploaded files to project (codesandbox#730)
* added AddFileToSandbox option in uploads management * allow DirectoryEntry to upload file inside self * removed unnecessary state clear
1 parent 2ea39a9 commit 71cfe59

File tree

7 files changed

+60
-1
lines changed

7 files changed

+60
-1
lines changed

packages/app/src/app/pages/Sandbox/Editor/Workspace/Files/DirectoryEntry/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ class DirectoryEntry extends React.Component {
111111
this.props.signals.files.fileUploaded({
112112
content: base64Image,
113113
name: file.name,
114+
directoryShortid: this.props.shortid,
114115
});
115116
});
116117
};
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import React from 'react';
2+
import styled from 'styled-components';
3+
import AddIcon from 'react-icons/lib/md/add';
4+
import Tooltip from 'common/components/Tooltip';
5+
6+
export const AddFileToSandboxButton = styled(props => (
7+
<Tooltip title="Add File to Sandbox">
8+
<button {...props}>
9+
<AddIcon />
10+
</button>
11+
</Tooltip>
12+
))`
13+
font-size: 1.2em;
14+
background-color: inherit;
15+
border: none;
16+
padding: 5px 6px 9px 6px;
17+
color: rgba(255, 255, 255, 0.5);
18+
cursor: pointer;
19+
&:hover {
20+
color: rgba(255, 255, 255, 1);
21+
}
22+
&[disabled] {
23+
opacity: 0.5;
24+
cursor: default;
25+
}
26+
`;
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import React from 'react';
2+
import { AddFileToSandboxButton } from './elements';
3+
4+
export default class AddFileToSandboxButtonContainer extends React.PureComponent {
5+
addFileToSandbox = () => {
6+
const { onAddFileToSandbox, url, name } = this.props;
7+
onAddFileToSandbox({ url, name });
8+
};
9+
10+
render() {
11+
return <AddFileToSandboxButton onClick={this.addFileToSandbox} />;
12+
}
13+
}

packages/app/src/app/pages/common/Modals/StorageManagementModal/FilesList/index.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ import moment from 'moment';
33
import { sortBy } from 'lodash';
44
import filesize from 'filesize';
55
import DeleteFileButton from '../DeleteFileButton';
6+
import AddFileToSandboxButton from '../AddFileToSandboxButton';
67
import { HeaderTitle, Table, StatBody, Body, FileRow } from './elements';
78

8-
function FilesList({ files, deleteFile }) {
9+
function FilesList({ files, deleteFile, addFileToSandbox }) {
910
return (
1011
<Table>
1112
<thead>
@@ -14,6 +15,7 @@ function FilesList({ files, deleteFile }) {
1415
<HeaderTitle>Created</HeaderTitle>
1516
<HeaderTitle>Size</HeaderTitle>
1617
<HeaderTitle />
18+
<HeaderTitle />
1719
</tr>
1820
</thead>
1921
<Body>
@@ -26,6 +28,13 @@ function FilesList({ files, deleteFile }) {
2628
</td>
2729
<td>{moment(f.insertedAt).format('ll')}</td>
2830
<td>{filesize(f.objectSize)}</td>
31+
<StatBody style={{ padding: '0.55rem 0.5rem', cursor: 'pointer' }}>
32+
<AddFileToSandboxButton
33+
url={f.url}
34+
name={f.name}
35+
onAddFileToSandbox={addFileToSandbox}
36+
/>
37+
</StatBody>
2938
<StatBody style={{ padding: '0.55rem 0.5rem', cursor: 'pointer' }}>
3039
<DeleteFileButton id={f.id} onDelete={deleteFile} />
3140
</StatBody>

packages/app/src/app/pages/common/Modals/StorageManagementModal/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ class StorageManagementModal extends React.Component {
3939
<FilesList
4040
files={store.uploadedFiles}
4141
deleteFile={signals.files.deletedUploadedFile}
42+
addFileToSandbox={signals.files.addedFileToSandbox}
4243
/>
4344
)}
4445
{isEmpty && (

packages/app/src/app/store/modules/files/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ export default Module({
55
model: {},
66
state: {},
77
signals: {
8+
addedFileToSandbox: sequences.addFileToSandbox,
89
gotUploadedFiles: sequences.getUploadedFiles,
910
deletedUploadedFile: sequences.deleteUploadedFile,
1011
fileUploaded: sequences.uploadFile,

packages/app/src/app/store/modules/files/sequences.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,14 @@ export const createModule = [
6161
},
6262
];
6363

64+
export const addFileToSandbox = [
65+
set(props`newCode`, props`url`),
66+
set(props`title`, props`name`),
67+
set(props`isBinary`, true),
68+
closeModal,
69+
createModule,
70+
];
71+
6472
export const uploadFile = [
6573
set(props`modal`, 'uploading'),
6674
setModal,

0 commit comments

Comments
 (0)