mirror of
https://github.com/scratchfoundation/scratch-www.git
synced 2025-03-14 15:09:59 -04:00
commit
8b1b8de6dd
4 changed files with 73 additions and 81 deletions
130
package-lock.json
generated
130
package-lock.json
generated
|
@ -62,9 +62,9 @@
|
|||
}
|
||||
},
|
||||
"chokidar": {
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.0.tgz",
|
||||
"integrity": "sha512-JgQM9JS92ZbFR4P90EvmzNpSGhpPBGBSj10PILeDyYFwp4h2/D9OM03wsJ4zW1fEp4ka2DGrnUeD7FuvQ2aZ2Q==",
|
||||
"version": "3.5.1",
|
||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz",
|
||||
"integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
|
@ -4609,9 +4609,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"caniuse-lite": {
|
||||
"version": "1.0.30001174",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001174.tgz",
|
||||
"integrity": "sha512-tqClL/4ThQq6cfFXH3oJL4rifFBeM6gTkphjao5kgwMaW9yn0tKgQLAEfKzDwj6HQWCB/aWo8kTFlSvIN8geEA==",
|
||||
"version": "1.0.30001178",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001178.tgz",
|
||||
"integrity": "sha512-VtdZLC0vsXykKni8Uztx45xynytOi71Ufx9T8kHptSw9AL4dpqailUJJHavttuzUe1KYuBYtChiWv+BAb7mPmQ==",
|
||||
"dev": true
|
||||
},
|
||||
"canvas-fit": {
|
||||
|
@ -15557,9 +15557,9 @@
|
|||
}
|
||||
},
|
||||
"node-releases": {
|
||||
"version": "1.1.69",
|
||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.69.tgz",
|
||||
"integrity": "sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA==",
|
||||
"version": "1.1.70",
|
||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.70.tgz",
|
||||
"integrity": "sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw==",
|
||||
"dev": true
|
||||
},
|
||||
"node-sass": {
|
||||
|
@ -20527,9 +20527,9 @@
|
|||
}
|
||||
},
|
||||
"scratch-blocks": {
|
||||
"version": "0.1.0-prerelease.20210111135916",
|
||||
"resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.1.0-prerelease.20210111135916.tgz",
|
||||
"integrity": "sha512-1SY1WKmwz9ExWMkIYDnKpOfNLdhVWf4twM/BP0gzIUA2mLLgmBv3YoV/m8bTLeCeuglgREDciXN1YMphFwZ4gg==",
|
||||
"version": "0.1.0-prerelease.20210119033720",
|
||||
"resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.1.0-prerelease.20210119033720.tgz",
|
||||
"integrity": "sha512-ICSbSnMMrQ/FtGyn5smy4rFskOW34FjK1WKOv+JiGawmgzw3VlsljukeFVNDr5v2zDGIYAF+lwf7WbkVIyhCWQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"exports-loader": "0.6.3",
|
||||
|
@ -20537,9 +20537,9 @@
|
|||
}
|
||||
},
|
||||
"scratch-gui": {
|
||||
"version": "0.1.0-prerelease.20210112040114",
|
||||
"resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-0.1.0-prerelease.20210112040114.tgz",
|
||||
"integrity": "sha512-xXfw2804GZFo88eF6LbIdar0U2MuUVqWrREphGQTMIDgQS3CjwrVJ+T8XqkBzek0t26ZgQkL2K2aXjbAKb3hmw==",
|
||||
"version": "0.1.0-prerelease.20210119122627",
|
||||
"resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-0.1.0-prerelease.20210119122627.tgz",
|
||||
"integrity": "sha512-TfwsWtdTxlitOaHWgL0E0baCCUTqUPoq0H1NxabdibzDkK2FS2yI3AcR2xEFbCVMZE42qpdH1T+IBTDdohnROQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"arraybuffer-loader": "^1.0.6",
|
||||
|
@ -20590,13 +20590,13 @@
|
|||
"redux": "3.7.2",
|
||||
"redux-throttle": "0.1.1",
|
||||
"scratch-audio": "0.1.0-prerelease.20200528195344",
|
||||
"scratch-blocks": "0.1.0-prerelease.20210111135916",
|
||||
"scratch-l10n": "3.10.20210112031449",
|
||||
"scratch-paint": "0.2.0-prerelease.20201020103914",
|
||||
"scratch-render": "0.1.0-prerelease.20201113223804",
|
||||
"scratch-blocks": "0.1.0-prerelease.20210119033720",
|
||||
"scratch-l10n": "3.10.20210119031507",
|
||||
"scratch-paint": "0.2.0-prerelease.20210119034357",
|
||||
"scratch-render": "0.1.0-prerelease.20210115005247",
|
||||
"scratch-storage": "1.3.3",
|
||||
"scratch-svg-renderer": "0.2.0-prerelease.20210107222546",
|
||||
"scratch-vm": "0.2.0-prerelease.20201125065300",
|
||||
"scratch-svg-renderer": "0.2.0-prerelease.20210114214521",
|
||||
"scratch-vm": "0.2.0-prerelease.20210119120008",
|
||||
"startaudiocontext": "1.2.1",
|
||||
"style-loader": "^0.23.0",
|
||||
"text-encoding": "0.7.0",
|
||||
|
@ -20775,9 +20775,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"electron-to-chromium": {
|
||||
"version": "1.3.636",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.636.tgz",
|
||||
"integrity": "sha512-Adcvng33sd3gTjNIDNXGD1G4H6qCImIy2euUJAQHtLNplEKU5WEz5KRJxupRNIIT8sD5oFZLTKBWAf12Bsz24A==",
|
||||
"version": "1.3.642",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.642.tgz",
|
||||
"integrity": "sha512-cev+jOrz/Zm1i+Yh334Hed6lQVOkkemk2wRozfMF4MtTR7pxf3r3L5Rbd7uX1zMcEqVJ7alJBnJL7+JffkC6FQ==",
|
||||
"dev": true
|
||||
},
|
||||
"file-loader": {
|
||||
|
@ -21013,6 +21013,18 @@
|
|||
"integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
|
||||
"dev": true
|
||||
},
|
||||
"scratch-l10n": {
|
||||
"version": "3.10.20210119031507",
|
||||
"resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.10.20210119031507.tgz",
|
||||
"integrity": "sha512-NDIEtslj4OhSOVGMUAeZBs20dfw+fvaiaBHetZea4oHyUUlV0LB7VTu/2CK49ET/hqe9b3W2uC494FHlzjtqcQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/cli": "^7.1.2",
|
||||
"@babel/core": "^7.1.2",
|
||||
"babel-plugin-react-intl": "^3.0.1",
|
||||
"transifex": "1.6.6"
|
||||
}
|
||||
},
|
||||
"scratch-storage": {
|
||||
"version": "1.3.3",
|
||||
"resolved": "https://registry.npmjs.org/scratch-storage/-/scratch-storage-1.3.3.tgz",
|
||||
|
@ -21080,9 +21092,9 @@
|
|||
}
|
||||
},
|
||||
"scratch-l10n": {
|
||||
"version": "3.10.20210112031449",
|
||||
"resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.10.20210112031449.tgz",
|
||||
"integrity": "sha512-eVJmpbBWv4RIOgCUk/fPOt73USbpllTPINhnWI/GLGJH+jW8cDsYLx9bdwUpqB1WVNXI0hTmPcm88h8pCJFrxw==",
|
||||
"version": "3.10.20210120031458",
|
||||
"resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.10.20210120031458.tgz",
|
||||
"integrity": "sha512-8SwGnT2BnlS7zNhB1cXl/EcyoncLZog71OECs4/VSF3NxnljbbutEHXYEAdBNBp4TYUb09QA4Ge8eCiEL9oqeg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/cli": "^7.1.2",
|
||||
|
@ -21092,9 +21104,9 @@
|
|||
}
|
||||
},
|
||||
"scratch-paint": {
|
||||
"version": "0.2.0-prerelease.20201020103914",
|
||||
"resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-0.2.0-prerelease.20201020103914.tgz",
|
||||
"integrity": "sha512-P8khVZzrT43Bv1WYh2fFF792qyHMp56df+8/q4LWHPtFDvIzL04VhSwKsgTQdroh7q+hMyImSPuxhLtBOE65FA==",
|
||||
"version": "0.2.0-prerelease.20210119034357",
|
||||
"resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-0.2.0-prerelease.20210119034357.tgz",
|
||||
"integrity": "sha512-BqoRBifiw6BZLewYhQLon7+OL1F6FkJM79MMc03ssz4wGpIgZBGTHEvkfwvmg2GgU1vC+451KhXv8qlaEHI2FQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@scratch/paper": "0.11.20200728195508",
|
||||
|
@ -21105,7 +21117,7 @@
|
|||
"minilog": "3.1.0",
|
||||
"parse-color": "1.0.0",
|
||||
"prop-types": "^15.5.10",
|
||||
"scratch-svg-renderer": "0.2.0-prerelease.20201019174008"
|
||||
"scratch-render-fonts": "^1.0.0-prerelease.20200507182347"
|
||||
},
|
||||
"dependencies": {
|
||||
"lodash.omit": {
|
||||
|
@ -21128,20 +21140,6 @@
|
|||
"requires": {
|
||||
"microee": "0.0.6"
|
||||
}
|
||||
},
|
||||
"scratch-svg-renderer": {
|
||||
"version": "0.2.0-prerelease.20201019174008",
|
||||
"resolved": "https://registry.npmjs.org/scratch-svg-renderer/-/scratch-svg-renderer-0.2.0-prerelease.20201019174008.tgz",
|
||||
"integrity": "sha512-RF3Zx09Nl+uLTrPD7K4tR6Sqq/JqRTsLVRugohEJ8pGHXshvBh/A4zWx7XmMZHOdEDHunPxpCDHkW2LoMCFioQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"base64-js": "1.2.1",
|
||||
"base64-loader": "1.0.0",
|
||||
"dompurify": "2.1.1",
|
||||
"minilog": "3.1.0",
|
||||
"scratch-render-fonts": "1.0.0-prerelease.20200507182347",
|
||||
"transformation-matrix": "1.15.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -21168,9 +21166,9 @@
|
|||
}
|
||||
},
|
||||
"scratch-render": {
|
||||
"version": "0.1.0-prerelease.20201113223804",
|
||||
"resolved": "https://registry.npmjs.org/scratch-render/-/scratch-render-0.1.0-prerelease.20201113223804.tgz",
|
||||
"integrity": "sha512-Qb7wpwVNmLkoJ+3HN50DBohMsYsALJu2lLfSmIrtNQ+DcFXK+rgCvRpVvEtQWKQeSFIbjC0XgyMJHcov5vH3RQ==",
|
||||
"version": "0.1.0-prerelease.20210115005247",
|
||||
"resolved": "https://registry.npmjs.org/scratch-render/-/scratch-render-0.1.0-prerelease.20210115005247.tgz",
|
||||
"integrity": "sha512-G6ftVqBy6j2AwyTynEQQfwA4XWgVlWM5OmEO6qAmC55RNNrmUcSBnICl4FfcC6pIpNu+th4GLiOasfrKYoNkjg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"grapheme-breaker": "0.3.2",
|
||||
|
@ -21180,7 +21178,7 @@
|
|||
"minilog": "3.1.0",
|
||||
"raw-loader": "^0.5.1",
|
||||
"scratch-storage": "^1.0.0",
|
||||
"scratch-svg-renderer": "0.2.0-prerelease.20201019174008",
|
||||
"scratch-svg-renderer": "0.2.0-prerelease.20210114214521",
|
||||
"twgl.js": "4.4.0"
|
||||
},
|
||||
"dependencies": {
|
||||
|
@ -21226,28 +21224,6 @@
|
|||
"worker-loader": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"scratch-svg-renderer": {
|
||||
"version": "0.2.0-prerelease.20201019174008",
|
||||
"resolved": "https://registry.npmjs.org/scratch-svg-renderer/-/scratch-svg-renderer-0.2.0-prerelease.20201019174008.tgz",
|
||||
"integrity": "sha512-RF3Zx09Nl+uLTrPD7K4tR6Sqq/JqRTsLVRugohEJ8pGHXshvBh/A4zWx7XmMZHOdEDHunPxpCDHkW2LoMCFioQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"base64-js": "1.2.1",
|
||||
"base64-loader": "1.0.0",
|
||||
"dompurify": "2.1.1",
|
||||
"minilog": "3.1.0",
|
||||
"scratch-render-fonts": "1.0.0-prerelease.20200507182347",
|
||||
"transformation-matrix": "1.15.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"base64-js": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz",
|
||||
"integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"text-encoding": {
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.7.0.tgz",
|
||||
|
@ -21319,9 +21295,9 @@
|
|||
}
|
||||
},
|
||||
"scratch-svg-renderer": {
|
||||
"version": "0.2.0-prerelease.20210107222546",
|
||||
"resolved": "https://registry.npmjs.org/scratch-svg-renderer/-/scratch-svg-renderer-0.2.0-prerelease.20210107222546.tgz",
|
||||
"integrity": "sha512-1cf+QlOIMblQ9z/yVZhrWkgmkOHwcl3BgqB6+aAV8IS6E7yWa2H0Cxundak089pDH47mbSf6PGs/aljjT/bpew==",
|
||||
"version": "0.2.0-prerelease.20210114214521",
|
||||
"resolved": "https://registry.npmjs.org/scratch-svg-renderer/-/scratch-svg-renderer-0.2.0-prerelease.20210114214521.tgz",
|
||||
"integrity": "sha512-zfHrVm2EyHOmQQBcSDlX8v3+2054NyGcYHJt30hKELaMrflh5Cc+sbEihizPVqfPnEDv8STC4J84cTxfVLGowg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"base64-js": "1.2.1",
|
||||
|
@ -21356,9 +21332,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"scratch-vm": {
|
||||
"version": "0.2.0-prerelease.20201125065300",
|
||||
"resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-0.2.0-prerelease.20201125065300.tgz",
|
||||
"integrity": "sha512-1kU4L6kdlkoIEIMKPyccVSDu1oPLDVbBkmqq5yk9tjLS0wT5Y/PU/P8q3Ey0ZumvNnLPWbw4QzQQl8g/2J/fcw==",
|
||||
"version": "0.2.0-prerelease.20210119120008",
|
||||
"resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-0.2.0-prerelease.20210119120008.tgz",
|
||||
"integrity": "sha512-/KECsVtr417P1HqCvX4cmELpMb6ASDOkIQAFpGZuOprY/Q/riLjsMmK8+0VQvYlEW9dKgusYMoLBmo1+1SE1GQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@vernier/godirect": "1.5.0",
|
||||
|
|
|
@ -129,7 +129,7 @@
|
|||
"redux-mock-store": "^1.2.3",
|
||||
"redux-thunk": "2.0.1",
|
||||
"sass-loader": "6.0.6",
|
||||
"scratch-gui": "0.1.0-prerelease.20210112040114",
|
||||
"scratch-gui": "0.1.0-prerelease.20210119122627",
|
||||
"scratch-l10n": "latest",
|
||||
"selenium-webdriver": "3.6.0",
|
||||
"slick-carousel": "1.6.0",
|
||||
|
|
|
@ -40,19 +40,31 @@ class ComposeComment extends React.Component {
|
|||
'handleInput',
|
||||
'handleMuteClose',
|
||||
'handleMuteOpen',
|
||||
'isMuted'
|
||||
'isMuted',
|
||||
'setupMuteExpirationTimeout'
|
||||
]);
|
||||
const muteExpiresAtMs = this.props.muteStatus.muteExpiresAt ?
|
||||
this.props.muteStatus.muteExpiresAt * 1000 : 0; // convert to ms
|
||||
this.state = {
|
||||
message: '',
|
||||
status: ComposeStatus.EDITING,
|
||||
error: null,
|
||||
appealId: null,
|
||||
muteOpen: false,
|
||||
muteExpiresAtMs: this.props.muteStatus.muteExpiresAt ?
|
||||
this.props.muteStatus.muteExpiresAt * 1000 : 0, // convert to ms
|
||||
muteExpiresAtMs: muteExpiresAtMs,
|
||||
muteType: this.props.muteStatus.currentMessageType,
|
||||
showWarning: this.props.muteStatus.showWarning ? this.props.muteStatus.showWarning : false
|
||||
};
|
||||
if (this.isMuted()) {
|
||||
this.setupMuteExpirationTimeout(muteExpiresAtMs);
|
||||
}
|
||||
}
|
||||
setupMuteExpirationTimeout (muteExpiresAtMs) {
|
||||
// Change state when the mute expiration fires if the user is still on the page.
|
||||
setTimeout(() => {
|
||||
this.setState(
|
||||
{message: '', muteExpiresAtMs: 0, muteOpen: false, status: ComposeStatus.EDITING, error: null});
|
||||
}, muteExpiresAtMs - Date.now());
|
||||
}
|
||||
handleInput (event) {
|
||||
this.setState({
|
||||
|
@ -93,6 +105,7 @@ class ComposeComment extends React.Component {
|
|||
}
|
||||
showWarning = body.status.mute_status.showWarning;
|
||||
muteType = body.status.mute_status.muteType;
|
||||
this.setupMuteExpirationTimeout(muteExpiresAtMs);
|
||||
}
|
||||
// Note: does not reset the message state
|
||||
this.setState({
|
||||
|
|
|
@ -95,6 +95,7 @@ describe('Compose Comment test', () => {
|
|||
});
|
||||
|
||||
test('Comment Status initialized properly when muted', () => {
|
||||
jest.useFakeTimers();
|
||||
const realDateNow = Date.now.bind(global.Date);
|
||||
global.Date.now = () => 0;
|
||||
const mutedStore = mockStore({
|
||||
|
@ -115,6 +116,8 @@ describe('Compose Comment test', () => {
|
|||
const commentInstance = component.instance();
|
||||
// Check conversion to ms from seconds is done at init time.
|
||||
expect(commentInstance.state.muteExpiresAtMs).toEqual(5 * 1000);
|
||||
// Check we setup a timeout to expire the widget when timeout reached.
|
||||
expect(setTimeout).toHaveBeenLastCalledWith(expect.any(Function), 5 * 1000);
|
||||
expect(commentInstance.state.showWarning).toBe(true);
|
||||
// Compose box should be hidden if muted unless they got muted due to a comment they just posted.
|
||||
expect(component.find('FlexRow.compose-comment').exists()).toEqual(false);
|
||||
|
|
Loading…
Reference in a new issue