Remove trailing whitespace
This commit is contained in:
parent
eb01cb9cba
commit
31915db6f6
|
@ -40,7 +40,7 @@ var LeftPanel = React.createClass({
|
||||||
|
|
||||||
componentWillReceiveProps: function(newProps) {
|
componentWillReceiveProps: function(newProps) {
|
||||||
this._recheckCallElement(newProps.selectedRoom);
|
this._recheckCallElement(newProps.selectedRoom);
|
||||||
},
|
},
|
||||||
|
|
||||||
componentWillUnmount: function() {
|
componentWillUnmount: function() {
|
||||||
dis.unregister(this.dispatcherRef);
|
dis.unregister(this.dispatcherRef);
|
||||||
|
@ -95,7 +95,7 @@ var LeftPanel = React.createClass({
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Hide the collapse button until we work out how to display it in the new skin
|
// Hide the collapse button until we work out how to display it in the new skin
|
||||||
// collapseButton = <img className="mx_LeftPanel_hideButton" onClick={ this.onHideClick } src="img/hide.png" width="12" height="20" alt="<"/>
|
// collapseButton = <img className="mx_LeftPanel_hideButton" onClick={ this.onHideClick } src="img/hide.png" width="12" height="20" alt="<"/>
|
||||||
}
|
}
|
||||||
|
|
||||||
var callPreview;
|
var callPreview;
|
||||||
|
|
|
@ -38,7 +38,7 @@ module.exports = React.createClass({
|
||||||
},
|
},
|
||||||
|
|
||||||
componentWillUnmount: function() {
|
componentWillUnmount: function() {
|
||||||
dis.unregister(this.dispatcherRef);
|
dis.unregister(this.dispatcherRef);
|
||||||
if (MatrixClientPeg.get()) {
|
if (MatrixClientPeg.get()) {
|
||||||
MatrixClientPeg.get().removeListener("RoomState.members", this.onRoomStateMember);
|
MatrixClientPeg.get().removeListener("RoomState.members", this.onRoomStateMember);
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,7 @@ module.exports = React.createClass({
|
||||||
var self = this;
|
var self = this;
|
||||||
MatrixClientPeg.get().publicRooms(function (err, data) {
|
MatrixClientPeg.get().publicRooms(function (err, data) {
|
||||||
if (err) {
|
if (err) {
|
||||||
self.setState({ loading: false });
|
self.setState({ loading: false });
|
||||||
console.error("Failed to get publicRooms: %s", JSON.stringify(err));
|
console.error("Failed to get publicRooms: %s", JSON.stringify(err));
|
||||||
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||||
Modal.createDialog(ErrorDialog, {
|
Modal.createDialog(ErrorDialog, {
|
||||||
|
@ -124,7 +124,7 @@ module.exports = React.createClass({
|
||||||
<div className="mx_RoomDirectory_perm">Guests can join</div>
|
<div className="mx_RoomDirectory_perm">Guests can join</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
perms = null;
|
perms = null;
|
||||||
if (guestRead || guestJoin) {
|
if (guestRead || guestJoin) {
|
||||||
perms = <div className="mx_RoomDirectory_perms">{guestRead} {guestJoin}</div>;
|
perms = <div className="mx_RoomDirectory_perms">{guestRead} {guestJoin}</div>;
|
||||||
|
@ -169,7 +169,7 @@ module.exports = React.createClass({
|
||||||
|
|
||||||
render: function() {
|
render: function() {
|
||||||
if (this.state.loading) {
|
if (this.state.loading) {
|
||||||
var Loader = sdk.getComponent("elements.Spinner");
|
var Loader = sdk.getComponent("elements.Spinner");
|
||||||
return (
|
return (
|
||||||
<div className="mx_RoomDirectory">
|
<div className="mx_RoomDirectory">
|
||||||
<Loader />
|
<Loader />
|
||||||
|
|
|
@ -187,15 +187,15 @@ var RoomSubList = React.createClass({
|
||||||
var rooms = this.state.sortedList;
|
var rooms = this.state.sortedList;
|
||||||
if (found.room) {
|
if (found.room) {
|
||||||
rooms.splice(found.index, 1);
|
rooms.splice(found.index, 1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
console.warn("Can't remove room " + room.roomId + " - can't find it");
|
console.warn("Can't remove room " + room.roomId + " - can't find it");
|
||||||
}
|
}
|
||||||
this.setState({ sortedList: rooms });
|
this.setState({ sortedList: rooms });
|
||||||
},
|
},
|
||||||
|
|
||||||
findRoomTile: function(room) {
|
findRoomTile: function(room) {
|
||||||
var index = this.state.sortedList.indexOf(room);
|
var index = this.state.sortedList.indexOf(room);
|
||||||
if (index >= 0) {
|
if (index >= 0) {
|
||||||
// console.log("found: room: " + room.roomId + " with index " + index);
|
// console.log("found: room: " + room.roomId + " with index " + index);
|
||||||
}
|
}
|
||||||
|
@ -210,7 +210,7 @@ var RoomSubList = React.createClass({
|
||||||
},
|
},
|
||||||
|
|
||||||
calcManualOrderTagData: function(room) {
|
calcManualOrderTagData: function(room) {
|
||||||
var index = this.state.sortedList.indexOf(room);
|
var index = this.state.sortedList.indexOf(room);
|
||||||
|
|
||||||
// we sort rooms by the lexicographic ordering of the 'order' metadata on their tags.
|
// we sort rooms by the lexicographic ordering of the 'order' metadata on their tags.
|
||||||
// for convenience, we calculate this for now a floating point number between 0.0 and 1.0.
|
// for convenience, we calculate this for now a floating point number between 0.0 and 1.0.
|
||||||
|
@ -274,7 +274,7 @@ var RoomSubList = React.createClass({
|
||||||
},
|
},
|
||||||
|
|
||||||
_getHeaderJsx: function() {
|
_getHeaderJsx: function() {
|
||||||
var TintableSvg = sdk.getComponent("elements.TintableSvg");
|
var TintableSvg = sdk.getComponent("elements.TintableSvg");
|
||||||
return (
|
return (
|
||||||
<h2 onClick={ this.onClick } className="mx_RoomSubList_label">
|
<h2 onClick={ this.onClick } className="mx_RoomSubList_label">
|
||||||
{ this.props.collapsed ? '' : this.props.label }
|
{ this.props.collapsed ? '' : this.props.label }
|
||||||
|
@ -332,7 +332,7 @@ var RoomSubList = React.createClass({
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
subList = <TruncatedList className={ classes }>
|
subList = <TruncatedList className={ classes }>
|
||||||
</TruncatedList>;
|
</TruncatedList>;
|
||||||
}
|
}
|
||||||
|
|
||||||
return connectDropTarget(
|
return connectDropTarget(
|
||||||
|
@ -356,7 +356,7 @@ var RoomSubList = React.createClass({
|
||||||
|
|
||||||
// Export the wrapped version, inlining the 'collect' functions
|
// Export the wrapped version, inlining the 'collect' functions
|
||||||
// to more closely resemble the ES7
|
// to more closely resemble the ES7
|
||||||
module.exports =
|
module.exports =
|
||||||
DropTarget('RoomTile', roomListTarget, function(connect) {
|
DropTarget('RoomTile', roomListTarget, function(connect) {
|
||||||
return {
|
return {
|
||||||
connectDropTarget: connect.dropTarget(),
|
connectDropTarget: connect.dropTarget(),
|
||||||
|
|
|
@ -40,7 +40,7 @@ module.exports = React.createClass({
|
||||||
this.props.onFinished();
|
this.props.onFinished();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
render: function() {
|
render: function() {
|
||||||
return (
|
return (
|
||||||
<div className="mx_ViewSource">
|
<div className="mx_ViewSource">
|
||||||
|
|
|
@ -23,7 +23,7 @@ module.exports = React.createClass({
|
||||||
onRegisterClicked: function() {
|
onRegisterClicked: function() {
|
||||||
dis.dispatch({'action': 'start_upgrade_registration'});
|
dis.dispatch({'action': 'start_upgrade_registration'});
|
||||||
},
|
},
|
||||||
|
|
||||||
onLoginClicked: function() {
|
onLoginClicked: function() {
|
||||||
dis.dispatch({'action': 'logout'});
|
dis.dispatch({'action': 'logout'});
|
||||||
dis.dispatch({'action': 'start_login'});
|
dis.dispatch({'action': 'start_login'});
|
||||||
|
|
|
@ -38,7 +38,7 @@ var roomTileSource = {
|
||||||
// Return the data describing the dragged item
|
// Return the data describing the dragged item
|
||||||
var item = {
|
var item = {
|
||||||
room: props.room,
|
room: props.room,
|
||||||
originalList: props.roomSubList,
|
originalList: props.roomSubList,
|
||||||
originalIndex: props.roomSubList.findRoomTile(props.room).index,
|
originalIndex: props.roomSubList.findRoomTile(props.room).index,
|
||||||
targetList: props.roomSubList, // at first target is same as original
|
targetList: props.roomSubList, // at first target is same as original
|
||||||
// lastTargetRoom: null,
|
// lastTargetRoom: null,
|
||||||
|
@ -145,10 +145,10 @@ var roomTileTarget = {
|
||||||
// shuffle the list to add our tile to that position.
|
// shuffle the list to add our tile to that position.
|
||||||
props.roomSubList.moveRoomTile(item.room, roomTile.index);
|
props.roomSubList.moveRoomTile(item.room, roomTile.index);
|
||||||
}
|
}
|
||||||
|
|
||||||
// stop us from flickering between our droptarget and the previous room.
|
// stop us from flickering between our droptarget and the previous room.
|
||||||
// whenever the cursor changes direction we have to reset the flicker-damping.
|
// whenever the cursor changes direction we have to reset the flicker-damping.
|
||||||
/*
|
/*
|
||||||
var yDelta = off.y - item.lastYOffset;
|
var yDelta = off.y - item.lastYOffset;
|
||||||
|
|
||||||
if ((yDelta > 0 && item.lastYDelta < 0) ||
|
if ((yDelta > 0 && item.lastYDelta < 0) ||
|
||||||
|
@ -168,7 +168,7 @@ var roomTileTarget = {
|
||||||
|
|
||||||
if (yDelta) item.lastYDelta = yDelta;
|
if (yDelta) item.lastYDelta = yDelta;
|
||||||
item.lastYOffset = off.y;
|
item.lastYOffset = off.y;
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
else if (switchedTarget) {
|
else if (switchedTarget) {
|
||||||
if (!props.roomSubList.findRoomTile(item.room).room) {
|
if (!props.roomSubList.findRoomTile(item.room).room) {
|
||||||
|
@ -183,7 +183,7 @@ var roomTileTarget = {
|
||||||
|
|
||||||
// Export the wrapped version, inlining the 'collect' functions
|
// Export the wrapped version, inlining the 'collect' functions
|
||||||
// to more closely resemble the ES7
|
// to more closely resemble the ES7
|
||||||
module.exports =
|
module.exports =
|
||||||
DropTarget('RoomTile', roomTileTarget, function(connect, monitor) {
|
DropTarget('RoomTile', roomTileTarget, function(connect, monitor) {
|
||||||
return {
|
return {
|
||||||
// Call this function inside render()
|
// Call this function inside render()
|
||||||
|
|
|
@ -34,7 +34,7 @@ module.exports = React.createClass({
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
tooltip.style.top = tooltip.parentElement.getBoundingClientRect().top + "px";
|
tooltip.style.top = tooltip.parentElement.getBoundingClientRect().top + "px";
|
||||||
tooltip.style.display = "block";
|
tooltip.style.display = "block";
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -50,7 +50,7 @@ module.exports = React.createClass({
|
||||||
onSearch: function() {
|
onSearch: function() {
|
||||||
this.props.onSearch(this.refs.search_term.value, this.state.scope);
|
this.props.onSearch(this.refs.search_term.value, this.state.scope);
|
||||||
},
|
},
|
||||||
|
|
||||||
render: function() {
|
render: function() {
|
||||||
var searchButtonClasses = classNames({ mx_SearchBar_searchButton : true, mx_SearchBar_searching: this.props.searchInProgress });
|
var searchButtonClasses = classNames({ mx_SearchBar_searchButton : true, mx_SearchBar_searching: this.props.searchInProgress });
|
||||||
var thisRoomClasses = classNames({ mx_SearchBar_button : true, mx_SearchBar_unselected : this.state.scope !== 'Room' });
|
var thisRoomClasses = classNames({ mx_SearchBar_button : true, mx_SearchBar_unselected : this.state.scope !== 'Room' });
|
||||||
|
|
|
@ -120,7 +120,7 @@ var ACTION_DISABLED = null;
|
||||||
*/
|
*/
|
||||||
var VectorPushRulesDefinitions = {
|
var VectorPushRulesDefinitions = {
|
||||||
|
|
||||||
// Messages containing user's display name
|
// Messages containing user's display name
|
||||||
// (skip contains_user_name which is too geeky)
|
// (skip contains_user_name which is too geeky)
|
||||||
".m.rule.contains_display_name": {
|
".m.rule.contains_display_name": {
|
||||||
kind: "underride",
|
kind: "underride",
|
||||||
|
@ -225,7 +225,7 @@ module.exports = React.createClass({
|
||||||
DISPLAY: "DISPLAY", // The component is ready and display data
|
DISPLAY: "DISPLAY", // The component is ready and display data
|
||||||
ERROR: "ERROR" // There was an error
|
ERROR: "ERROR" // There was an error
|
||||||
},
|
},
|
||||||
|
|
||||||
getInitialState: function() {
|
getInitialState: function() {
|
||||||
return {
|
return {
|
||||||
phase: this.phases.LOADING,
|
phase: this.phases.LOADING,
|
||||||
|
@ -239,11 +239,11 @@ module.exports = React.createClass({
|
||||||
externalContentRules: [] // Keyword push rules that have been defined outside Vector UI
|
externalContentRules: [] // Keyword push rules that have been defined outside Vector UI
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
componentWillMount: function() {
|
componentWillMount: function() {
|
||||||
this._refreshFromServer();
|
this._refreshFromServer();
|
||||||
},
|
},
|
||||||
|
|
||||||
onEnableNotificationsChange: function(event) {
|
onEnableNotificationsChange: function(event) {
|
||||||
var self = this;
|
var self = this;
|
||||||
this.setState({
|
this.setState({
|
||||||
|
@ -254,15 +254,15 @@ module.exports = React.createClass({
|
||||||
self._refreshFromServer();
|
self._refreshFromServer();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
onEnableDesktopNotificationsChange: function(event) {
|
onEnableDesktopNotificationsChange: function(event) {
|
||||||
UserSettingsStore.setEnableNotifications(event.target.checked);
|
UserSettingsStore.setEnableNotifications(event.target.checked);
|
||||||
},
|
},
|
||||||
|
|
||||||
onNotifStateButtonClicked: function(event) {
|
onNotifStateButtonClicked: function(event) {
|
||||||
var vectorRuleId = event.target.className.split("-")[0];
|
var vectorRuleId = event.target.className.split("-")[0];
|
||||||
var newPushRuleVectorState = event.target.className.split("-")[1];
|
var newPushRuleVectorState = event.target.className.split("-")[1];
|
||||||
|
|
||||||
if ("_keywords" === vectorRuleId) {
|
if ("_keywords" === vectorRuleId) {
|
||||||
this._setKeywordsPushRuleVectorState(newPushRuleVectorState)
|
this._setKeywordsPushRuleVectorState(newPushRuleVectorState)
|
||||||
}
|
}
|
||||||
|
@ -273,7 +273,7 @@ module.exports = React.createClass({
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
onKeywordsClicked: function(event) {
|
onKeywordsClicked: function(event) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
|
@ -314,13 +314,13 @@ module.exports = React.createClass({
|
||||||
}
|
}
|
||||||
return array;
|
return array;
|
||||||
},[]);
|
},[]);
|
||||||
|
|
||||||
self._setKeywords(newKeywords);
|
self._setKeywords(newKeywords);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
getRule: function(vectorRuleId) {
|
getRule: function(vectorRuleId) {
|
||||||
for (var i in this.state.vectorPushRules) {
|
for (var i in this.state.vectorPushRules) {
|
||||||
var rule = this.state.vectorPushRules[i];
|
var rule = this.state.vectorPushRules[i];
|
||||||
|
@ -329,7 +329,7 @@ module.exports = React.createClass({
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_actionsFor: function(pushRuleVectorState) {
|
_actionsFor: function(pushRuleVectorState) {
|
||||||
if (pushRuleVectorState === PushRuleVectorState.ON) {
|
if (pushRuleVectorState === PushRuleVectorState.ON) {
|
||||||
return ACTION_NOTIFY;
|
return ACTION_NOTIFY;
|
||||||
|
@ -338,12 +338,12 @@ module.exports = React.createClass({
|
||||||
return ACTION_HIGHLIGHT_DEFAULT_SOUND;
|
return ACTION_HIGHLIGHT_DEFAULT_SOUND;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// Determine whether a content rule is in the PushRuleVectorState.ON category or in PushRuleVectorState.LOUD
|
// Determine whether a content rule is in the PushRuleVectorState.ON category or in PushRuleVectorState.LOUD
|
||||||
// regardless of its enabled state. Returns undefined if it does not match these categories.
|
// regardless of its enabled state. Returns undefined if it does not match these categories.
|
||||||
_contentRuleVectorStateKind: function(rule) {
|
_contentRuleVectorStateKind: function(rule) {
|
||||||
var stateKind;
|
var stateKind;
|
||||||
|
|
||||||
// Count tweaks to determine if it is a ON or LOUD rule
|
// Count tweaks to determine if it is a ON or LOUD rule
|
||||||
var tweaks = 0;
|
var tweaks = 0;
|
||||||
for (var j in rule.actions) {
|
for (var j in rule.actions) {
|
||||||
|
@ -363,9 +363,9 @@ module.exports = React.createClass({
|
||||||
}
|
}
|
||||||
return stateKind;
|
return stateKind;
|
||||||
},
|
},
|
||||||
|
|
||||||
_setPushRuleVectorState: function(rule, newPushRuleVectorState) {
|
_setPushRuleVectorState: function(rule, newPushRuleVectorState) {
|
||||||
if (rule && rule.vectorState !== newPushRuleVectorState) {
|
if (rule && rule.vectorState !== newPushRuleVectorState) {
|
||||||
|
|
||||||
this.setState({
|
this.setState({
|
||||||
phase: this.phases.LOADING
|
phase: this.phases.LOADING
|
||||||
|
@ -401,14 +401,14 @@ module.exports = React.createClass({
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_setKeywordsPushRuleVectorState: function(newPushRuleVectorState) {
|
_setKeywordsPushRuleVectorState: function(newPushRuleVectorState) {
|
||||||
// Is there really a change?
|
// Is there really a change?
|
||||||
if (this.state.vectorContentRules.vectorState === newPushRuleVectorState
|
if (this.state.vectorContentRules.vectorState === newPushRuleVectorState
|
||||||
|| this.state.vectorContentRules.rules.length === 0) {
|
|| this.state.vectorContentRules.rules.length === 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
var cli = MatrixClientPeg.get();
|
var cli = MatrixClientPeg.get();
|
||||||
|
|
||||||
|
@ -469,7 +469,7 @@ module.exports = React.createClass({
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
_setKeywords: function(newKeywords) {
|
_setKeywords: function(newKeywords) {
|
||||||
this.setState({
|
this.setState({
|
||||||
phase: this.phases.LOADING
|
phase: this.phases.LOADING
|
||||||
|
@ -517,9 +517,9 @@ module.exports = React.createClass({
|
||||||
var pushRuleVectorStateKind = self.state.vectorContentRules.vectorState;
|
var pushRuleVectorStateKind = self.state.vectorContentRules.vectorState;
|
||||||
if (pushRuleVectorStateKind === PushRuleVectorState.OFF) {
|
if (pushRuleVectorStateKind === PushRuleVectorState.OFF) {
|
||||||
// When the current global keywords rule is OFF, we need to look at
|
// When the current global keywords rule is OFF, we need to look at
|
||||||
// the flavor of rules in 'vectorContentRules' to apply the same actions
|
// the flavor of rules in 'vectorContentRules' to apply the same actions
|
||||||
// when creating the new rule.
|
// when creating the new rule.
|
||||||
// Thus, this new rule will join the 'vectorContentRules' set.
|
// Thus, this new rule will join the 'vectorContentRules' set.
|
||||||
if (self.state.vectorContentRules.rules.length) {
|
if (self.state.vectorContentRules.rules.length) {
|
||||||
pushRuleVectorStateKind = self._contentRuleVectorStateKind(self.state.vectorContentRules.rules[0]);
|
pushRuleVectorStateKind = self._contentRuleVectorStateKind(self.state.vectorContentRules.rules[0]);
|
||||||
}
|
}
|
||||||
|
@ -610,7 +610,7 @@ module.exports = React.createClass({
|
||||||
},
|
},
|
||||||
|
|
||||||
_refreshFromServer: function() {
|
_refreshFromServer: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
MatrixClientPeg.get().getPushRules().then(self._portRulesToNewAPI).done(function(rulesets) {
|
MatrixClientPeg.get().getPushRules().then(self._portRulesToNewAPI).done(function(rulesets) {
|
||||||
MatrixClientPeg.get().pushRules = rulesets;
|
MatrixClientPeg.get().pushRules = rulesets;
|
||||||
|
|
||||||
|
@ -685,8 +685,8 @@ module.exports = React.createClass({
|
||||||
// whereas Matrix has a push rule per keyword.
|
// whereas Matrix has a push rule per keyword.
|
||||||
// Vector can set the unique rule in ON, LOUD or OFF state.
|
// Vector can set the unique rule in ON, LOUD or OFF state.
|
||||||
// Matrix has enabled/disabled plus a combination of (highlight, sound) tweaks.
|
// Matrix has enabled/disabled plus a combination of (highlight, sound) tweaks.
|
||||||
|
|
||||||
// The code below determines which set of user's content push rules can be
|
// The code below determines which set of user's content push rules can be
|
||||||
// displayed by the vector UI.
|
// displayed by the vector UI.
|
||||||
// Push rules that does not fit, ie defined by another Matrix client, ends
|
// Push rules that does not fit, ie defined by another Matrix client, ends
|
||||||
// in self.state.externalContentRules.
|
// in self.state.externalContentRules.
|
||||||
|
@ -697,14 +697,14 @@ module.exports = React.createClass({
|
||||||
self.state.vectorContentRules = {
|
self.state.vectorContentRules = {
|
||||||
vectorState: PushRuleVectorState.LOUD,
|
vectorState: PushRuleVectorState.LOUD,
|
||||||
rules: contentRules.loud
|
rules: contentRules.loud
|
||||||
}
|
}
|
||||||
self.state.externalContentRules = [].concat(contentRules.loud_but_disabled, contentRules.on, contentRules.on_but_disabled, contentRules.other);
|
self.state.externalContentRules = [].concat(contentRules.loud_but_disabled, contentRules.on, contentRules.on_but_disabled, contentRules.other);
|
||||||
}
|
}
|
||||||
else if (contentRules.loud_but_disabled.length) {
|
else if (contentRules.loud_but_disabled.length) {
|
||||||
self.state.vectorContentRules = {
|
self.state.vectorContentRules = {
|
||||||
vectorState: PushRuleVectorState.OFF,
|
vectorState: PushRuleVectorState.OFF,
|
||||||
rules: contentRules.loud_but_disabled
|
rules: contentRules.loud_but_disabled
|
||||||
}
|
}
|
||||||
self.state.externalContentRules = [].concat(contentRules.on, contentRules.on_but_disabled, contentRules.other);
|
self.state.externalContentRules = [].concat(contentRules.on, contentRules.on_but_disabled, contentRules.other);
|
||||||
}
|
}
|
||||||
else if (contentRules.on.length) {
|
else if (contentRules.on.length) {
|
||||||
|
@ -787,7 +787,7 @@ module.exports = React.createClass({
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!vectorState) {
|
if (!vectorState) {
|
||||||
console.error("Cannot translate rule actions into Vector rule state. Rule: " + rule);
|
console.error("Cannot translate rule actions into Vector rule state. Rule: " + rule);
|
||||||
vectorState = PushRuleVectorState.OFF;
|
vectorState = PushRuleVectorState.OFF;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -803,7 +803,7 @@ module.exports = React.createClass({
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build the rules not managed by Vector UI
|
// Build the rules not managed by Vector UI
|
||||||
var otherRulesDescriptions = {
|
var otherRulesDescriptions = {
|
||||||
'.m.rule.message': "Notify for all other messages/rooms",
|
'.m.rule.message': "Notify for all other messages/rooms",
|
||||||
|
@ -814,7 +814,7 @@ module.exports = React.createClass({
|
||||||
for (var i in defaultRules.others) {
|
for (var i in defaultRules.others) {
|
||||||
var rule = defaultRules.others[i];
|
var rule = defaultRules.others[i];
|
||||||
var ruleDescription = otherRulesDescriptions[rule.rule_id];
|
var ruleDescription = otherRulesDescriptions[rule.rule_id];
|
||||||
|
|
||||||
// Show enabled default rules that was modified by the user
|
// Show enabled default rules that was modified by the user
|
||||||
if (ruleDescription && rule.enabled && !rule.default) {
|
if (ruleDescription && rule.enabled && !rule.default) {
|
||||||
rule.description = ruleDescription;
|
rule.description = ruleDescription;
|
||||||
|
@ -827,7 +827,7 @@ module.exports = React.createClass({
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
_updatePushRuleActions: function(rule, actions, enabled) {
|
_updatePushRuleActions: function(rule, actions, enabled) {
|
||||||
var cli = MatrixClientPeg.get();
|
var cli = MatrixClientPeg.get();
|
||||||
var deferred = q.defer();
|
var deferred = q.defer();
|
||||||
|
@ -874,7 +874,7 @@ module.exports = React.createClass({
|
||||||
</tr>
|
</tr>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
renderNotifRulesTableRows: function() {
|
renderNotifRulesTableRows: function() {
|
||||||
var rows = [];
|
var rows = [];
|
||||||
for (var i in this.state.vectorPushRules) {
|
for (var i in this.state.vectorPushRules) {
|
||||||
|
@ -884,7 +884,7 @@ module.exports = React.createClass({
|
||||||
return rows;
|
return rows;
|
||||||
},
|
},
|
||||||
|
|
||||||
render: function() {
|
render: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
if (this.state.phase === this.phases.LOADING) {
|
if (this.state.phase === this.phases.LOADING) {
|
||||||
|
@ -958,7 +958,7 @@ module.exports = React.createClass({
|
||||||
{ externalRules }
|
{ externalRules }
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -1022,7 +1022,7 @@ module.exports = React.createClass({
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{ advancedSettings }
|
{ advancedSettings }
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -18,7 +18,7 @@ limitations under the License.
|
||||||
width: 960px;
|
width: 960px;
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
color: #4a4a4a;
|
color: #4a4a4a;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_CreateRoom input,
|
.mx_CreateRoom input,
|
||||||
|
|
|
@ -31,7 +31,7 @@ limitations under the License.
|
||||||
display: -moz-box;
|
display: -moz-box;
|
||||||
display: -ms-flexbox;
|
display: -ms-flexbox;
|
||||||
display: -webkit-flex;
|
display: -webkit-flex;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
-webkit-flex-direction: column;
|
-webkit-flex-direction: column;
|
||||||
|
|
|
@ -14,12 +14,12 @@
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_RoomStatusBar_placeholderIndicator {
|
.mx_RoomStatusBar_placeholderIndicator {
|
||||||
color: #4a4a4a;
|
color: #4a4a4a;
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_RoomStatusBar_scrollDownIndicator {
|
.mx_RoomStatusBar_scrollDownIndicator {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -121,7 +121,7 @@ limitations under the License.
|
||||||
.mx_RoomView_messageListWrapper {
|
.mx_RoomView_messageListWrapper {
|
||||||
max-width: 960px;
|
max-width: 960px;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
|
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
|
|
||||||
display: -webkit-box;
|
display: -webkit-box;
|
||||||
|
|
|
@ -32,12 +32,12 @@
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
position: relative;
|
position: relative;
|
||||||
opacity: 0.6;
|
opacity: 0.6;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_UploadBar_uploadBytes {
|
.mx_UploadBar_uploadBytes {
|
||||||
float: right;
|
float: right;
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
margin-right: 30px;
|
margin-right: 30px;
|
||||||
color: #76cfa6;
|
color: #76cfa6;
|
||||||
|
|
|
@ -26,7 +26,7 @@ limitations under the License.
|
||||||
display: -webkit-flex;
|
display: -webkit-flex;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
-webkit-flex-direction: column;
|
-webkit-flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_UserSettings .mx_RoomHeader {
|
.mx_UserSettings .mx_RoomHeader {
|
||||||
|
@ -50,7 +50,7 @@ limitations under the License.
|
||||||
-webkit-flex: 1 1 0;
|
-webkit-flex: 1 1 0;
|
||||||
flex: 1 1 0;
|
flex: 1 1 0;
|
||||||
|
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_UserSettings_spinner {
|
.mx_UserSettings_spinner {
|
||||||
|
|
|
@ -47,7 +47,7 @@ limitations under the License.
|
||||||
top: 0px;
|
top: 0px;
|
||||||
right: 6px;
|
right: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_EntityTile_name {
|
.mx_EntityTile_name {
|
||||||
display: table-cell;
|
display: table-cell;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
|
|
|
@ -97,10 +97,10 @@ limitations under the License.
|
||||||
|
|
||||||
/* end of overrides */
|
/* end of overrides */
|
||||||
|
|
||||||
/* this is used for the tile for the event which is selected via the URL.
|
/* this is used for the tile for the event which is selected via the URL.
|
||||||
* TODO: ultimately we probably want some transition on here.
|
* TODO: ultimately we probably want some transition on here.
|
||||||
*/
|
*/
|
||||||
.mx_EventTile_selected {
|
.mx_EventTile_selected {
|
||||||
border-left: #76cfa6 5px solid;
|
border-left: #76cfa6 5px solid;
|
||||||
margin-left: 53px;
|
margin-left: 53px;
|
||||||
padding-left: 7px;
|
padding-left: 7px;
|
||||||
|
@ -117,7 +117,7 @@ limitations under the License.
|
||||||
|
|
||||||
.mx_EventTile_searchHighlight a {
|
.mx_EventTile_searchHighlight a {
|
||||||
background-color: #76cfa6;
|
background-color: #76cfa6;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_EventTile_sending {
|
.mx_EventTile_sending {
|
||||||
|
@ -165,7 +165,7 @@ limitations under the License.
|
||||||
.mx_EventTile_editButton {
|
.mx_EventTile_editButton {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_EventTile:hover .mx_EventTile_editButton {
|
.mx_EventTile:hover .mx_EventTile_editButton {
|
||||||
|
|
|
@ -46,7 +46,7 @@ limitations under the License.
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_MemberInfo_profileField {
|
.mx_MemberInfo_profileField {
|
||||||
font-color: #999999;
|
font-color: #999999;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
position: relative;
|
position: relative;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
|
|
|
@ -91,12 +91,12 @@ limitations under the License.
|
||||||
padding-left: 3px;
|
padding-left: 3px;
|
||||||
padding-right: 12px;
|
padding-right: 12px;
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* we have to have display: table in order for the horizontal wrapping to work */
|
/* we have to have display: table in order for the horizontal wrapping to work */
|
||||||
.mx_MemberList_wrapper {
|
.mx_MemberList_wrapper {
|
||||||
display: table;
|
display: table;
|
||||||
table-layout: fixed;
|
table-layout: fixed;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ limitations under the License.
|
||||||
|
|
||||||
-webkit-align-items: center;
|
-webkit-align-items: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
display: -webkit-box;
|
display: -webkit-box;
|
||||||
display: -moz-box;
|
display: -moz-box;
|
||||||
display: -ms-flexbox;
|
display: -ms-flexbox;
|
||||||
|
@ -71,7 +71,7 @@ limitations under the License.
|
||||||
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
-webkit-flex: 0 0 90px;
|
-webkit-flex: 0 0 90px;
|
||||||
flex: 0 0 90px;
|
flex: 0 0 90px;
|
||||||
*/
|
*/
|
||||||
|
@ -203,12 +203,12 @@ limitations under the License.
|
||||||
float: left;
|
float: left;
|
||||||
max-height: 42px;
|
max-height: 42px;
|
||||||
color: #454545;
|
color: #454545;
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
margin-left: 19px;
|
margin-left: 19px;
|
||||||
margin-right: 16px;
|
margin-right: 16px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
border-bottom: 1px solid transparent;
|
border-bottom: 1px solid transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_RoomHeader_avatar {
|
.mx_RoomHeader_avatar {
|
||||||
|
|
|
@ -23,7 +23,7 @@ limitations under the License.
|
||||||
|
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
-webkit-flex-direction: column;
|
-webkit-flex-direction: column;
|
||||||
|
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
-webkit-justify-content: center;
|
-webkit-justify-content: center;
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,7 @@ limitations under the License.
|
||||||
.mx_RoomSettings .mx_RoomSettings_alias {
|
.mx_RoomSettings .mx_RoomSettings_alias {
|
||||||
max-width: 400px;
|
max-width: 400px;
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
/*
|
/*
|
||||||
commented out so margin applies
|
commented out so margin applies
|
||||||
display: table-cell; */
|
display: table-cell; */
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@ limitations under the License.
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
padding-right: 16px;
|
padding-right: 16px;
|
||||||
color: rgba(69, 69, 69, 0.8);
|
color: rgba(69, 69, 69, 0.8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ limitations under the License.
|
||||||
width: 26px;
|
width: 26px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_RoomTile_badge {
|
.mx_RoomTile_badge {
|
||||||
background-color: #76cfa6;
|
background-color: #76cfa6;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border-radius: 26px;
|
border-radius: 26px;
|
||||||
|
@ -84,7 +84,7 @@ limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
.mx_RoomTile_badge {
|
.mx_RoomTile_badge {
|
||||||
background-color: #ff0064;
|
background-color: #ff0064;
|
||||||
border: 3px solid #fff;
|
border: 3px solid #fff;
|
||||||
border-radius: 16px;
|
border-radius: 16px;
|
||||||
|
@ -103,7 +103,7 @@ limitations under the License.
|
||||||
left: 0px;
|
left: 0px;
|
||||||
top: 5px;
|
top: 5px;
|
||||||
bottom: 5px;
|
bottom: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_RoomTile_unreadNotify .mx_RoomTile_badge {
|
.mx_RoomTile_unreadNotify .mx_RoomTile_badge {
|
||||||
background-color: #454545;
|
background-color: #454545;
|
||||||
|
|
|
@ -51,13 +51,13 @@ limitations under the License.
|
||||||
flex: 1;
|
flex: 1;
|
||||||
-webkit-flex: 1;
|
-webkit-flex: 1;
|
||||||
|
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_SearchableEntityList_list {
|
.mx_SearchableEntityList_list {
|
||||||
display: table;
|
display: table;
|
||||||
table-layout: fixed;
|
table-layout: fixed;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_SearchableEntityList_list .mx_EntityTile_chevron {
|
.mx_SearchableEntityList_list .mx_EntityTile_chevron {
|
||||||
|
@ -67,7 +67,7 @@ limitations under the License.
|
||||||
.mx_SearchableEntityList_hrWrapper {
|
.mx_SearchableEntityList_hrWrapper {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
flex: 0 0 auto;
|
flex: 0 0 auto;
|
||||||
-webkit-flex: 0 0 auto;
|
-webkit-flex: 0 0 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_SearchableEntityList hr {
|
.mx_SearchableEntityList hr {
|
||||||
|
|
|
@ -22,22 +22,22 @@ limitations under the License.
|
||||||
border-bottom: 1px solid #eee;
|
border-bottom: 1px solid #eee;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_TopUnreadMessagesBar_scrollUp {
|
.mx_TopUnreadMessagesBar_scrollUp {
|
||||||
display: inline;
|
display: inline;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_TopUnreadMessagesBar_scrollUp img {
|
.mx_TopUnreadMessagesBar_scrollUp img {
|
||||||
padding-left: 10px;
|
padding-left: 10px;
|
||||||
padding-right: 31px;
|
padding-right: 31px;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_TopUnreadMessagesBar_scrollUp span {
|
.mx_TopUnreadMessagesBar_scrollUp span {
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_TopUnreadMessagesBar_close {
|
.mx_TopUnreadMessagesBar_close {
|
||||||
float: right;
|
float: right;
|
||||||
padding-right: 14px;
|
padding-right: 14px;
|
||||||
padding-top: 3px;
|
padding-top: 3px;
|
||||||
|
|
|
@ -35,7 +35,7 @@ limitations under the License.
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_LeftPanel_callView {
|
.mx_LeftPanel_callView {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_LeftPanel .mx_RoomList_scrollbar {
|
.mx_LeftPanel .mx_RoomList_scrollbar {
|
||||||
|
@ -48,7 +48,7 @@ limitations under the License.
|
||||||
-webkit-flex: 1 1 0;
|
-webkit-flex: 1 1 0;
|
||||||
flex: 1 1 0;
|
flex: 1 1 0;
|
||||||
|
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_LeftPanel .mx_BottomLeftMenu {
|
.mx_LeftPanel .mx_BottomLeftMenu {
|
||||||
|
|
|
@ -49,7 +49,7 @@ limitations under the License.
|
||||||
.mx_RightPanel_headerButton {
|
.mx_RightPanel_headerButton {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
display: table-cell;
|
display: table-cell;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
padding-left: 15px;
|
padding-left: 15px;
|
||||||
padding-right: 15px;
|
padding-right: 15px;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
@ -72,7 +72,7 @@ limitations under the License.
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 4px;
|
top: 4px;
|
||||||
left: 28px;
|
left: 28px;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
background-color: #76cfa6;
|
background-color: #76cfa6;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
|
|
@ -26,21 +26,21 @@ limitations under the License.
|
||||||
display: -moz-box;
|
display: -moz-box;
|
||||||
display: -ms-flexbox;
|
display: -ms-flexbox;
|
||||||
display: -webkit-flex;
|
display: -webkit-flex;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
-webkit-flex-direction: column;
|
-webkit-flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_RoomDirectory_list {
|
.mx_RoomDirectory_list {
|
||||||
-webkit-flex: 1;
|
-webkit-flex: 1;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
|
||||||
display: -webkit-box;
|
display: -webkit-box;
|
||||||
display: -moz-box;
|
display: -moz-box;
|
||||||
display: -ms-flexbox;
|
display: -ms-flexbox;
|
||||||
display: -webkit-flex;
|
display: -webkit-flex;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
-webkit-flex-direction: column;
|
-webkit-flex-direction: column;
|
||||||
|
@ -59,7 +59,7 @@ limitations under the License.
|
||||||
|
|
||||||
.mx_RoomDirectory_tableWrapper {
|
.mx_RoomDirectory_tableWrapper {
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
-webkit-flex: 1 1 0;
|
-webkit-flex: 1 1 0;
|
||||||
flex: 1 1 0;
|
flex: 1 1 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ limitations under the License.
|
||||||
|
|
||||||
.mx_SearchBar_searching img {
|
.mx_SearchBar_searching img {
|
||||||
animation: pulsate 0.5s ease-out;
|
animation: pulsate 0.5s ease-out;
|
||||||
animation-iteration-count: infinite;
|
animation-iteration-count: infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_SearchBar_button {
|
.mx_SearchBar_button {
|
||||||
|
@ -77,7 +77,7 @@ limitations under the License.
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
color: #76CFA6;
|
color: #76CFA6;
|
||||||
border: #76CFA6 1px solid;
|
border: #76CFA6 1px solid;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_SearchBar_cancel {
|
.mx_SearchBar_cancel {
|
||||||
padding-left: 14px;
|
padding-left: 14px;
|
||||||
|
|
|
@ -184,7 +184,7 @@ function loadApp() {
|
||||||
}} />,
|
}} />,
|
||||||
document.getElementById('matrixchat')
|
document.getElementById('matrixchat')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
loadApp();
|
loadApp();
|
||||||
|
|
Loading…
Reference in New Issue