Add doodle feature back (#2652)
This commit is contained in:
parent
a25c900a08
commit
c19787f3f4
3 changed files with 44 additions and 9 deletions
|
@ -7,10 +7,14 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
|
||||||
import PhotoLibraryIcon from '@/material-icons/400-20px/photo_library.svg?react';
|
import PhotoLibraryIcon from '@/material-icons/400-20px/photo_library.svg?react';
|
||||||
import { IconButton } from 'flavours/glitch/components/icon_button';
|
import BrushIcon from '@/material-icons/400-24px/brush.svg?react';
|
||||||
|
import UploadFileIcon from '@/material-icons/400-24px/upload_file.svg?react';
|
||||||
|
|
||||||
|
import { DropdownIconButton } from './dropdown_icon_button';
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
upload: { id: 'upload_button.label', defaultMessage: 'Add images, a video or an audio file' },
|
upload: { id: 'upload_button.label', defaultMessage: 'Add images, a video or an audio file' },
|
||||||
|
doodle: { id: 'compose.attach.doodle', defaultMessage: 'Draw something' },
|
||||||
});
|
});
|
||||||
|
|
||||||
const makeMapStateToProps = () => {
|
const makeMapStateToProps = () => {
|
||||||
|
@ -21,16 +25,12 @@ const makeMapStateToProps = () => {
|
||||||
return mapStateToProps;
|
return mapStateToProps;
|
||||||
};
|
};
|
||||||
|
|
||||||
const iconStyle = {
|
|
||||||
height: null,
|
|
||||||
lineHeight: '27px',
|
|
||||||
};
|
|
||||||
|
|
||||||
class UploadButton extends ImmutablePureComponent {
|
class UploadButton extends ImmutablePureComponent {
|
||||||
|
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
disabled: PropTypes.bool,
|
disabled: PropTypes.bool,
|
||||||
onSelectFile: PropTypes.func.isRequired,
|
onSelectFile: PropTypes.func.isRequired,
|
||||||
|
onDoodleOpen: PropTypes.func.isRequired,
|
||||||
style: PropTypes.object,
|
style: PropTypes.object,
|
||||||
resetFileKey: PropTypes.number,
|
resetFileKey: PropTypes.number,
|
||||||
acceptContentTypes: ImmutablePropTypes.listOf(PropTypes.string).isRequired,
|
acceptContentTypes: ImmutablePropTypes.listOf(PropTypes.string).isRequired,
|
||||||
|
@ -43,8 +43,12 @@ class UploadButton extends ImmutablePureComponent {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
handleClick = () => {
|
handleSelect = (value) => {
|
||||||
this.fileElement.click();
|
if (value === 'upload') {
|
||||||
|
this.fileElement.click();
|
||||||
|
} else {
|
||||||
|
this.props.onDoodleOpen();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
setRef = (c) => {
|
setRef = (c) => {
|
||||||
|
@ -56,9 +60,32 @@ class UploadButton extends ImmutablePureComponent {
|
||||||
|
|
||||||
const message = intl.formatMessage(messages.upload);
|
const message = intl.formatMessage(messages.upload);
|
||||||
|
|
||||||
|
const options = [
|
||||||
|
{
|
||||||
|
icon: 'cloud-upload',
|
||||||
|
iconComponent: UploadFileIcon,
|
||||||
|
value: 'upload',
|
||||||
|
text: intl.formatMessage(messages.upload),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: 'paint-brush',
|
||||||
|
iconComponent: BrushIcon,
|
||||||
|
value: 'doodle',
|
||||||
|
text: intl.formatMessage(messages.doodle),
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='compose-form__upload-button'>
|
<div className='compose-form__upload-button'>
|
||||||
<IconButton icon='paperclip' iconComponent={PhotoLibraryIcon} title={message} disabled={disabled} onClick={this.handleClick} className='compose-form__upload-button-icon' size={18} inverted style={iconStyle} />
|
<DropdownIconButton
|
||||||
|
icon='paperclip'
|
||||||
|
iconComponent={PhotoLibraryIcon}
|
||||||
|
title={message}
|
||||||
|
disabled={disabled}
|
||||||
|
onChange={this.handleSelect}
|
||||||
|
value='upload'
|
||||||
|
options={options}
|
||||||
|
/>
|
||||||
<label>
|
<label>
|
||||||
<span style={{ display: 'none' }}>{message}</span>
|
<span style={{ display: 'none' }}>{message}</span>
|
||||||
<input
|
<input
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
|
||||||
import { uploadCompose } from '../../../actions/compose';
|
import { uploadCompose } from '../../../actions/compose';
|
||||||
|
import { openModal } from '../../../actions/modal';
|
||||||
import UploadButton from '../components/upload_button';
|
import UploadButton from '../components/upload_button';
|
||||||
|
|
||||||
const mapStateToProps = state => ({
|
const mapStateToProps = state => ({
|
||||||
|
@ -14,6 +15,12 @@ const mapDispatchToProps = dispatch => ({
|
||||||
dispatch(uploadCompose(files));
|
dispatch(uploadCompose(files));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onDoodleOpen() {
|
||||||
|
dispatch(openModal({
|
||||||
|
modalType: 'DOODLE',
|
||||||
|
modalProps: { noEsc: true, noClose: true },
|
||||||
|
}));
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
export default connect(mapStateToProps, mapDispatchToProps)(UploadButton);
|
export default connect(mapStateToProps, mapDispatchToProps)(UploadButton);
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
"column_subheading.lists": "Lists",
|
"column_subheading.lists": "Lists",
|
||||||
"column_subheading.navigation": "Navigation",
|
"column_subheading.navigation": "Navigation",
|
||||||
"community.column_settings.allow_local_only": "Show local-only toots",
|
"community.column_settings.allow_local_only": "Show local-only toots",
|
||||||
|
"compose.attach.doodle": "Draw something",
|
||||||
"compose.change_federation": "Change federation settings",
|
"compose.change_federation": "Change federation settings",
|
||||||
"compose.content-type.change": "Change advanced formatting options",
|
"compose.content-type.change": "Change advanced formatting options",
|
||||||
"compose.content-type.html": "HTML",
|
"compose.content-type.html": "HTML",
|
||||||
|
|
Loading…
Reference in a new issue