Skip to content

Commit 11833e9

Browse files
committed
re #168, add upload limit checking server-side, update new file/folder popover stlying
1 parent 494a754 commit 11833e9

File tree

10 files changed

+45
-33
lines changed

10 files changed

+45
-33
lines changed

client/modules/IDE/actions/uploader.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,11 @@ export function dropzoneAcceptCallback(userId, file, done) {
6666
done();
6767
})
6868
.catch((response) => {
69-
file.custom_status = 'rejected'; // eslint-disable-line
70-
if (response.data.responseText && response.data.responseText.message) {
69+
file.custom_status = 'rejected'; // eslint-disable-line
70+
if (response.data && response.data.responseText && response.data.responseText.message) {
7171
done(response.data.responseText.message);
7272
}
73-
done('error preparing the upload');
73+
done('Error: Reached upload limit.');
7474
});
7575
}
7676
};

client/modules/IDE/components/NewFileForm.jsx

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,18 @@ class NewFileForm extends React.Component {
2222
handleSubmit(this.createFile)(data);
2323
}}
2424
>
25-
<label className="new-file-form__name-label" htmlFor="name">Name:</label>
26-
<input
27-
className="new-file-form__name-input"
28-
id="name"
29-
type="text"
30-
placeholder="Name"
31-
{...domOnlyProps(name)}
32-
ref={(element) => { this.fileName = element; }}
33-
/>
34-
<input type="submit" value="Add File" aria-label="add file" />
25+
<div className="new-file-form__input-wrapper">
26+
<label className="new-file-form__name-label" htmlFor="name">Name:</label>
27+
<input
28+
className="new-file-form__name-input"
29+
id="name"
30+
type="text"
31+
placeholder="Name"
32+
{...domOnlyProps(name)}
33+
ref={(element) => { this.fileName = element; }}
34+
/>
35+
<input type="submit" value="Add File" aria-label="add file" />
36+
</div>
3537
{name.touched && name.error && <span className="form-error">{name.error}</span>}
3638
</form>
3739
);

client/modules/IDE/components/NewFolderForm.jsx

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,18 @@ class NewFolderForm extends React.Component {
2525
}
2626
}}
2727
>
28-
<label className="new-folder-form__name-label" htmlFor="name">Name:</label>
29-
<input
30-
className="new-folder-form__name-input"
31-
id="name"
32-
type="text"
33-
placeholder="Name"
34-
ref={(element) => { this.fileName = element; }}
35-
{...domOnlyProps(name)}
36-
/>
37-
<input type="submit" value="Add Folder" aria-label="add folder" />
28+
<div className="new-folder-form__input-wrapper">
29+
<label className="new-folder-form__name-label" htmlFor="name">Name:</label>
30+
<input
31+
className="new-folder-form__name-input"
32+
id="name"
33+
type="text"
34+
placeholder="Name"
35+
ref={(element) => { this.fileName = element; }}
36+
{...domOnlyProps(name)}
37+
/>
38+
<input type="submit" value="Add Folder" aria-label="add folder" />
39+
</div>
3840
{name.touched && name.error && <span className="form-error">{name.error}</span>}
3941
</form>
4042
);

