Browse Source

fix SafeTextarea clear()

pull/16/head
hole-thu 3 years ago
parent
commit
d0a392e6fc
  1. 15
      src/Common.js
  2. 26
      src/UserAction.js

15
src/Common.js

@ -283,7 +283,7 @@ export class SafeTextarea extends Component {
};
this.on_change_bound = this.on_change.bind(this);
this.on_keydown_bound = this.on_keydown.bind(this);
this.clear = this.clear.bind(this);
this.clear_and_then = this.clear_and_then.bind(this);
this.area_ref = React.createRef();
this.change_callback = props.on_change || (() => {});
this.submit_callback = props.on_submit || (() => {});
@ -311,6 +311,7 @@ export class SafeTextarea extends Component {
});
this.change_callback(event.target.value);
}
on_keydown(event) {
if (event.key === 'Enter' && event.ctrlKey && !event.altKey) {
event.preventDefault();
@ -318,20 +319,26 @@ export class SafeTextarea extends Component {
}
}
clear() {
this.setState({
clear_and_then(callback = null) {
this.setState(
{
text: '',
});
},
callback,
);
}
set(text) {
this.change_callback(text);
this.setState({
text: text,
});
}
get() {
return this.state.text;
}
focus() {
this.area_ref.current.focus();
}

26
src/UserAction.js

@ -425,13 +425,16 @@ export class ReplyForm extends Component {
save_attentions();
}
this.setState({
this.setState(
{
loading_status: 'done',
text: '',
preview: false,
});
this.area_ref.current.clear();
this.props.on_complete();
},
() => {
this.area_ref.current.clear_and_then(this.props.on_complete);
},
);
})
.catch((e) => {
console.error(e);
@ -602,15 +605,18 @@ export class PostForm extends Component {
throw new Error(json.msg);
}
this.setState({
window.CW_BACKUP = '';
window.POLL_BACKUP = null;
this.setState(
{
loading_status: 'done',
text: '',
preview: false,
});
this.area_ref.current.clear();
this.props.on_complete();
window.CW_BACKUP = '';
window.POLL_BACKUP = null;
},
() => {
this.area_ref.current.clear_and_then(this.props.on_complete);
},
);
})
.catch((e) => {
console.error(e);

Loading…
Cancel
Save