forked from matrix/element-web
Merge branch 'develop' into wmwragg/direct-chat-sublist
This commit is contained in:
commit
ef9d6d45b6
119
CHANGELOG.md
119
CHANGELOG.md
|
@ -1,3 +1,122 @@
|
||||||
|
Changes in [0.7.4-r1](https://github.com/vector-im/vector-web/releases/tag/v0.7.4-r1) (2016-08-12)
|
||||||
|
==================================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/vector-web/compare/v0.7.4...v0.7.4-r1)
|
||||||
|
* Update to matrix-react-sdk 0.6.4-r1 to fix inviting multiple people
|
||||||
|
|
||||||
|
|
||||||
|
Changes in [0.7.4](https://github.com/vector-im/vector-web/releases/tag/v0.7.4) (2016-08-11)
|
||||||
|
============================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/vector-web/compare/v0.7.3...v0.7.4)
|
||||||
|
|
||||||
|
* Don't show border on composer when not in RTE mode
|
||||||
|
[\#1954](https://github.com/vector-im/vector-web/pull/1954)
|
||||||
|
* Wmwragg/room tag menu
|
||||||
|
[\#1941](https://github.com/vector-im/vector-web/pull/1941)
|
||||||
|
* Don't redirect to mobile app if verifying 3pid
|
||||||
|
[\#1951](https://github.com/vector-im/vector-web/pull/1951)
|
||||||
|
* Make sure that we clear localstorage before *all* tests
|
||||||
|
[\#1950](https://github.com/vector-im/vector-web/pull/1950)
|
||||||
|
* Basic CSS for multi-invite dialog
|
||||||
|
[\#1942](https://github.com/vector-im/vector-web/pull/1942)
|
||||||
|
* More tests for the loading process:
|
||||||
|
[\#1947](https://github.com/vector-im/vector-web/pull/1947)
|
||||||
|
* Support for refactored login token handling
|
||||||
|
[\#1946](https://github.com/vector-im/vector-web/pull/1946)
|
||||||
|
* Various fixes and improvements to emojification.
|
||||||
|
[\#1935](https://github.com/vector-im/vector-web/pull/1935)
|
||||||
|
* More app-loading tests
|
||||||
|
[\#1938](https://github.com/vector-im/vector-web/pull/1938)
|
||||||
|
* Some tests of the application load process
|
||||||
|
[\#1936](https://github.com/vector-im/vector-web/pull/1936)
|
||||||
|
* Add 'enable labs' setting to sample config
|
||||||
|
[\#1930](https://github.com/vector-im/vector-web/pull/1930)
|
||||||
|
* Matthew/scalar
|
||||||
|
[\#1928](https://github.com/vector-im/vector-web/pull/1928)
|
||||||
|
* Fix unit tests
|
||||||
|
[\#1929](https://github.com/vector-im/vector-web/pull/1929)
|
||||||
|
* Wmwragg/mute mention state fix
|
||||||
|
[\#1926](https://github.com/vector-im/vector-web/pull/1926)
|
||||||
|
* CSS for deactivate account dialog
|
||||||
|
[\#1919](https://github.com/vector-im/vector-web/pull/1919)
|
||||||
|
* Wmwragg/mention state menu
|
||||||
|
[\#1900](https://github.com/vector-im/vector-web/pull/1900)
|
||||||
|
* Fix UnknownBody styling for #1901
|
||||||
|
[\#1913](https://github.com/vector-im/vector-web/pull/1913)
|
||||||
|
* Exclude olm from the webpack
|
||||||
|
[\#1914](https://github.com/vector-im/vector-web/pull/1914)
|
||||||
|
* Wmwragg/button updates
|
||||||
|
[\#1912](https://github.com/vector-im/vector-web/pull/1912)
|
||||||
|
* Wmwragg/button updates
|
||||||
|
[\#1828](https://github.com/vector-im/vector-web/pull/1828)
|
||||||
|
* CSS for device management UI
|
||||||
|
[\#1909](https://github.com/vector-im/vector-web/pull/1909)
|
||||||
|
* Fix a warning from RoomSubList
|
||||||
|
[\#1908](https://github.com/vector-im/vector-web/pull/1908)
|
||||||
|
* Fix notifications warning layout
|
||||||
|
[\#1907](https://github.com/vector-im/vector-web/pull/1907)
|
||||||
|
* Remove relayoutOnUpdate prop on gemini-scrollbar
|
||||||
|
[\#1883](https://github.com/vector-im/vector-web/pull/1883)
|
||||||
|
* Bump dependency versions
|
||||||
|
[\#1842](https://github.com/vector-im/vector-web/pull/1842)
|
||||||
|
* Wmwragg/mention state indicator round 2
|
||||||
|
[\#1835](https://github.com/vector-im/vector-web/pull/1835)
|
||||||
|
* Wmwragg/spinner fix
|
||||||
|
[\#1822](https://github.com/vector-im/vector-web/pull/1822)
|
||||||
|
* Wmwragg/mention state indicator
|
||||||
|
[\#1823](https://github.com/vector-im/vector-web/pull/1823)
|
||||||
|
* Revert "Presentation for inline link"
|
||||||
|
[\#1809](https://github.com/vector-im/vector-web/pull/1809)
|
||||||
|
* Wmwragg/modal restyle
|
||||||
|
[\#1806](https://github.com/vector-im/vector-web/pull/1806)
|
||||||
|
* Presentation for inline link
|
||||||
|
[\#1799](https://github.com/vector-im/vector-web/pull/1799)
|
||||||
|
* CSS for offline user colours
|
||||||
|
[\#1798](https://github.com/vector-im/vector-web/pull/1798)
|
||||||
|
* Wmwragg/typography updates
|
||||||
|
[\#1776](https://github.com/vector-im/vector-web/pull/1776)
|
||||||
|
* webpack: always use the olm from vector-web
|
||||||
|
[\#1766](https://github.com/vector-im/vector-web/pull/1766)
|
||||||
|
* feat: large emoji support
|
||||||
|
[\#1718](https://github.com/vector-im/vector-web/pull/1718)
|
||||||
|
* Autocomplete
|
||||||
|
[\#1717](https://github.com/vector-im/vector-web/pull/1717)
|
||||||
|
* #1664 Set a maximum height for codeblocks
|
||||||
|
[\#1670](https://github.com/vector-im/vector-web/pull/1670)
|
||||||
|
* CSS for device blocking
|
||||||
|
[\#1688](https://github.com/vector-im/vector-web/pull/1688)
|
||||||
|
* Fix joining rooms by typing the alias
|
||||||
|
[\#1685](https://github.com/vector-im/vector-web/pull/1685)
|
||||||
|
* Add ability to delete an alias from room directory
|
||||||
|
[\#1680](https://github.com/vector-im/vector-web/pull/1680)
|
||||||
|
* package.json: add olm as optionalDependency
|
||||||
|
[\#1678](https://github.com/vector-im/vector-web/pull/1678)
|
||||||
|
* Another go at enabling olm on vector.im/develop
|
||||||
|
[\#1675](https://github.com/vector-im/vector-web/pull/1675)
|
||||||
|
* CSS for unverify button
|
||||||
|
[\#1661](https://github.com/vector-im/vector-web/pull/1661)
|
||||||
|
* CSS fix for rooms with crypto enabled
|
||||||
|
[\#1660](https://github.com/vector-im/vector-web/pull/1660)
|
||||||
|
* Karma: fix warning by ignoring olm
|
||||||
|
[\#1652](https://github.com/vector-im/vector-web/pull/1652)
|
||||||
|
* Update for react-sdk dbkr/fix_peeking branch
|
||||||
|
[\#1639](https://github.com/vector-im/vector-web/pull/1639)
|
||||||
|
* Update README.md
|
||||||
|
[\#1641](https://github.com/vector-im/vector-web/pull/1641)
|
||||||
|
* Fix karma tests
|
||||||
|
[\#1643](https://github.com/vector-im/vector-web/pull/1643)
|
||||||
|
* Rich Text Editor
|
||||||
|
[\#1553](https://github.com/vector-im/vector-web/pull/1553)
|
||||||
|
* Fix RoomDirectory to join by alias whenever possible.
|
||||||
|
[\#1615](https://github.com/vector-im/vector-web/pull/1615)
|
||||||
|
* Make the config optional
|
||||||
|
[\#1612](https://github.com/vector-im/vector-web/pull/1612)
|
||||||
|
* CSS support for device verification
|
||||||
|
[\#1610](https://github.com/vector-im/vector-web/pull/1610)
|
||||||
|
* Don't use SdkConfig
|
||||||
|
[\#1609](https://github.com/vector-im/vector-web/pull/1609)
|
||||||
|
* serve config.json statically instead of bundling it
|
||||||
|
[\#1516](https://github.com/vector-im/vector-web/pull/1516)
|
||||||
|
|
||||||
Changes in [0.7.3](https://github.com/vector-im/vector-web/releases/tag/v0.7.3) (2016-06-03)
|
Changes in [0.7.3](https://github.com/vector-im/vector-web/releases/tag/v0.7.3) (2016-06-03)
|
||||||
============================================================================================
|
============================================================================================
|
||||||
[Full Changelog](https://github.com/vector-im/vector-web/compare/v0.7.2...v0.7.3)
|
[Full Changelog](https://github.com/vector-im/vector-web/compare/v0.7.2...v0.7.3)
|
||||||
|
|
|
@ -173,6 +173,10 @@ will watch for changes to the files and rebuild automatically.
|
||||||
If you add or remove any components from the Vector skin, you will need to rebuild
|
If you add or remove any components from the Vector skin, you will need to rebuild
|
||||||
the skin's index by running, `npm run reskindex`.
|
the skin's index by running, `npm run reskindex`.
|
||||||
|
|
||||||
|
If any of these steps error with, `file table overflow`, you are probably on a mac
|
||||||
|
which has a very low limit on max open files. Run `ulimit -Sn 1024` and try again.
|
||||||
|
You'll need to do this in each new terminal you open before building vector.
|
||||||
|
|
||||||
Filing issues
|
Filing issues
|
||||||
=============
|
=============
|
||||||
|
|
||||||
|
|
13
package.json
13
package.json
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "vector-web",
|
"name": "vector-web",
|
||||||
"version": "0.7.3",
|
"version": "0.7.4-r1",
|
||||||
"description": "Vector webapp",
|
"description": "Vector webapp",
|
||||||
"author": "matrix.org",
|
"author": "matrix.org",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
"build:compile": "babel --source-maps -d lib src",
|
"build:compile": "babel --source-maps -d lib src",
|
||||||
"build:bundle": "NODE_ENV=production webpack -p lib/vector/index.js vector/bundle.js",
|
"build:bundle": "NODE_ENV=production webpack -p lib/vector/index.js vector/bundle.js",
|
||||||
"build:bundle:dev": "NODE_ENV=production webpack --optimize-occurence-order lib/vector/index.js vector/bundle.js",
|
"build:bundle:dev": "NODE_ENV=production webpack --optimize-occurence-order lib/vector/index.js vector/bundle.js",
|
||||||
"build:staticfiles": "scripts/staticfiles.js",
|
"build:staticfiles": "cpx -v node_modules/olm/olm.js vector/",
|
||||||
"build": "npm run build:staticfiles && npm run build:emojione && npm run build:css && npm run build:compile && npm run build:bundle",
|
"build": "npm run build:staticfiles && npm run build:emojione && npm run build:css && npm run build:compile && npm run build:bundle",
|
||||||
"build:dev": "npm run build:staticfiles && npm run build:emojione && npm run build:css && npm run build:compile && npm run build:bundle:dev",
|
"build:dev": "npm run build:staticfiles && npm run build:emojione && npm run build:css && npm run build:compile && npm run build:bundle:dev",
|
||||||
"package": "scripts/package.sh",
|
"package": "scripts/package.sh",
|
||||||
|
@ -26,9 +26,10 @@
|
||||||
"start:js": "webpack -w src/vector/index.js vector/bundle.js",
|
"start:js": "webpack -w src/vector/index.js vector/bundle.js",
|
||||||
"start:js:prod": "NODE_ENV=production webpack -w src/vector/index.js vector/bundle.js",
|
"start:js:prod": "NODE_ENV=production webpack -w src/vector/index.js vector/bundle.js",
|
||||||
"start:skins:css": "catw \"src/skins/vector/css/**/*.css\" -o vector/components.css",
|
"start:skins:css": "catw \"src/skins/vector/css/**/*.css\" -o vector/components.css",
|
||||||
|
"start:staticfiles": "cpx -Lwv node_modules/olm/olm.js vector/",
|
||||||
"//cache": "Note the -c 1 below due to https://code.google.com/p/chromium/issues/detail?id=508270",
|
"//cache": "Note the -c 1 below due to https://code.google.com/p/chromium/issues/detail?id=508270",
|
||||||
"start": "parallelshell \"npm run build:staticfiles\" \"npm run start:emojione\" \"npm run start:js\" \"npm run start:skins:css\" \"http-server -c 1 vector\"",
|
"start": "parallelshell \"npm run start:staticfiles\" \"npm run start:emojione\" \"npm run start:js\" \"npm run start:skins:css\" \"http-server -c 1 vector\"",
|
||||||
"start:prod": "parallelshell \"npm run build:staticfiles\" \"npm run start:emojione\" \"npm run start:js:prod\" \"npm run start:skins:css\" \"http-server -c 1 vector\"",
|
"start:prod": "parallelshell \"npm run start:staticfiles\" \"npm run start:emojione\" \"npm run start:js:prod\" \"npm run start:skins:css\" \"http-server -c 1 vector\"",
|
||||||
"clean": "rimraf lib vector/olm.js vector/bundle.css vector/bundle.js vector/bundle.js.map vector/webpack.css* vector/emojione",
|
"clean": "rimraf lib vector/olm.js vector/bundle.css vector/bundle.js vector/bundle.js.map vector/webpack.css* vector/emojione",
|
||||||
"prepublish": "npm run build:css && npm run build:compile",
|
"prepublish": "npm run build:css && npm run build:compile",
|
||||||
"test": "karma start --single-run=true --autoWatch=false --browsers PhantomJS --colors=false",
|
"test": "karma start --single-run=true --autoWatch=false --browsers PhantomJS --colors=false",
|
||||||
|
@ -55,7 +56,9 @@
|
||||||
"react-dnd-html5-backend": "^2.1.2",
|
"react-dnd-html5-backend": "^2.1.2",
|
||||||
"react-dom": "^15.2.1",
|
"react-dom": "^15.2.1",
|
||||||
"react-gemini-scrollbar": "matrix-org/react-gemini-scrollbar#5e97aef",
|
"react-gemini-scrollbar": "matrix-org/react-gemini-scrollbar#5e97aef",
|
||||||
"sanitize-html": "^1.11.1"
|
"sanitize-html": "^1.11.1",
|
||||||
|
"ua-parser-js": "^0.7.10",
|
||||||
|
"url": "^0.11.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"babel": "^5.8.23",
|
"babel": "^5.8.23",
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
#!/usr/bin/env node
|
|
||||||
|
|
||||||
// copy static files from node_modules to the vector directory
|
|
||||||
//
|
|
||||||
|
|
||||||
var fs = require('fs-extra');
|
|
||||||
|
|
||||||
function exists(f) {
|
|
||||||
try {
|
|
||||||
fs.statSync(f);
|
|
||||||
return true;
|
|
||||||
} catch(e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const olm = 'node_modules/olm/olm.js';
|
|
||||||
if (exists(olm)) {
|
|
||||||
console.log("copy", olm, "-> vector");
|
|
||||||
fs.copySync(olm, 'vector/olm.js');
|
|
||||||
}
|
|
|
@ -19,8 +19,8 @@ limitations under the License.
|
||||||
var q = require("q");
|
var q = require("q");
|
||||||
var React = require('react');
|
var React = require('react');
|
||||||
var classNames = require('classnames');
|
var classNames = require('classnames');
|
||||||
|
var RoomNotifs = require('matrix-react-sdk/lib/RoomNotifs');
|
||||||
var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg');
|
var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg');
|
||||||
var dis = require('matrix-react-sdk/lib/dispatcher');
|
|
||||||
|
|
||||||
module.exports = React.createClass({
|
module.exports = React.createClass({
|
||||||
displayName: 'NotificationStateContextMenu',
|
displayName: 'NotificationStateContextMenu',
|
||||||
|
@ -31,95 +31,86 @@ module.exports = React.createClass({
|
||||||
onFinished: React.PropTypes.func,
|
onFinished: React.PropTypes.func,
|
||||||
},
|
},
|
||||||
|
|
||||||
getInitialState: function() {
|
getInitialState() {
|
||||||
var areNotifsMuted = false;
|
|
||||||
var cli = MatrixClientPeg.get();
|
|
||||||
if (!cli.isGuest()) {
|
|
||||||
var roomPushRule = cli.getRoomPushRule("global", this.props.room.roomId);
|
|
||||||
if (roomPushRule) {
|
|
||||||
if (0 <= roomPushRule.actions.indexOf("dont_notify")) {
|
|
||||||
areNotifsMuted = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
areNotifsMuted: areNotifsMuted,
|
roomNotifState: RoomNotifs.getRoomNotifsState(this.props.room.roomId),
|
||||||
};
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_save: function( areNotifsMuted ) {
|
componentWillMount: function() {
|
||||||
var self = this;
|
this._unmounted = false;
|
||||||
|
},
|
||||||
|
|
||||||
|
componentWillUnmount: function() {
|
||||||
|
this._unmounted = true;
|
||||||
|
},
|
||||||
|
|
||||||
|
_save: function(newState) {
|
||||||
|
const oldState = this.state.roomNotifState;
|
||||||
const roomId = this.props.room.roomId;
|
const roomId = this.props.room.roomId;
|
||||||
var cli = MatrixClientPeg.get();
|
var cli = MatrixClientPeg.get();
|
||||||
|
|
||||||
if (!cli.isGuest()) {
|
if (cli.isGuest()) return;
|
||||||
// Wrapping this in a q promise, as setRoomMutePushRule can return
|
|
||||||
// a promise or a value
|
|
||||||
q(cli.setRoomMutePushRule("global", roomId, areNotifsMuted))
|
|
||||||
.then(function() {
|
|
||||||
self.setState({areNotifsMuted: areNotifsMuted});
|
|
||||||
|
|
||||||
|
this.setState({
|
||||||
|
roomNotifState: newState,
|
||||||
|
});
|
||||||
|
RoomNotifs.setRoomNotifsState(this.props.room.roomId, newState).done(() => {
|
||||||
// delay slightly so that the user can see their state change
|
// delay slightly so that the user can see their state change
|
||||||
// before closing the menu
|
// before closing the menu
|
||||||
return q.delay(500).then(function() {
|
return q.delay(500).then(() => {
|
||||||
// tell everyone that wants to know of the change in
|
if (this._unmounted) return;
|
||||||
// notification state
|
|
||||||
dis.dispatch({
|
|
||||||
action: 'notification_change',
|
|
||||||
roomId: self.props.room.roomId,
|
|
||||||
areNotifsMuted: areNotifsMuted,
|
|
||||||
});
|
|
||||||
|
|
||||||
// Close the context menu
|
// Close the context menu
|
||||||
if (self.props.onFinished) {
|
if (this.props.onFinished) {
|
||||||
self.props.onFinished();
|
this.props.onFinished();
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}).fail(function(error) {
|
}, (error) => {
|
||||||
// TODO: some form of error notification to the user
|
// TODO: some form of error notification to the user
|
||||||
// to inform them that their state change failed.
|
// to inform them that their state change failed.
|
||||||
|
// For now we at least set the state back
|
||||||
|
if (this._unmounted) return;
|
||||||
|
this.setState({
|
||||||
|
roomNotifState: oldState,
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_onClickAlertMe: function() {
|
_onClickAlertMe: function() {
|
||||||
// Placeholder
|
this._save(RoomNotifs.ALL_MESSAGES_LOUD);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onClickAllNotifs: function() {
|
_onClickAllNotifs: function() {
|
||||||
this._save(false);
|
this._save(RoomNotifs.ALL_MESSAGES);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onClickMentions: function() {
|
_onClickMentions: function() {
|
||||||
this._save(true);
|
this._save(RoomNotifs.MENTIONS_ONLY);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onClickMute: function() {
|
_onClickMute: function() {
|
||||||
// Placeholder
|
this._save(RoomNotifs.MUTE);
|
||||||
},
|
},
|
||||||
|
|
||||||
render: function() {
|
render: function() {
|
||||||
var cli = MatrixClientPeg.get();
|
|
||||||
|
|
||||||
var alertMeClasses = classNames({
|
var alertMeClasses = classNames({
|
||||||
'mx_NotificationStateContextMenu_field': true,
|
'mx_NotificationStateContextMenu_field': true,
|
||||||
'mx_NotificationStateContextMenu_fieldDisabled': true,
|
'mx_NotificationStateContextMenu_fieldSet': this.state.roomNotifState == RoomNotifs.ALL_MESSAGES_LOUD,
|
||||||
});
|
});
|
||||||
|
|
||||||
var allNotifsClasses = classNames({
|
var allNotifsClasses = classNames({
|
||||||
'mx_NotificationStateContextMenu_field': true,
|
'mx_NotificationStateContextMenu_field': true,
|
||||||
'mx_NotificationStateContextMenu_fieldSet': !this.state.areNotifsMuted,
|
'mx_NotificationStateContextMenu_fieldSet': this.state.roomNotifState == RoomNotifs.ALL_MESSAGES,
|
||||||
});
|
});
|
||||||
|
|
||||||
var mentionsClasses = classNames({
|
var mentionsClasses = classNames({
|
||||||
'mx_NotificationStateContextMenu_field': true,
|
'mx_NotificationStateContextMenu_field': true,
|
||||||
'mx_NotificationStateContextMenu_fieldSet': this.state.areNotifsMuted,
|
'mx_NotificationStateContextMenu_fieldSet': this.state.roomNotifState == RoomNotifs.MENTIONS_ONLY,
|
||||||
});
|
});
|
||||||
|
|
||||||
var muteNotifsClasses = classNames({
|
var muteNotifsClasses = classNames({
|
||||||
'mx_NotificationStateContextMenu_field': true,
|
'mx_NotificationStateContextMenu_field': true,
|
||||||
'mx_NotificationStateContextMenu_fieldDisabled': true,
|
'mx_NotificationStateContextMenu_fieldSet': this.state.roomNotifState == RoomNotifs.MUTE,
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
|
@ -80,7 +80,7 @@ module.exports = React.createClass({
|
||||||
getName: function () {
|
getName: function () {
|
||||||
var name = this.props.name;
|
var name = this.props.name;
|
||||||
if (name && this.props.link) {
|
if (name && this.props.link) {
|
||||||
name = <a href={ this.props.link } target="_blank">{ name }</a>;
|
name = <a href={ this.props.link } target="_blank" rel="noopener">{ name }</a>;
|
||||||
}
|
}
|
||||||
return name;
|
return name;
|
||||||
},
|
},
|
||||||
|
@ -169,7 +169,7 @@ module.exports = React.createClass({
|
||||||
{ this.getName() }
|
{ this.getName() }
|
||||||
</div>
|
</div>
|
||||||
{ eventMeta }
|
{ eventMeta }
|
||||||
<a className="mx_ImageView_link" href={ this.props.src } target="_blank">
|
<a className="mx_ImageView_link" href={ this.props.src } target="_blank" rel="noopener">
|
||||||
<div className="mx_ImageView_download">
|
<div className="mx_ImageView_download">
|
||||||
Download this file<br/>
|
Download this file<br/>
|
||||||
<span className="mx_ImageView_size">{ size_res }</span>
|
<span className="mx_ImageView_size">{ size_res }</span>
|
||||||
|
|
|
@ -65,7 +65,7 @@ module.exports = {
|
||||||
// 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": new VectorPushRuleDefinition({
|
".m.rule.contains_display_name": new VectorPushRuleDefinition({
|
||||||
kind: "underride",
|
kind: "override",
|
||||||
description: "Messages containing my name",
|
description: "Messages containing my name",
|
||||||
vectorStateToActions: { // The actions for each vector state, or null to disable the rule.
|
vectorStateToActions: { // The actions for each vector state, or null to disable the rule.
|
||||||
on: StandardActions.ACTION_NOTIFY,
|
on: StandardActions.ACTION_NOTIFY,
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
<g id="Extra-icons-sheet" transform="translate(-542.000000, -366.000000)">
|
<g id="Extra-icons-sheet" transform="translate(-542.000000, -366.000000)">
|
||||||
<g id="icons_video" transform="translate(542.000000, 366.000000)">
|
<g id="icons_video" transform="translate(542.000000, 366.000000)">
|
||||||
<path d="M17.5,35 C27.1649831,35 35,27.1649831 35,17.5 C35,7.83501688 27.1649831,0 17.5,0 C7.83501688,0 0,7.83501688 0,17.5 C0,27.1649831 7.83501688,35 17.5,35 Z" id="Oval-109-Copy-2" fill="#EAF5F0"></path>
|
<path d="M17.5,35 C27.1649831,35 35,27.1649831 35,17.5 C35,7.83501688 27.1649831,0 17.5,0 C7.83501688,0 0,7.83501688 0,17.5 C0,27.1649831 7.83501688,35 17.5,35 Z" id="Oval-109-Copy-2" fill="#EAF5F0"></path>
|
||||||
<g transform="translate(9.000000, 9.000000)" id="Rectangle-20-+-Path-16" stroke="#76CFA6">
|
<g transform="translate(9.000000, 11.500000)" id="Rectangle-20-+-Path-16" stroke="#76CFA6">
|
||||||
<g>
|
<g transform="scale(1.0, 0.8)">
|
||||||
<rect id="Rectangle-20" x="0" y="0" width="13" height="17" rx="4"></rect>
|
<rect id="Rectangle-20" x="0" y="0" width="13" height="17" rx="4"></rect>
|
||||||
<path d="M13,8.50795206 C13,11.2533934 15.8192656,12.6412404 15.8192656,12.6412404 C16.8995921,13.391019 17.7753697,12.9258617 17.7753697,11.6159552 L17.7753697,5.39994895 C17.7753697,4.08392094 16.8771592,3.5920349 15.8192656,4.37466376 C15.8192656,4.37466376 13,5.76251076 13,8.50795206 Z" id="Path-16"></path>
|
<path d="M13,8.50795206 C13,11.2533934 15.8192656,12.6412404 15.8192656,12.6412404 C16.8995921,13.391019 17.7753697,12.9258617 17.7753697,11.6159552 L17.7753697,5.39994895 C17.7753697,4.08392094 16.8771592,3.5920349 15.8192656,4.37466376 C15.8192656,4.37466376 13,5.76251076 13,8.50795206 Z" id="Path-16"></path>
|
||||||
</g>
|
</g>
|
||||||
|
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
@ -44,6 +44,8 @@ var VectorConferenceHandler = require('../VectorConferenceHandler');
|
||||||
var UpdateChecker = require("./updater");
|
var UpdateChecker = require("./updater");
|
||||||
var q = require('q');
|
var q = require('q');
|
||||||
var request = require('browser-request');
|
var request = require('browser-request');
|
||||||
|
|
||||||
|
import UAParser from 'ua-parser-js';
|
||||||
import url from 'url';
|
import url from 'url';
|
||||||
|
|
||||||
import {parseQs, parseQsFromFragment} from './url_utils';
|
import {parseQs, parseQsFromFragment} from './url_utils';
|
||||||
|
@ -134,6 +136,19 @@ var makeRegistrationUrl = function() {
|
||||||
'#/register';
|
'#/register';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function getDefaultDeviceDisplayName() {
|
||||||
|
// strip query-string and fragment from uri
|
||||||
|
let u = url.parse(window.location.href);
|
||||||
|
u.search = "";
|
||||||
|
u.hash = "";
|
||||||
|
let app_name = u.format();
|
||||||
|
|
||||||
|
let ua = new UAParser();
|
||||||
|
return app_name + " via " + ua.getBrowser().name +
|
||||||
|
" on " + ua.getOS().name;
|
||||||
|
}
|
||||||
|
|
||||||
window.addEventListener('hashchange', onHashChange);
|
window.addEventListener('hashchange', onHashChange);
|
||||||
window.onload = function() {
|
window.onload = function() {
|
||||||
console.log("window.onload");
|
console.log("window.onload");
|
||||||
|
@ -238,6 +253,7 @@ async function loadApp() {
|
||||||
startingFragmentQueryParams={fragparts.params}
|
startingFragmentQueryParams={fragparts.params}
|
||||||
enableGuest={true}
|
enableGuest={true}
|
||||||
onLoadCompleted={onLoadCompleted}
|
onLoadCompleted={onLoadCompleted}
|
||||||
|
defaultDeviceDisplayName={getDefaultDeviceDisplayName()}
|
||||||
/>,
|
/>,
|
||||||
document.getElementById('matrixchat')
|
document.getElementById('matrixchat')
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in New Issue