message: FilePanel: Refactor out the file panel and convert the methods to async ones.
diff: @@ -40,17 +40,13 @@ const FilePanel = createReactClass({
  };
  },
  - componentDidMount: function() {
  - this.updateTimelineSet(this.props.roomId);
  + async componentDidMount() {
  + await this.updateTimelineSet(this.props.roomId);
  },
  - updateTimelineSet: function(roomId) {
  + async fetchFileEventsServer(room) {
  const client = MatrixClientPeg.get();
  - const room = client.getRoom(roomId);
  -
  - this.noRoom = !room;
  - if (room) {
  const filter = new Matrix.Filter(client.credentials.userId);
  filter.setDefinition(
  {
  @@ -66,16 +62,28 @@ const FilePanel = createReactClass({
  );
  // FIXME: we shouldn't be doing this every time we change room - see comment above.
  - client.getOrCreateFilter("FILTER_FILES_" + client.credentials.userId, filter).then(
  - (filterId)=>{
  + // TODO: Remove this stale comment? Which comment above?
  + const filterId = await client.getOrCreateFilter("FILTER_FILES_" + client.credentials.userId, filter)
  filter.filterId = filterId;
  const timelineSet = room.getOrCreateFilteredTimelineSet(filter);
  - this.setState({ timelineSet: timelineSet });
  +
  + return timelineSet;
  },
  - (error)=>{
  +
  + async updateTimelineSet(roomId: string) {
  + const client = MatrixClientPeg.get();
  + const room = client.getRoom(roomId);
  +
  + this.noRoom = !room;
  +
  + if (room) {
  + try {
  + let timelineSet = await this.fetchFileEventsServer(room)
  + this.setState({ timelineSet: timelineSet });
  +
  + } catch (error) {
  console.error("Failed to get or create file panel filter", error);
  - },
  - );
  + }
  } else {
  console.error("Failed to add filtered timelineSet for FilePanel as no room!");
  }
  