Skip to content

Commit d9f1333

Browse files
authored
Merge pull request #1564 from kchadha/save-load
Save and Load sb3 projects
2 parents 4e895fe + c647ad6 commit d9f1333

File tree

2 files changed

+19
-18
lines changed

2 files changed

+19
-18
lines changed

src/containers/load-button.jsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ class LoadButton extends React.Component {
1616
}
1717
handleChange (e) {
1818
const reader = new FileReader();
19-
reader.onload = () => this.props.vm.fromJSON(reader.result);
20-
reader.readAsText(e.target.files[0]);
19+
reader.onload = () => this.props.vm.loadProjectLocal(reader.result);
20+
reader.readAsArrayBuffer(e.target.files[0]);
2121
}
2222
handleClick () {
2323
this.fileInput.click();
@@ -43,7 +43,7 @@ class LoadButton extends React.Component {
4343

4444
LoadButton.propTypes = {
4545
vm: PropTypes.shape({
46-
fromJSON: PropTypes.func
46+
loadProjectLocal: PropTypes.func
4747
})
4848
};
4949

src/containers/save-button.jsx

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,24 +15,24 @@ class SaveButton extends React.Component {
1515
]);
1616
}
1717
handleClick () {
18-
const json = this.props.vm.saveProjectSb3();
19-
20-
// Download project data into a file - create link element,
21-
// simulate click on it, and then remove it.
2218
const saveLink = document.createElement('a');
2319
document.body.appendChild(saveLink);
2420

25-
const data = new Blob([json], {type: 'text'});
26-
const url = window.URL.createObjectURL(data);
27-
saveLink.href = url;
21+
this.props.vm.saveProjectSb3().then(content => {
22+
const url = window.URL.createObjectURL(content);
23+
24+
saveLink.href = url;
2825

29-
// File name: project-DATE-TIME
30-
const date = new Date();
31-
const timestamp = `${date.toLocaleDateString()}-${date.toLocaleTimeString()}`;
32-
saveLink.download = `project-${timestamp}.json`;
33-
saveLink.click();
34-
window.URL.revokeObjectURL(url);
35-
document.body.removeChild(saveLink);
26+
// TODO user-friendly project name
27+
// File name: project-DATE-TIME
28+
const date = new Date();
29+
const timestamp = `${date.toLocaleDateString()}-${date.toLocaleTimeString()}`;
30+
// TODO change extension to sb3
31+
saveLink.download = `project-${timestamp}.zip`;
32+
saveLink.click();
33+
window.URL.revokeObjectURL(url);
34+
document.body.removeChild(saveLink);
35+
});
3636
}
3737
render () {
3838
const {
@@ -59,7 +59,8 @@ class SaveButton extends React.Component {
5959
SaveButton.propTypes = {
6060
vm: PropTypes.shape({
6161
saveProjectSb3: PropTypes.func
62-
})};
62+
})
63+
};
6364

6465
const mapStateToProps = state => ({
6566
vm: state.vm

0 commit comments

Comments
 (0)