Merge pull request #2830 from matrix-org/travis/autocomplete-ancient-history

Filter out upgraded rooms from autocomplete results
This commit is contained in:
Travis Ralston 2019-03-27 13:23:37 -06:00 committed by GitHub
commit 1c6f0b62f4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -56,7 +56,7 @@ export default class RoomProvider extends AutocompleteProvider {
const {command, range} = this.getCurrentCommand(query, selection, force); const {command, range} = this.getCurrentCommand(query, selection, force);
if (command) { if (command) {
// the only reason we need to do this is because Fuse only matches on properties // the only reason we need to do this is because Fuse only matches on properties
this.matcher.setObjects(client.getRooms().filter( let matcherObjects = client.getRooms().filter(
(room) => !!room && !!getDisplayAliasForRoom(room), (room) => !!room && !!getDisplayAliasForRoom(room),
).map((room) => { ).map((room) => {
return { return {
@ -64,7 +64,21 @@ export default class RoomProvider extends AutocompleteProvider {
name: room.name, name: room.name,
displayedAlias: getDisplayAliasForRoom(room), displayedAlias: getDisplayAliasForRoom(room),
}; };
})); });
// Filter out any matches where the user will have also autocompleted new rooms
matcherObjects = matcherObjects.filter((r) => {
const tombstone = r.room.currentState.getStateEvents("m.room.tombstone", "");
if (tombstone && tombstone.getContent() && tombstone.getContent()['replacement_room']) {
const hasReplacementRoom = matcherObjects.some(
(r2) => r2.room.roomId === tombstone.getContent()['replacement_room'],
);
return !hasReplacementRoom;
}
return true;
});
this.matcher.setObjects(matcherObjects);
const matchedString = command[0]; const matchedString = command[0];
completions = this.matcher.match(matchedString); completions = this.matcher.match(matchedString);
completions = _sortBy(completions, [ completions = _sortBy(completions, [