Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
3c53bac
Revert "Make remixing/saving faster by marking all assets as clean to…
paulkaplan Dec 21, 2018
0465332
Merge pull request #4181 from LLK/revert-4153-enfasten-remix
paulkaplan Dec 21, 2018
be37452
Update to storage 1.2.2 for clean asset flag fix
paulkaplan Dec 21, 2018
daeec8f
Merge pull request #4182 from LLK/paulkaplan-patch-1
paulkaplan Dec 21, 2018
259d079
Update scratch-vm to pull in changes from scratch-sb1-converter
kchadha Dec 21, 2018
9b65910
Merge pull request #4183 from kchadha/update-vm
kchadha Dec 21, 2018
9c866e2
chore(package): update scratch-vm to version 0.2.0-prerelease.2018122…
greenkeeper[bot] Dec 21, 2018
135e521
Merge pull request #4185 from LLK/greenkeeper/scratch-vm-0.2.0-prerel…
kchadha Dec 21, 2018
6b2cf97
Fix regex for extracting the project title from a .sb file
kchadha Dec 25, 2018
41d9100
Update unit test that was checking that .sb files don't get project t…
kchadha Dec 26, 2018
2a6d798
Merge pull request #4195 from kchadha/fix-filename-regex
kchadha Dec 26, 2018
4d0eb63
chore(package): update scratch-render to version 0.1.0-prerelease.201…
greenkeeper[bot] Dec 26, 2018
faf73c9
chore(package): update scratch-vm to version 0.2.0-prerelease.2018122…
greenkeeper[bot] Dec 26, 2018
77df4e8
Merge pull request #4200 from LLK/greenkeeper/scratch-vm-0.2.0-prerel…
kchadha Dec 26, 2018
c50bb3c
Merge pull request #4199 from LLK/greenkeeper/scratch-render-0.1.0-pr…
kchadha Dec 26, 2018
9cd4119
Fix #4203 by checking whether a target exists before asking whether i…
picklesrus Dec 26, 2018
57751e9
Merge pull request #4204 from picklesrus/sensing-target-bug
kchadha Dec 26, 2018
f05a7d1
chore(package): update scratch-vm to version 0.2.0-prerelease.2018122…
greenkeeper[bot] Dec 26, 2018
0ce0e48
Merge pull request #4205 from LLK/greenkeeper/scratch-vm-0.2.0-prerel…
kchadha Dec 26, 2018
31730cc
Change WebGL link
apple502j Dec 27, 2018
70eb240
Use the loading screen in player mode
paulkaplan Dec 27, 2018
afc8ffc
Merge pull request #4210 from paulkaplan/stage-loading
paulkaplan Dec 27, 2018
a9280c9
Merge pull request #4208 from apple502j/patch-9
thisandagain Dec 27, 2018
51b72b2
Pin eslint-plugin-react because v7.12 has a bug causing erroneous fails
paulkaplan Dec 28, 2018
83a1bab
Merge pull request #4215 from paulkaplan/pin-eslint-plugin-react
paulkaplan Dec 28, 2018
34d712a
Bump scratch-vm
rschamp Jan 2, 2019
72730d1
Merge pull request #4223 from LLK/rschamp-patch-1
rschamp Jan 2, 2019
7b0d092
Merge branch 'develop' of https://github.com/LLK/scratch-gui into dev…
takaokouji Jan 3, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
"eslint": "^5.0.1",
"eslint-config-scratch": "^5.0.0",
"eslint-plugin-import": "^2.8.0",
"eslint-plugin-react": "^7.5.1",
"eslint-plugin-react": "7.11.1",
"eslint-watch": "^4.0.2",
"file-loader": "2.0.0",
"get-float-time-domain-data": "0.1.0",
Expand Down Expand Up @@ -111,10 +111,10 @@
"scratch-blocks": "0.1.0-prerelease.1545162154",
"scratch-l10n": "3.1.20181220222259",
"scratch-paint": "0.2.0-prerelease.20181220194927",
"scratch-render": "0.1.0-prerelease.20181220195236",
"scratch-storage": "1.2.1",
"scratch-render": "0.1.0-prerelease.20181226153401",
"scratch-storage": "1.2.2",
"scratch-svg-renderer": "0.2.0-prerelease.20181220183040",
"scratch-vm": "0.2.0-prerelease.20181221030743",
"scratch-vm": "0.2.0-prerelease.20190102175344",
"selenium-webdriver": "3.6.0",
"startaudiocontext": "1.2.1",
"style-loader": "^0.23.0",
Expand Down
1 change: 1 addition & 0 deletions src/components/gui/gui.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ const GUIComponent = props => {
<StageWrapper
isRendererSupported={isRendererSupported}
isRtl={isRtl}
loading={loading}
stageSize={STAGE_SIZE_MODES.large}
vm={vm}
>
Expand Down
2 changes: 1 addition & 1 deletion src/components/loader/loader.css
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
@import "../../css/z-index.css";

.background {
position: fixed;
position: absolute;
top: 0;
left: 0;
width: 100%;
Expand Down
6 changes: 6 additions & 0 deletions src/components/stage-wrapper/stage-wrapper.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@ import Box from '../box/box.jsx';
import {STAGE_DISPLAY_SIZES} from '../../lib/layout-constants.js';
import StageHeader from '../../containers/stage-header.jsx';
import Stage from '../../containers/stage.jsx';
import Loader from '../loader/loader.jsx';

import styles from './stage-wrapper.css';

const StageWrapperComponent = function (props) {
const {
isRtl,
isRendererSupported,
loading,
stageSize,
vm
} = props;
Expand All @@ -38,13 +40,17 @@ const StageWrapperComponent = function (props) {
null
}
</Box>
{loading ? (
<Loader />
) : null}
</Box>
);
};

StageWrapperComponent.propTypes = {
isRendererSupported: PropTypes.bool.isRequired,
isRtl: PropTypes.bool,
loading: PropTypes.bool,
stageSize: PropTypes.oneOf(Object.keys(STAGE_DISPLAY_SIZES)).isRequired,
vm: PropTypes.instanceOf(VM).isRequired
};
Expand Down
2 changes: 1 addition & 1 deletion src/components/webgl-modal/webgl-modal.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ const WebGlModal = ({intl, ...props}) => (
webGlLink: (
<a
className={styles.faqLink}
href="https://en.wikipedia.org/wiki/WebGL#Support"
href="https://get.webgl.org/"
>
<FormattedMessage
defaultMessage="does not support WebGL"
Expand Down
5 changes: 3 additions & 2 deletions src/containers/sb-file-uploader.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,9 @@ class SBFileUploader extends React.Component {
}
getProjectTitleFromFilename (fileInputFilename) {
if (!fileInputFilename) return '';
// only parse title from files like "filename.sb2" or "filename.sb3"
const matches = fileInputFilename.match(/^(.*)\.sb[23]$/);
// only parse title with valid scratch project extensions
// (.sb, .sb2, and .sb3)
const matches = fileInputFilename.match(/^(.*)\.sb[23]?$/);
if (!matches) return '';
return matches[1].substring(0, 100); // truncate project title to max 100 chars
}
Expand Down
8 changes: 6 additions & 2 deletions src/lib/blocks.js
Original file line number Diff line number Diff line change
Expand Up @@ -260,8 +260,12 @@ export default function (vm) {
return stageOptions.concat(stageVariableMenuItems);
}
// Get all the local variables (no lists) and add them to the menu.
const spriteVariableOptions =
vm.runtime.getSpriteTargetByName(selectedItem).getAllVariableNamesInScopeByType('', true);
const target = vm.runtime.getSpriteTargetByName(selectedItem);
let spriteVariableOptions = [];
// The target should exist, but there are ways for it not to (e.g. #4203).
if (target) {
spriteVariableOptions = target.getAllVariableNamesInScopeByType('', true);
}
const spriteVariableMenuItems = spriteVariableOptions.map(variable => [variable, variable]);
return spriteOptions.concat(spriteVariableMenuItems);
}
Expand Down
3 changes: 0 additions & 3 deletions src/lib/vm-manager-hoc.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,6 @@ const vmManagerHOC = function (WrappedComponent) {
loadProject () {
return this.props.vm.loadProject(this.props.projectData)
.then(() => {
// Mark all the assets as clean since they just got loaded
this.props.vm.assets.forEach(asset => (asset.clean = true));

this.props.onLoadedProject(this.props.loadingState, this.props.canSave);
// Wrap in a setTimeout because skin loading in
// the renderer can be async.
Expand Down
4 changes: 2 additions & 2 deletions test/unit/containers/sb-file-uploader.test.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -65,14 +65,14 @@ describe('SBFileUploader Container', () => {
expect(projectName).toBe('my project is great');
});

test('sets blank title with .sb filename', () => {
test('correctly sets title with .sb filename', () => {
const wrapper = shallowWithIntl(getContainer(), {context: {store}});
const instance = wrapper
.dive() // unwrap redux Connect(InjectIntl(SBFileUploader))
.dive() // unwrap InjectIntl(SBFileUploader)
.instance(); // SBFileUploader
const projectName = instance.getProjectTitleFromFilename('my project is great.sb');
expect(projectName).toBe('');
expect(projectName).toBe('my project is great');
});

test('sets blank title with filename with no extension', () => {
Expand Down