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 @@
+
+
+
+ {{ stateEventDisplayName(event) }} made the room {{ joinRule(event) }}
+
+
+
+
+
+
\ No newline at end of file