client/modules/IDE/components/NewFolderModal.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class NewFolderModal extends React.Component {
1616
<section className="modal" ref={(element) => { this.newFolderModal = element; }} >
1717
<div className="modal-content-folder">
1818
<div className="modal__header">
19-
<h2 className="modal__title">Add Folder</h2>
19+
<h2 className="modal__title">Create Folder</h2>
2020
<button className="modal__exit-button" onClick={this.props.closeModal}>
2121
<InlineSVG src={exitUrl} alt="Close New Folder Modal" />
2222
</button>

client/modules/IDE/components/Sidebar.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ class Sidebar extends React.Component {
9696
onBlur={this.onBlurComponent}
9797
onFocus={this.onFocusComponent}
9898
>
99-
Add folder
99+
Create folder
100100
</button>
101101
</li>
102102
<li>

client/modules/IDE/components/UploadFileModal.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ class UploadFileModal extends React.Component {
3636
{ this.props.reachedTotalSizeLimit &&
3737
<p>
3838
{
39-
`You have reached the size limit for the number of files you can upload to your account.
39+
`Error: You cannot upload any more files. You have reached the total size limit of 250MB.
4040
If you would like to upload more, please remove the ones you aren't using anymore by
41-
looking through your `
41+
in your `
4242
}
4343
<Link to="/assets">assets</Link>
4444
{'.'}

client/modules/IDE/selectors/users.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { createSelector } from 'reselect';
22

3+
const __process = (typeof global !== 'undefined' ? global : window).process;
34
const getAuthenticated = state => state.user.authenticated;
45
const getTotalSize = state => state.user.totalSize;
6+
const limit = __process.env.UPLOAD_LIMIT || 250000000;
57

68
export const getCanUploadMedia = createSelector(
79
getAuthenticated,
@@ -10,16 +12,16 @@ export const getCanUploadMedia = createSelector(
1012
if (!authenticated) return false;
1113
// eventually do the same thing for verified when
1214
// email verification actually works
13-
if (totalSize > 250000000) return false;
15+
if (totalSize > limit) return false;
1416
return true;
1517
}
1618
);
1719

1820
export const getreachedTotalSizeLimit = createSelector(
1921
getTotalSize,
2022
(totalSize) => {
21-
if (totalSize > 250000000) return true;
22-
//if (totalSize > 1000) return true;
23+
if (totalSize > limit) return true;
24+
// if (totalSize > 1000) return true;
2325
return false;
2426
}
2527
);

client/styles/components/_modal.scss

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
.modal-content {
1111
@extend %modal;
1212
min-height: #{150 / $base-font-size}rem;
13-
width: #{700 / $base-font-size}rem;
13+
width: #{500 / $base-font-size}rem;
1414
padding: #{20 / $base-font-size}rem;
1515
.modal--reduced & {
1616
//min-height: #{150 / $base-font-size}rem;
@@ -32,9 +32,8 @@
3232
margin-bottom: #{20 / $base-font-size}rem;
3333
}
3434

35-
.new-file-form, .new-file-folder {
35+
.new-folder-form__input-wrapper, .new-file-form__input-wrapper {
3636
display: flex;
37-
flex-wrap: wrap;
3837
}
3938

4039
.new-file-form__name-label, .new-folder-form__name-label {
@@ -43,6 +42,7 @@
4342

4443
.new-file-form__name-input, .new-folder-form__name-input {
4544
margin-right: #{10 / $base-font-size}rem;
45+
flex: 1;
4646
}
4747

4848
.modal__divider {

server/controllers/aws.controller.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,11 @@ export function deleteObjectFromS3(req, res) {
7373
}
7474

7575
export function signS3(req, res) {
76+
const limit = process.env.UPLOAD_LIMIT || 250000000;
77+
if (req.user.totalSize > limit) {
78+
res.status(403).send({message: 'user has uploaded the maximum size of assets.'});
79+
return;
80+
}
7681
const fileExtension = getExtension(req.body.name);
7782
const filename = uuid.v4() + fileExtension;
7883
const acl = 'public-read';

server/views/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export function renderIndex() {
3131
window.process.env.EXAMPLES_ENABLED = ${process.env.EXAMPLES_ENABLED === 'false' ? false : true};
3232
window.process.env.EXAMPLES_ENABLED = ${process.env.EXAMPLES_ENABLED === 'false' ? false : true};
3333
window.process.env.UI_ACCESS_TOKEN_ENABLED = ${process.env.UI_ACCESS_TOKEN_ENABLED === 'false' ? false : true};
34+
window.process.env.UPLOAD_LIMIT = ${process.env.UPLOAD_LIMIT === 'false' ? false : true};
3435
</script>
3536
</head>
3637
<body>

0 commit comments

Comments
 (0)