mirror of
https://github.com/Skylar-Tech/node-red-contrib-matrix-chat.git
synced 2025-04-20 04:53:06 -06:00
- #97 msg.state_key is now allowed as an input to Room State Events node for events that support it (required for m.space.child and m.space.parent)
- #97 added support for m.room.history_visibility, m.room.server_acl, m.room.pinned_events, m.space.child, and m.space.parent - #97 fix issue with checkbox being hidden on config page when adding new setters/getters on config page
This commit is contained in:
parent
1859696122
commit
2e9633e113
@ -49,6 +49,11 @@
|
|||||||
<span class="property-type">string|object</span>
|
<span class="property-type">string|object</span>
|
||||||
</dt>
|
</dt>
|
||||||
<dd> You configure what room state events in the node configuration. <code style="white-space: normal;">m.room.name</code>, <code style="white-space: normal;">m.room.avatar</code>, and <code style="white-space: normal;">m.room.guest_access</code> allow you to pass a string to set their value but all other room state events will require the full content object (find this by referencing the <a href="https://spec.matrix.org/latest/client-server-api" target="_blank">Matrix Client-Server docs</a>)</dd>
|
<dd> You configure what room state events in the node configuration. <code style="white-space: normal;">m.room.name</code>, <code style="white-space: normal;">m.room.avatar</code>, and <code style="white-space: normal;">m.room.guest_access</code> allow you to pass a string to set their value but all other room state events will require the full content object (find this by referencing the <a href="https://spec.matrix.org/latest/client-server-api" target="_blank">Matrix Client-Server docs</a>)</dd>
|
||||||
|
|
||||||
|
<dt class="optional">msg.state_key
|
||||||
|
<span class="property-type">string</span>
|
||||||
|
</dt>
|
||||||
|
<dd> Required for some events such as <code style="white-space: normal;">m.space.parent</code> and <code style="white-space: normal;">m.room.child</code> to set the referenced child/parent room</dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
<h3>Outputs</h3>
|
<h3>Outputs</h3>
|
||||||
@ -77,13 +82,18 @@
|
|||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
(function(){
|
(function(){
|
||||||
var roomEventTypeOptions = [
|
var roomEventTypeOptions = [
|
||||||
{ value: "m.room.name", label: "m.room.name"},
|
{ value: "m.room.name", label: "m.room.name" },
|
||||||
{ value: "m.room.topic", label: "m.room.topic"},
|
{ value: "m.room.topic", label: "m.room.topic" },
|
||||||
{ value: "m.room.avatar", label: "m.room.avatar"},
|
{ value: "m.room.avatar", label: "m.room.avatar" },
|
||||||
{ value: "m.room.power_levels", label: "m.room.power_levels"},
|
{ value: "m.room.power_levels", label: "m.room.power_levels" },
|
||||||
{ value: "m.room.guest_access", label: "m.room.guest_access"},
|
{ value: "m.room.guest_access", label: "m.room.guest_access" },
|
||||||
{ value: "m.room.join_rules", label: "m.room.join_rules"},
|
{ value: "m.room.join_rules", label: "m.room.join_rules" },
|
||||||
{ value: "m.room.canonical_alias", label: "m.room.canonical_alias"}
|
{ value: "m.room.canonical_alias", label: "m.room.canonical_alias" },
|
||||||
|
{ value: "m.room.history_visibility", label: "m.room.history_visibility" },
|
||||||
|
{ value: "m.room.server_acl", label: "m.room.server_acl" },
|
||||||
|
{ value: "m.room.pinned_events", label: "m.room.pinned_events"},
|
||||||
|
{ value: "m.space.child", label: "m.space.child" },
|
||||||
|
{ value: "m.space.parent", label: "m.space.parent" },
|
||||||
];
|
];
|
||||||
var defaultRules = [{
|
var defaultRules = [{
|
||||||
t: "set",
|
t: "set",
|
||||||
@ -305,9 +315,9 @@
|
|||||||
propertyValue.typedInput('value',rule.to);
|
propertyValue.typedInput('value',rule.to);
|
||||||
localStorageEl.prop("checked", !!rule.ls);
|
localStorageEl.prop("checked", !!rule.ls);
|
||||||
if(rule.t === 'get') {
|
if(rule.t === 'get') {
|
||||||
localStorageEl.show();
|
localStorageEl.parent().show();
|
||||||
} else {
|
} else {
|
||||||
localStorageEl.hide();
|
localStorageEl.parent().hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
selectField.change();
|
selectField.change();
|
||||||
|
@ -140,11 +140,11 @@ module.exports = function(RED) {
|
|||||||
msg.topic,
|
msg.topic,
|
||||||
"m.room.name",
|
"m.room.name",
|
||||||
typeof value === "string"
|
typeof value === "string"
|
||||||
? { name: value }
|
? {name: value}
|
||||||
: value);
|
: value);
|
||||||
break;
|
break;
|
||||||
case "m.room.topic":
|
case "m.room.topic":
|
||||||
if(typeof value === "string") {
|
if (typeof value === "string") {
|
||||||
await node.server.matrixClient.setRoomTopic(msg.topic, value);
|
await node.server.matrixClient.setRoomTopic(msg.topic, value);
|
||||||
} else {
|
} else {
|
||||||
await node.server.matrixClient.sendStateEvent(
|
await node.server.matrixClient.sendStateEvent(
|
||||||
@ -159,27 +159,7 @@ module.exports = function(RED) {
|
|||||||
msg.topic,
|
msg.topic,
|
||||||
"m.room.avatar",
|
"m.room.avatar",
|
||||||
typeof value === "string"
|
typeof value === "string"
|
||||||
? { "url": value }
|
? {"url": value}
|
||||||
: value,
|
|
||||||
"");
|
|
||||||
break;
|
|
||||||
case "m.room.power_levels":
|
|
||||||
if(typeof value !== 'object') {
|
|
||||||
setterErrors[rule.p] = "m.room.power_levels content must be object";
|
|
||||||
} else {
|
|
||||||
await node.server.matrixClient.sendStateEvent(
|
|
||||||
msg.topic,
|
|
||||||
"m.room.power_levels",
|
|
||||||
value,
|
|
||||||
"");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "m.room.guest_access":
|
|
||||||
await node.server.matrixClient.sendStateEvent(
|
|
||||||
msg.topic,
|
|
||||||
"m.room.guest_access",
|
|
||||||
typeof value === "string"
|
|
||||||
? { "guest_access": value }
|
|
||||||
: value,
|
: value,
|
||||||
"");
|
"");
|
||||||
break;
|
break;
|
||||||
@ -205,15 +185,50 @@ module.exports = function(RED) {
|
|||||||
"");
|
"");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case "m.space.parent":
|
||||||
|
if (typeof value !== 'object') {
|
||||||
|
setterErrors[rule.p] = "m.space.parent content must be object";
|
||||||
|
} else if (!msg.state_key) {
|
||||||
|
setterErrors[rule.p] = "m.space.parent required msg.state_key input to be set to the child roomId";
|
||||||
|
}else {
|
||||||
|
await node.server.matrixClient.sendStateEvent(
|
||||||
|
msg.topic,
|
||||||
|
"m.room.power_levels",
|
||||||
|
value,
|
||||||
|
msg.state_key);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "m.space.child":
|
||||||
|
if (typeof value !== 'object') {
|
||||||
|
setterErrors[rule.p] = "m.space.child content must be object";
|
||||||
|
} else if (!msg.state_key) {
|
||||||
|
setterErrors[rule.p] = "m.space.child required msg.state_key input to be set to the parent roomId";
|
||||||
|
}else {
|
||||||
|
await node.server.matrixClient.sendStateEvent(
|
||||||
|
msg.topic,
|
||||||
|
"m.room.power_levels",
|
||||||
|
value,
|
||||||
|
msg.state_key);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "m.room.guest_access":
|
||||||
|
await node.server.matrixClient.sendStateEvent(
|
||||||
|
msg.topic,
|
||||||
|
"m.room.guest_access",
|
||||||
|
typeof value === "string"
|
||||||
|
? { "guest_access": value }
|
||||||
|
: value,
|
||||||
|
"");
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
if(typeof value !== 'object') {
|
if(typeof value !== 'object') {
|
||||||
setterErrors[rule.p] = "Custom event content must be object";
|
setterErrors[rule.p] = `${rule.p} content must be object`;
|
||||||
} else {
|
} else {
|
||||||
await node.server.matrixClient.sendStateEvent(
|
await node.server.matrixClient.sendStateEvent(
|
||||||
msg.topic,
|
msg.topic,
|
||||||
rule.p,
|
rule.p,
|
||||||
value,
|
value,
|
||||||
"");
|
msg.state_key || "");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user