Send room display name as part of invite link (if needed)

This commit is contained in:
N-Pex 2023-05-23 16:29:17 +02:00
parent f551f96f50
commit b097fd51d8
5 changed files with 25 additions and 5 deletions

View file

@ -295,7 +295,7 @@ export default {
}
if (room) {
this.publicRoomLink = this.$router.getRoomLink(
room.getCanonicalAlias() || roomId
room.getCanonicalAlias(), roomId, room.name
);
}
});

View file

@ -13,7 +13,7 @@
{{ roomId && roomId.startsWith("@") ? $t("join.title_user") : $t("join.title") }}
</div>
<div class="join-title">
{{ roomName }}
{{ roomDisplayName || roomName }}
</div>
</div>
@ -215,6 +215,14 @@ export default {
let activeLanguages = [...this.getLanguages()];
return activeLanguages.filter((lang) => lang.value === this.$i18n.locale);
},
roomDisplayName() {
// If there is a display name in to invite link, use that!
try {
return new URL(location.href).searchParams.get('roomName');
} catch(ignoredError) {
return undefined;
}
}
},
watch: {
roomId: {

View file

@ -57,7 +57,7 @@ export default {
publicRoomLink() {
if (this.room && this.roomJoinRule == "public") {
return this.$router.getRoomLink(
this.room.getCanonicalAlias() || this.room.roomId
this.room.getCanonicalAlias(), this.room.roomId, this.room.name
);
}
return null;

View file

@ -778,6 +778,13 @@ class Util {
return _browserCanRecordAudio;
}
getRoomNameFromAlias(alias) {
if (alias && alias.startsWith('#') && alias.indexOf(':') > 0) {
return alias.slice(1).split(':')[0];
}
return undefined;
}
getUniqueAliasForRoomName(matrixClient, roomName, homeServer, iterationCount) {
return new Promise((resolve, reject) => {
var preferredAlias = roomName.replace(/\s/g, "").toLowerCase();

View file

@ -140,8 +140,13 @@ router.beforeEach((to, from, next) => {
}
});
router.getRoomLink = function (roomId) {
return window.location.origin + window.location.pathname + "#/room/" + encodeURIComponent(util.sanitizeRoomId(roomId));
router.getRoomLink = function (alias, roomId, roomName) {
if ((!alias || roomName.replace(/\s/g, "").toLowerCase() !== util.getRoomNameFromAlias(alias)) && roomName) {
// There is no longer a correlation between alias and room name, probably because room name has
// changed. Include the "?roomName" part
return window.location.origin + window.location.pathname + "?roomName=" + encodeURIComponent(roomName) + "#/room/" + encodeURIComponent(util.sanitizeRoomId(alias || roomId));
}
return window.location.origin + window.location.pathname + "#/room/" + encodeURIComponent(util.sanitizeRoomId(alias || roomId));
}
export default router