diff --git a/src/components/Chat.vue b/src/components/Chat.vue index 297dfa2..55a42e3 100644 --- a/src/components/Chat.vue +++ b/src/components/Chat.vue @@ -294,7 +294,6 @@ - @@ -316,6 +315,7 @@ import RoomNameChanged from "./messages/RoomNameChanged.vue"; import RoomTopicChanged from "./messages/RoomTopicChanged.vue"; import RoomAvatarChanged from "./messages/RoomAvatarChanged.vue"; import RoomHistoryVisibility from "./messages/RoomHistoryVisibility.vue"; +import RoomJoinRules from "./messages/RoomJoinRules.vue"; import DebugEvent from "./messages/DebugEvent.vue"; import util from "../plugins/utils"; import MessageOperations from "./messages/MessageOperations.vue"; @@ -373,10 +373,11 @@ export default { RoomTopicChanged, RoomAvatarChanged, RoomHistoryVisibility, + RoomJoinRules, DebugEvent, MessageOperations, VoiceRecorder, - RoomInfoBottomSheet + RoomInfoBottomSheet, }, data() { @@ -520,7 +521,7 @@ export default { }, canRecordAudio() { return util.browserCanRecordAudio(); - } + }, }, watch: { @@ -762,6 +763,9 @@ export default { case "m.room.history_visibility": return RoomHistoryVisibility; + + case "m.room.join_rules": + return RoomJoinRules; } return DebugEvent; }, diff --git a/src/components/RoomInfo.vue b/src/components/RoomInfo.vue index 69823bd..aea9381 100644 --- a/src/components/RoomInfo.vue +++ b/src/components/RoomInfo.vue @@ -33,19 +33,39 @@ Permissions -
-
- Anyone with a link can join. -
+ + + + -
+ v-if="publicRoomLink" + :value="publicRoomLink" + readonly + append-icon="content_copy" + filled + type="text" + @click:append="copyRoomLink" + > + + +
@@ -70,7 +90,10 @@ {{ member.user ? member.user.displayName : member.name }}{{ member.userId == $matrix.currentUserId ? " (you)" : "" }} - +
{{ showAllMembers ? "Hide" : "Show all" }} @@ -87,7 +110,8 @@ your name or set a password to keep it.
- Your are logged in as {{ displayName }}. + Your are logged in as {{ displayName }}.
View -
Powered by Guardian Project. Version: {{ buildVersion }}
+
+ Powered by Guardian Project. Version: {{ buildVersion }} +
-1) { - this.expandedMembers.splice(index, 1); - } else { - this.expandedMembers.push(member); + this.$copyText(this.roomLink).then( + function (e) { + console.log(e); + }, + function (e) { + console.log(e); } + ); + }, + + toggleMemberExpanded(member) { + const index = this.expandedMembers.indexOf(member); + if (index > -1) { + this.expandedMembers.splice(index, 1); + } else { + this.expandedMembers.push(member); } + }, + + /** + * Set room join rule. + * @param joinRule One of "invite" or "public". Currently always disables guest access. + */ + setRoomJoinRule(joinRule) { + const cli = this.$matrix.matrixClient; + if (!this.room || !cli) { + return; + } + + if (joinRule == this.getRoomJoinRule()) { + return; // No change + } + + this.updatingJoinRule = true; + var aliasPromise = Promise.resolve(); + // if (!this.room.getCanonicalAlias()) { + // const alias = "#" + this.room.roomId.substring(1); + // aliasPromise = cli.createAlias(alias, this.room.roomId); + // } + aliasPromise + .then(() => { + cli.sendStateEvent( + this.room.roomId, + "m.room.join_rules", + { join_rule: joinRule }, + "" + ); + }) + .then(() => { + cli.sendStateEvent( + this.room.roomId, + "m.room.guest_access", + { guest_access: "forbidden" }, + "" + ); + }) + .catch((err) => { + console.error(err); + }) + .finally(() => { + this.updatingJoinRule = false; + }); + }, }, }; diff --git a/src/components/messages/RoomJoinRules.vue b/src/components/messages/RoomJoinRules.vue new file mode 100644 index 0000000..f350988 --- /dev/null +++ b/src/components/messages/RoomJoinRules.vue @@ -0,0 +1,30 @@ + + + + + \ No newline at end of file