support saving tag changes (untested)
parent
06e1674f23
commit
1467aacfa4
|
@ -981,6 +981,40 @@ module.exports = React.createClass({
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (newVals.tag_operations) {
|
||||||
|
// FIXME: should probably be factored out with alias_operations above
|
||||||
|
var oplist = [];
|
||||||
|
for (var i = 0; i < newVals.tag_operations.length; i++) {
|
||||||
|
var tag_operation = newVals.tag_operations[i];
|
||||||
|
switch (tag_operation.type) {
|
||||||
|
case 'put':
|
||||||
|
oplist.push(
|
||||||
|
MatrixClientPeg.get().setRoomTag(
|
||||||
|
this.props.roomId, tag_operation.tag, {}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case 'delete':
|
||||||
|
oplist.push(
|
||||||
|
MatrixClientPeg.get().deleteRoomTag(
|
||||||
|
this.props.roomId, tag_operation.tag
|
||||||
|
)
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log("Unknown tag operation, ignoring: " + tag_operation.type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (oplist.length) {
|
||||||
|
var deferred = oplist[0];
|
||||||
|
oplist.splice(1).forEach(function (f) {
|
||||||
|
deferred = deferred.then(f);
|
||||||
|
});
|
||||||
|
deferreds.push(deferred);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (old_canonical_alias !== newVals.canonical_alias) {
|
if (old_canonical_alias !== newVals.canonical_alias) {
|
||||||
deferreds.push(
|
deferreds.push(
|
||||||
MatrixClientPeg.get().sendStateEvent(
|
MatrixClientPeg.get().sendStateEvent(
|
||||||
|
@ -1113,6 +1147,7 @@ module.exports = React.createClass({
|
||||||
history_visibility: this.refs.room_settings.getHistoryVisibility(),
|
history_visibility: this.refs.room_settings.getHistoryVisibility(),
|
||||||
power_levels: this.refs.room_settings.getPowerLevels(),
|
power_levels: this.refs.room_settings.getPowerLevels(),
|
||||||
alias_operations: this.refs.room_settings.getAliasOperations(),
|
alias_operations: this.refs.room_settings.getAliasOperations(),
|
||||||
|
tag_operations: this.refs.room_settings.getTagOperations(),
|
||||||
canonical_alias: this.refs.room_settings.getCanonicalAlias(),
|
canonical_alias: this.refs.room_settings.getCanonicalAlias(),
|
||||||
guest_join: this.refs.room_settings.canGuestsJoin(),
|
guest_join: this.refs.room_settings.canGuestsJoin(),
|
||||||
guest_read: this.refs.room_settings.canGuestsRead(),
|
guest_read: this.refs.room_settings.canGuestsRead(),
|
||||||
|
|
|
@ -218,6 +218,31 @@ module.exports = React.createClass({
|
||||||
return ops;
|
return ops;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getTagOperations: function() {
|
||||||
|
if (!this.state.tags_changed) return undefined;
|
||||||
|
|
||||||
|
var ops = [];
|
||||||
|
|
||||||
|
var delta = {};
|
||||||
|
Object.keys(this.props.room.tags).forEach(function(oldTag) {
|
||||||
|
delta[oldTag] = delta[oldTag] || 0;
|
||||||
|
delta[oldTag]--;
|
||||||
|
});
|
||||||
|
Object.keys(this.state.tags).forEach(function(newTag) {
|
||||||
|
delta[newTag] = delta[newTag] || 0;
|
||||||
|
delta[newTag]++;
|
||||||
|
});
|
||||||
|
Object.keys(delta).forEach(function(tag) {
|
||||||
|
if (delta[tag] == 1) {
|
||||||
|
ops.push({ type: "put", tag: tag });
|
||||||
|
} else if (delta[tag] == -1) {
|
||||||
|
ops.push({ type: "delete", tag: tag });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return ops;
|
||||||
|
},
|
||||||
|
|
||||||
onPowerLevelsChanged: function() {
|
onPowerLevelsChanged: function() {
|
||||||
this.setState({
|
this.setState({
|
||||||
power_levels_changed: true
|
power_levels_changed: true
|
||||||
|
@ -604,7 +629,7 @@ module.exports = React.createClass({
|
||||||
});
|
});
|
||||||
|
|
||||||
var tags_section =
|
var tags_section =
|
||||||
<div>
|
<div className="mx_RoomSettings_tags">
|
||||||
This room is tagged as
|
This room is tagged as
|
||||||
{ can_set_tag ?
|
{ can_set_tag ?
|
||||||
tags.map(function(tag, i) {
|
tags.map(function(tag, i) {
|
||||||
|
|
Loading…
Reference in New Issue