message: batch load events in ReplyThread before adding them to the state
diff: @@ -269,36 +269,27 @@ export default class ReplyThread extends React.Component {
  const {parentEv} = this.props;
  // at time of making this component we checked that props.parentEv has a parentEventId
  const ev = await this.getEvent(ReplyThread.getParentEventId(parentEv));
  +
  if (this.unmounted) return;
  if (ev) {
  + const loadedEv = await this.getNextEvent(ev);
  this.setState({
  events: [ev],
  - }, this.loadNextEvent);
  + loadedEv,
  + loading: false,
  + });
  } else {
  this.setState({err: true});
  }
  }
  - async loadNextEvent() {
  - if (this.unmounted) return;
  - const ev = this.state.events[0];
  + async getNextEvent(ev) {
  + try {
  const inReplyToEventId = ReplyThread.getParentEventId(ev);
  -
  - if (!inReplyToEventId) {
  - this.setState({
  - loading: false,
  - });
  - return;
  - }
  -
  - const loadedEv = await this.getEvent(inReplyToEventId);
  - if (this.unmounted) return;
  -
  - if (loadedEv) {
  - this.setState({loadedEv});
  - } else {
  - this.setState({err: true});
  + return await this.getEvent(inReplyToEventId);
  + } catch (e) {
  + return null;
  }
  }
  @@ -326,13 +317,18 @@ export default class ReplyThread extends React.Component {
  this.initialize();
  }
  - onQuoteClick() {
  + async onQuoteClick() {
  const events = [this.state.loadedEv, ...this.state.events];
  + let loadedEv = null;
  + if (events.length > 0) {
  + loadedEv = await this.getNextEvent(events[0]);
  + }
  +
  this.setState({
  - loadedEv: null,
  + loadedEv,
  events,
  - }, this.loadNextEvent);
  + });
  dis.fire(Action.FocusComposer);
  }
  