Merge pull request #5451 from iokiwi/new/room-alias-in-permalink

Use room alias in generated permalink for rooms
pull/21833/head
Travis Ralston 2020-12-09 12:07:44 -07:00 committed by GitHub
commit af69ba9c79
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 1 deletions

View File

@ -146,7 +146,7 @@ export default class ShareDialog extends React.PureComponent<IProps, IState> {
const events = this.props.target.getLiveTimeline().getEvents(); const events = this.props.target.getLiveTimeline().getEvents();
matrixToUrl = this.state.permalinkCreator.forEvent(events[events.length - 1].getId()); matrixToUrl = this.state.permalinkCreator.forEvent(events[events.length - 1].getId());
} else { } else {
matrixToUrl = this.state.permalinkCreator.forRoom(); matrixToUrl = this.state.permalinkCreator.forShareableRoom();
} }
} else if (this.props.target instanceof User || this.props.target instanceof RoomMember) { } else if (this.props.target instanceof User || this.props.target instanceof RoomMember) {
matrixToUrl = makeUserPermalink(this.props.target.userId); matrixToUrl = makeUserPermalink(this.props.target.userId);

View File

@ -129,6 +129,17 @@ export class RoomPermalinkCreator {
return getPermalinkConstructor().forEvent(this._roomId, eventId, this._serverCandidates); return getPermalinkConstructor().forEvent(this._roomId, eventId, this._serverCandidates);
} }
forShareableRoom() {
if (this._room) {
// Prefer to use canonical alias for permalink if possible
const alias = this._room.getCanonicalAlias();
if (alias) {
return getPermalinkConstructor().forRoom(alias, this._serverCandidates);
}
}
return getPermalinkConstructor().forRoom(this._roomId, this._serverCandidates);
}
forRoom() { forRoom() {
return getPermalinkConstructor().forRoom(this._roomId, this._serverCandidates); return getPermalinkConstructor().forRoom(this._roomId, this._serverCandidates);
} }

View File

@ -34,6 +34,7 @@ function mockRoom(roomId, members, serverACL) {
return { return {
roomId, roomId,
getCanonicalAlias: () => roomId,
getJoinedMembers: () => members, getJoinedMembers: () => members,
getMember: (userId) => members.find(m => m.userId === userId), getMember: (userId) => members.find(m => m.userId === userId),
currentState: { currentState: {