diff --git a/src/components/menu-bar/menu-bar.jsx b/src/components/menu-bar/menu-bar.jsx index 11562411086b5cb47d97300f424d6494a1fd7000..ab598718af9a7668c69ef782e659945b2876b411 100644 --- a/src/components/menu-bar/menu-bar.jsx +++ b/src/components/menu-bar/menu-bar.jsx @@ -137,7 +137,8 @@ class MenuBar extends React.Component { super(props); bindAll(this, [ 'handleLanguageMouseUp', - 'handleRestoreOption' + 'handleRestoreOption', + 'restoreOptionMessage' ]); } handleLanguageMouseUp (e) { @@ -151,6 +152,30 @@ class MenuBar extends React.Component { this.props.onRequestCloseEdit(); }; } + restoreOptionMessage (deletedItem) { + switch (deletedItem) { + case 'Sprite': + return (<FormattedMessage + defaultMessage="Restore Sprite" + description="Menu bar item for restoring the last deleted sprite." + id="gui.menuBar.restoreSprite" + />); + case 'Sound': + return (<FormattedMessage + defaultMessage="Restore Sound" + description="Menu bar item for restoring the last deleted sound." + id="gui.menuBar.restoreSound" + />); + case 'Costume': + default: { + return (<FormattedMessage + defaultMessage="Restore" + description="Menu bar item for restoring the last deleted item in its disabled state." /* eslint-disable-line max-len */ + id="gui.menuBar.restore" + />); + } + } + } render () { return ( <Box className={styles.menuBar}> @@ -306,18 +331,7 @@ class MenuBar extends React.Component { className={classNames({[styles.disabled]: !restorable})} onClick={this.handleRestoreOption(handleRestore)} > - {deletedItem === 'Sprite' ? - <FormattedMessage - defaultMessage="Restore Sprite" - description="Menu bar item for restoring the last deleted sprite." - id="gui.menuBar.restoreSprite" - /> : - <FormattedMessage - defaultMessage="Restore" - description="Menu bar item for restoring the last deleted item in its disabled state." /* eslint-disable-line max-len */ - id="gui.menuBar.restore" - /> - } + {this.restoreOptionMessage(deletedItem)} </MenuItem> )}</DeletionRestorer> <MenuSection> diff --git a/src/containers/sound-tab.jsx b/src/containers/sound-tab.jsx index 2245f3d2f6acda3304d8de506cfde811cd0ece16..a30b8f97e82f93fe1407cc55271f81273feef3f1 100644 --- a/src/containers/sound-tab.jsx +++ b/src/containers/sound-tab.jsx @@ -34,6 +34,8 @@ import { COSTUMES_TAB_INDEX } from '../reducers/editor-tab'; +import {setRestore} from '../reducers/restore-deletion'; + class SoundTab extends React.Component { constructor (props) { super(props); @@ -76,10 +78,11 @@ class SoundTab extends React.Component { } handleDeleteSound (soundIndex) { - this.props.vm.deleteSound(soundIndex); + const restoreFun = this.props.vm.deleteSound(soundIndex); if (soundIndex >= this.state.selectedSoundIndex) { this.setState({selectedSoundIndex: Math.max(0, soundIndex - 1)}); } + this.props.dispatchUpdateRestore({restoreFun, deletedItem: 'Sound'}); } handleDuplicateSound (soundIndex) { @@ -153,6 +156,7 @@ class SoundTab extends React.Component { render () { const { + dispatchUpdateRestore, // eslint-disable-line no-unused-vars intl, vm, onNewSoundFromLibraryClick, @@ -252,6 +256,7 @@ class SoundTab extends React.Component { } SoundTab.propTypes = { + dispatchUpdateRestore: PropTypes.func, editingTarget: PropTypes.string, intl: intlShape, onActivateCostumesTab: PropTypes.func.isRequired, @@ -294,6 +299,9 @@ const mapDispatchToProps = dispatch => ({ }, onRequestCloseSoundLibrary: () => { dispatch(closeSoundLibrary()); + }, + dispatchUpdateRestore: restoreState => { + dispatch(setRestore(restoreState)); } });