Compare commits
162 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c2038a5ccc | ||
|
|
cb628d0799 | ||
|
|
7c4f67b1a1 | ||
|
|
a82f9d5266 | ||
|
|
b6493a2f82 | ||
|
|
74c81d6921 | ||
|
|
02eb8a284c | ||
|
|
bf2d792d94 | ||
|
|
10294ab240 | ||
|
|
88ff92a658 | ||
|
|
8d9987a6b5 | ||
|
|
6ba471421f | ||
|
|
5310b4c14b | ||
|
|
69567f9806 | ||
|
|
0007e669fb | ||
|
|
7247e97ff0 | ||
|
|
844dbcf740 | ||
|
|
10671aa06e | ||
|
|
373f850002 | ||
|
|
ac34ca11df | ||
|
|
710e295b44 | ||
|
|
c3b05cb34e | ||
|
|
b5c27ca074 | ||
|
|
704a599811 | ||
|
|
1dfaf70562 | ||
|
|
dc92b126c7 | ||
|
|
c6f70cb72c | ||
|
|
f701e2601a | ||
|
|
8cb8890ab3 | ||
|
|
a7a5679bfa | ||
|
|
03587abff1 | ||
|
|
496a5baffd | ||
|
|
8996b6b429 | ||
|
|
d483fb0605 | ||
|
|
c2ec5f39ab | ||
|
|
58f927538f | ||
|
|
d9434c7af5 | ||
|
|
6f54ff9e7f | ||
|
|
9eaba3d3f5 | ||
|
|
4805858ecb | ||
|
|
092ae7ef2f | ||
|
|
bbb128b672 | ||
|
|
15b8d410c0 | ||
|
|
8298e73205 | ||
|
|
819e6d9219 | ||
|
|
d2c87a0331 | ||
|
|
286c5e8895 | ||
|
|
7df77d7e5d | ||
|
|
6804a00af0 | ||
|
|
81c75eb14b | ||
|
|
e604dfe9e8 | ||
|
|
135a5d38ff | ||
|
|
07ed2e8d0a | ||
|
|
2a594414e7 | ||
|
|
d3496c0cb9 | ||
|
|
c15151a0af | ||
|
|
6d1640194e | ||
|
|
06740e5480 | ||
|
|
c338e491fe | ||
|
|
a570ee53a8 | ||
|
|
417a31f1fe | ||
|
|
a4a6f070e4 | ||
|
|
d287abcd68 | ||
|
|
79fd38a899 | ||
|
|
0aa0773ef7 | ||
|
|
154e8bdb50 | ||
|
|
8f37c22917 | ||
|
|
0aeef3187a | ||
|
|
8903eebe17 | ||
|
|
cc4d0af713 | ||
|
|
4a217d9e9f | ||
|
|
122caf7a95 | ||
|
|
a1e5c72eb9 | ||
|
|
7dd163ac85 | ||
|
|
01432d3848 | ||
|
|
d3cae13552 | ||
|
|
061838bdab | ||
|
|
24846a1d64 | ||
|
|
0b31d32793 | ||
|
|
71403980cc | ||
|
|
f8ab754af4 | ||
|
|
fd3ed9e119 | ||
|
|
b53c86c5f4 | ||
|
|
cbe6d31ee3 | ||
|
|
5810221181 | ||
|
|
e9f4594eb9 | ||
|
|
2f991d190f | ||
|
|
ae90b9877a | ||
|
|
786c2a1fd7 | ||
|
|
eef4f7c4cf | ||
|
|
36cc5de0e7 | ||
|
|
854798f470 | ||
|
|
ca305399c3 | ||
|
|
00a8d44ce1 | ||
|
|
79c7f331c9 | ||
|
|
409c48efcb | ||
|
|
29f3ff155a | ||
|
|
6c1deb41be | ||
|
|
4574415e97 | ||
|
|
f05646c5a1 | ||
|
|
a6f8f707f3 | ||
|
|
e19dbe4f3b | ||
|
|
d393cd67f7 | ||
|
|
c80f5ddcd1 | ||
|
|
a02009d31f | ||
|
|
a4ed1afeb5 | ||
|
|
1fea7c022e | ||
|
|
e7f5aee9fb | ||
|
|
d3805f7545 | ||
|
|
70891f41a5 | ||
|
|
cebba5bfa3 | ||
|
|
0f5c62d3cc | ||
|
|
f9fa338960 | ||
|
|
ad7ac26ff3 | ||
|
|
10efaaa078 | ||
|
|
bb353b940e | ||
|
|
9732d10f24 | ||
|
|
9b80aa76ce | ||
|
|
bc935012da | ||
|
|
e4025f1aff | ||
|
|
e2b55315a6 | ||
|
|
1f8b0f2135 | ||
|
|
a9a45dc32b | ||
|
|
f7138c0516 | ||
|
|
d080a204a3 | ||
|
|
fd31d58128 | ||
|
|
b7622d8551 | ||
|
|
c470e2dcfb | ||
|
|
fe11ae73db | ||
|
|
70fe4f67ee | ||
|
|
6abd1de8b8 | ||
|
|
16b150039a | ||
|
|
ca1dec8e13 | ||
|
|
f81d3bc903 | ||
|
|
88132067ad | ||
|
|
deaeb1a715 | ||
|
|
c1dfbd6993 | ||
|
|
2854c0969b | ||
|
|
1de5e61888 | ||
|
|
47493fa7d9 | ||
|
|
ecfafc613f | ||
|
|
2a80d33a89 | ||
|
|
2202ff1ccd | ||
|
|
a138a9c6ec | ||
|
|
3d8d66547f | ||
|
|
17e84bf815 | ||
|
|
2784d1b31c | ||
|
|
8e9d7d97f6 | ||
|
|
f483fd3916 | ||
|
|
4e65b5f73b | ||
|
|
47ade14e07 | ||
|
|
060a7807f0 | ||
|
|
52954982a3 | ||
|
|
dec60a9c85 | ||
|
|
39b5e4b1e3 | ||
|
|
e277d02f83 | ||
|
|
c5ee92f4c3 | ||
|
|
30f0a7932b | ||
|
|
1f34d2d644 | ||
|
|
c511902356 | ||
|
|
5b32ecb719 | ||
|
|
58de839621 |
25
.travis.yml
25
.travis.yml
@@ -11,25 +11,18 @@ sudo: required
|
||||
language: node_js
|
||||
node_js:
|
||||
# make sure we work with a range of node versions.
|
||||
# As of the time of writing:
|
||||
# - 4.x is still in LTS (until April 2018), but some of our deps (notably
|
||||
# extract-zip) don't work with it
|
||||
# - 5.x has been EOLed for nearly a year.
|
||||
# - 6.x is the active 'LTS' version
|
||||
# - 7.x is no longer supported
|
||||
# - 8.x is the current 'current' version (until October 2017)
|
||||
#
|
||||
# see: https://github.com/nodejs/LTS/
|
||||
#
|
||||
# anything before 6.3 ships with npm 3.9 or earlier, which had problems
|
||||
# with symlinks in node_modules (see
|
||||
# https://github.com/npm/npm/releases/tag/v3.10.0 'FIXES AND REFACTORING').
|
||||
- 6.3
|
||||
- 6
|
||||
- 7
|
||||
# Current status of node versions: https://github.com/nodejs/LTS/
|
||||
# We don't work with node 6 because it doesn't support package-lock
|
||||
# files which we need to avoid the broken version of base-x
|
||||
- 8
|
||||
- 10
|
||||
addons:
|
||||
chrome: stable
|
||||
install:
|
||||
# clone the deps with depth 1: we know we will only ever need that one
|
||||
# commit.
|
||||
- scripts/fetch-develop.deps.sh --depth 1 && npm install
|
||||
- npm install && scripts/fetch-develop.deps.sh --depth 1
|
||||
script:
|
||||
- npm run test
|
||||
- npm run lint
|
||||
|
||||
103
CHANGELOG.md
103
CHANGELOG.md
@@ -1,3 +1,100 @@
|
||||
Changes in [0.17.8](https://github.com/vector-im/riot-web/releases/tag/v0.17.8) (2018-12-10)
|
||||
============================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.8-rc.1...v0.17.8)
|
||||
|
||||
* No changes since rc.1
|
||||
|
||||
Changes in [0.17.8-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.17.8-rc.1) (2018-12-06)
|
||||
======================================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.7...v0.17.8-rc.1)
|
||||
|
||||
* Update from Weblate.
|
||||
[\#7784](https://github.com/vector-im/riot-web/pull/7784)
|
||||
* Add a function to send a rageshake from the console
|
||||
[\#7755](https://github.com/vector-im/riot-web/pull/7755)
|
||||
* Re-apply "Run lint on travis builds and use modern node versions"
|
||||
[\#7738](https://github.com/vector-im/riot-web/pull/7738)
|
||||
* Revert "Run lint on travis builds and use modern node versions"
|
||||
[\#7737](https://github.com/vector-im/riot-web/pull/7737)
|
||||
* Run lint on travis builds and use modern node versions
|
||||
[\#7490](https://github.com/vector-im/riot-web/pull/7490)
|
||||
* Fix missing js-sdk logging
|
||||
[\#7736](https://github.com/vector-im/riot-web/pull/7736)
|
||||
* Add $accent-color-50pct as a CSS variable to the Status theme
|
||||
[\#7710](https://github.com/vector-im/riot-web/pull/7710)
|
||||
|
||||
Changes in [0.17.7](https://github.com/vector-im/riot-web/releases/tag/v0.17.7) (2018-11-22)
|
||||
============================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.6...v0.17.7)
|
||||
|
||||
* Warning when crypto DB is too new to use.
|
||||
* Fix missing entries from js-sdk in rageshake logs
|
||||
|
||||
Changes in [0.17.6](https://github.com/vector-im/riot-web/releases/tag/v0.17.6) (2018-11-19)
|
||||
============================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.6-rc.2...v0.17.6)
|
||||
|
||||
* No changes since rc.2
|
||||
|
||||
Changes in [0.17.6-rc.2](https://github.com/vector-im/riot-web/releases/tag/v0.17.6-rc.2) (2018-11-15)
|
||||
======================================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.6-rc.1...v0.17.6-rc.2)
|
||||
|
||||
* Update to js-sdk 0.14 and react-sdk rc.2. rc.1 was broken as it was built against
|
||||
js-sdk 0.13 which does not use the new Olm 3.0 API.
|
||||
|
||||
Changes in [0.17.6-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.17.6-rc.1) (2018-11-15)
|
||||
======================================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.5...v0.17.6-rc.1)
|
||||
|
||||
* Update from Weblate.
|
||||
[\#7708](https://github.com/vector-im/riot-web/pull/7708)
|
||||
* Add Japanese (#7599)
|
||||
[\#7673](https://github.com/vector-im/riot-web/pull/7673)
|
||||
* Allow Webpack dev server to listen to all interfaces
|
||||
[\#7674](https://github.com/vector-im/riot-web/pull/7674)
|
||||
* Remove the request-only stuff we don't need anymore
|
||||
[\#7637](https://github.com/vector-im/riot-web/pull/7637)
|
||||
* Correct the author of the electron app
|
||||
[\#7615](https://github.com/vector-im/riot-web/pull/7615)
|
||||
* Mock fs, tls, and net to support request in the browser
|
||||
[\#7552](https://github.com/vector-im/riot-web/pull/7552)
|
||||
* Update chokidar to transitively get newer fsevents
|
||||
[\#7598](https://github.com/vector-im/riot-web/pull/7598)
|
||||
* Support WebAssembly version of Olm
|
||||
[\#7385](https://github.com/vector-im/riot-web/pull/7385)
|
||||
|
||||
Changes in [0.17.5](https://github.com/vector-im/riot-web/releases/tag/v0.17.5) (2018-11-13)
|
||||
============================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.4...v0.17.5)
|
||||
|
||||
* Include change that was supposed to be included in orevious version
|
||||
|
||||
Changes in [0.17.4](https://github.com/vector-im/riot-web/releases/tag/v0.17.4) (2018-11-13)
|
||||
============================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.3...v0.17.4)
|
||||
|
||||
* Add banner with login/register links for users who aren't logged in
|
||||
|
||||
Changes in [0.17.3](https://github.com/vector-im/riot-web/releases/tag/v0.17.3) (2018-10-29)
|
||||
============================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.3-rc.1...v0.17.3)
|
||||
|
||||
* Fix for autocompleting text emoji from react-sdk v0.14.2
|
||||
|
||||
Changes in [0.17.3-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.17.3-rc.1) (2018-10-24)
|
||||
======================================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.2...v0.17.3-rc.1)
|
||||
|
||||
* Update from Weblate.
|
||||
[\#7549](https://github.com/vector-im/riot-web/pull/7549)
|
||||
* Don't set tags on notifications
|
||||
[\#7518](https://github.com/vector-im/riot-web/pull/7518)
|
||||
* Update to latest electron builder
|
||||
[\#7498](https://github.com/vector-im/riot-web/pull/7498)
|
||||
* Fix Tinter.setTheme to not fire using Firefox
|
||||
[\#6831](https://github.com/vector-im/riot-web/pull/6831)
|
||||
|
||||
Changes in [0.17.2](https://github.com/vector-im/riot-web/releases/tag/v0.17.2) (2018-10-19)
|
||||
============================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.1...v0.17.2)
|
||||
@@ -59,6 +156,12 @@ Changes in [0.17.0-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.1
|
||||
* Webpack4
|
||||
[\#7387](https://github.com/vector-im/riot-web/pull/7387)
|
||||
|
||||
Changes in [0.16.6](https://github.com/vector-im/riot-web/releases/tag/v0.16.6) (2018-10-08)
|
||||
============================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.5...v0.16.6)
|
||||
|
||||
* Update to matrix-react-sdk v0.13.6
|
||||
|
||||
Changes in [0.16.5](https://github.com/vector-im/riot-web/releases/tag/v0.16.5) (2018-10-01)
|
||||
============================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.5-rc.1...v0.16.5)
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
"name": "riot-web",
|
||||
"productName": "Riot",
|
||||
"main": "src/electron-main.js",
|
||||
"version": "0.17.2",
|
||||
"version": "0.17.8",
|
||||
"description": "A feature-rich client for Matrix.org",
|
||||
"author": "Vector Creations Ltd.",
|
||||
"author": "New Vector Ltd.",
|
||||
"dependencies": {
|
||||
"auto-launch": "^5.0.1",
|
||||
"electron-window-state": "^4.1.0",
|
||||
|
||||
9645
package-lock.json
generated
9645
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
36
package.json
36
package.json
@@ -2,7 +2,7 @@
|
||||
"name": "riot-web",
|
||||
"productName": "Riot",
|
||||
"main": "electron_app/src/electron-main.js",
|
||||
"version": "0.17.2",
|
||||
"version": "0.17.8",
|
||||
"description": "A feature-rich client for Matrix.org",
|
||||
"author": "New Vector Ltd.",
|
||||
"repository": {
|
||||
@@ -44,7 +44,7 @@
|
||||
"install:electron": "install-app-deps",
|
||||
"electron": "npm run install:electron && electron .",
|
||||
"start:res": "node scripts/copy-res.js -w",
|
||||
"start:js": "webpack-dev-server --output-filename=bundles/_dev_/[name].js --output-chunk-filename=bundles/_dev_/[name].js -w --progress --mode development",
|
||||
"start:js": "webpack-dev-server --host=0.0.0.0 --output-filename=bundles/_dev_/[name].js --output-chunk-filename=bundles/_dev_/[name].js -w --progress --mode development",
|
||||
"start:js:prod": "cross-env NODE_ENV=production webpack-dev-server -w --progress",
|
||||
"start:js-sdk": "node scripts/npm-sub.js matrix-js-sdk run start:watch",
|
||||
"start:js-sdk:prod": "cross-env NODE_ENV=production node scripts/npm-sub.js matrix-js-sdk run start:watch",
|
||||
@@ -69,22 +69,22 @@
|
||||
"favico.js": "^0.3.10",
|
||||
"gemini-scrollbar": "github:matrix-org/gemini-scrollbar#b302279",
|
||||
"gfm.css": "^1.1.2",
|
||||
"highlight.js": "^9.0.0",
|
||||
"matrix-js-sdk": "0.12.0",
|
||||
"matrix-react-sdk": "0.14.1",
|
||||
"highlight.js": "^9.13.1",
|
||||
"matrix-js-sdk": "0.14.2",
|
||||
"matrix-react-sdk": "0.14.7",
|
||||
"modernizr": "^3.6.0",
|
||||
"prop-types": "^15.6.2",
|
||||
"react": "^15.6.0",
|
||||
"react-dom": "^15.6.0",
|
||||
"sanitize-html": "^1.18.4",
|
||||
"ua-parser-js": "^0.7.18",
|
||||
"sanitize-html": "^1.19.1",
|
||||
"ua-parser-js": "^0.7.19",
|
||||
"url": "^0.11.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"autoprefixer": "^6.6.0",
|
||||
"babel-cli": "^6.26.0",
|
||||
"babel-core": "^6.26.3",
|
||||
"babel-eslint": "^6.1.2",
|
||||
"babel-eslint": "^8.1.1",
|
||||
"babel-loader": "^7.1.5",
|
||||
"babel-plugin-add-module-exports": "^0.2.1",
|
||||
"babel-plugin-transform-async-to-bluebird": "^1.1.1",
|
||||
@@ -96,15 +96,15 @@
|
||||
"babel-preset-es2017": "^6.24.1",
|
||||
"babel-preset-react": "^6.24.1",
|
||||
"babel-preset-stage-2": "^6.24.1",
|
||||
"chokidar": "^1.6.1",
|
||||
"chokidar": "^2.0.4",
|
||||
"concurrently": "^4.0.1",
|
||||
"cpx": "^1.3.2",
|
||||
"cross-env": "^4.0.0",
|
||||
"electron-builder": "^20.28.4",
|
||||
"electron-builder": "^20.29.0",
|
||||
"electron-builder-squirrel-windows": "^11.6.1",
|
||||
"electron-devtools-installer": "^2.2.4",
|
||||
"emojione": "^2.2.7",
|
||||
"eslint": "^5.6.0",
|
||||
"eslint": "^5.8.0",
|
||||
"eslint-config-google": "^0.7.1",
|
||||
"eslint-plugin-babel": "^4.1.2",
|
||||
"eslint-plugin-flowtype": "^2.50.3",
|
||||
@@ -113,7 +113,7 @@
|
||||
"fs-extra": "^0.30.0",
|
||||
"html-webpack-plugin": "^3.2.0",
|
||||
"json-loader": "^0.5.3",
|
||||
"karma": "^3.0.0",
|
||||
"karma": "^3.1.1",
|
||||
"karma-chrome-launcher": "^0.2.3",
|
||||
"karma-cli": "^1.0.1",
|
||||
"karma-junit-reporter": "^2.0.0",
|
||||
@@ -123,7 +123,7 @@
|
||||
"karma-spec-reporter": "0.0.31",
|
||||
"karma-summary-reporter": "^1.5.1",
|
||||
"karma-webpack": "4.0.0-beta.0",
|
||||
"matrix-mock-request": "^1.2.0",
|
||||
"matrix-mock-request": "^1.2.2",
|
||||
"matrix-react-test-utils": "^0.2.0",
|
||||
"minimist": "^1.2.0",
|
||||
"mkdirp": "^0.5.1",
|
||||
@@ -141,16 +141,16 @@
|
||||
"react-addons-test-utils": "^15.6.0",
|
||||
"rimraf": "^2.4.3",
|
||||
"source-map-loader": "^0.2.4",
|
||||
"webpack": "^4.20.2",
|
||||
"webpack-cli": "^3.1.1",
|
||||
"webpack-dev-server": "^3.1.9"
|
||||
"webpack": "^4.23.1",
|
||||
"webpack-cli": "^3.1.2",
|
||||
"webpack-dev-server": "^3.1.10"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"olm": "https://matrix.org/packages/npm/olm/olm-2.2.1.tgz"
|
||||
"olm": "https://matrix.org/packages/npm/olm/olm-3.0.0.tgz"
|
||||
},
|
||||
"build": {
|
||||
"appId": "im.riot.app",
|
||||
"electronVersion": "3.0.3",
|
||||
"electronVersion": "3.0.10",
|
||||
"files": [
|
||||
"node_modules/**",
|
||||
"src/**",
|
||||
|
||||
@@ -68,6 +68,7 @@ $focus-bg-color: #dddddd;
|
||||
// button UI (white-on-green in light skin)
|
||||
$accent-fg-color: #ffffff;
|
||||
$accent-color: #6CC1F6;
|
||||
$accent-color-50pct: #6CC1F67F;
|
||||
$accent-hover-color: #84cfff;
|
||||
|
||||
$selection-fg-color: $primary-bg-color;
|
||||
|
||||
@@ -25,6 +25,7 @@ const INCLUDE_LANGS = [
|
||||
{'value': 'gl', 'label': 'Galego'},
|
||||
{'value': 'hu', 'label': 'Magyar'},
|
||||
{'value': 'it', 'label': 'Italiano'},
|
||||
{'value': 'ja', 'label': '日本語'},
|
||||
{'value': 'ko', 'label': '한국어'},
|
||||
{'value': 'lv', 'label': 'Latviešu'},
|
||||
{'value': 'nb_NO', 'label': 'Norwegian Bokmål'},
|
||||
@@ -57,6 +58,11 @@ const COPY_LIST = [
|
||||
["res/themes/**", "webapp/themes"],
|
||||
["node_modules/emojione/assets/svg/*", "webapp/emojione/svg/"],
|
||||
["node_modules/emojione/assets/png/*", "webapp/emojione/png/"],
|
||||
// XXX: This is tied quite heavily to the matching olm.js so it really should be
|
||||
// in the bundle dir with the js to avoid caching issues giving us wasm that
|
||||
// doesn't match our js, but I cannot find any way to get webpack to do this.
|
||||
["node_modules/olm/olm.wasm", "webapp", { directwatch: 1 }],
|
||||
["node_modules/olm/olm_legacy.js", "webapp", { directwatch: 1 }],
|
||||
["./config.json", "webapp", { directwatch: 1 }],
|
||||
];
|
||||
|
||||
|
||||
@@ -4,21 +4,23 @@ set -e
|
||||
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
|
||||
nvm use 6
|
||||
nvm use 10
|
||||
|
||||
set -x
|
||||
|
||||
# check out corresponding branches of dependencies.
|
||||
#
|
||||
# clone the deps with depth 1: we know we will only ever need that one
|
||||
# commit.
|
||||
`dirname $0`/fetch-develop.deps.sh --depth 1
|
||||
|
||||
npm install
|
||||
|
||||
# apparently npm 3.10.3 on node 6.4.0 doesn't upgrade #develop target with npm install unless explicitly asked.
|
||||
npm install olm
|
||||
|
||||
# check out corresponding branches of dependencies.
|
||||
#
|
||||
# clone the deps with depth 1: we know we will only ever need that one
|
||||
# commit.
|
||||
# We need to do this after npm install otherwise modern node versions
|
||||
# just reset it back.
|
||||
`dirname $0`/fetch-develop.deps.sh --depth 1
|
||||
|
||||
# install olm. A naive 'npm i ./olm/olm-*.tgz' fails because it uses the url
|
||||
# from our package.json (or even matrix-js-sdk's) in preference.
|
||||
#
|
||||
|
||||
@@ -17,7 +17,6 @@ limitations under the License.
|
||||
|
||||
'use strict';
|
||||
|
||||
import React from 'react';
|
||||
import HomePage from 'matrix-react-sdk/lib/components/structures/HomePage';
|
||||
import sanitizeHtml from 'sanitize-html';
|
||||
import { _t } from 'matrix-react-sdk/lib/languageHandler';
|
||||
|
||||
@@ -15,8 +15,8 @@ See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
var React = require("react");
|
||||
var sanitizeHtml = require("sanitize-html");
|
||||
const React = require("react");
|
||||
const sanitizeHtml = require("sanitize-html");
|
||||
import { _t } from 'matrix-react-sdk/lib/languageHandler';
|
||||
|
||||
module.exports = React.createClass({
|
||||
@@ -47,5 +47,5 @@ module.exports = React.createClass({
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
@@ -16,7 +16,7 @@ limitations under the License.
|
||||
|
||||
'use strict';
|
||||
|
||||
var React = require('react');
|
||||
const React = require('react');
|
||||
import { _t } from 'matrix-react-sdk/lib/languageHandler';
|
||||
import SettingsStore from 'matrix-react-sdk/lib/settings/SettingsStore';
|
||||
|
||||
@@ -29,8 +29,8 @@ module.exports = React.createClass({
|
||||
render: function() {
|
||||
// FIXME: replace this with a proper Status skin
|
||||
// ...except then we wouldn't be able to switch to the Status theme at runtime.
|
||||
if (SettingsStore.getValue("theme") === 'status') return <div/>;
|
||||
|
||||
if (SettingsStore.getValue("theme") === 'status') return <div />;
|
||||
|
||||
return (
|
||||
<div className="mx_Login_links">
|
||||
<a href="https://medium.com/@RiotChat">blog</a> ·
|
||||
@@ -39,5 +39,5 @@ module.exports = React.createClass({
|
||||
<a href="https://matrix.org">{ _t('powered by Matrix') }</a>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
@@ -35,9 +35,9 @@ module.exports = React.createClass({
|
||||
return (
|
||||
<div className="mx_Login_header">
|
||||
<div className="mx_Login_logo">
|
||||
<img src={this.props.icon || DEFAULT_LOGO_URI} alt="Riot"/>
|
||||
<img src={this.props.icon || DEFAULT_LOGO_URI} alt="Riot" />
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
@@ -34,5 +34,6 @@
|
||||
"Dev chat for the Dendrite dev team": "Babilado por la programista skipo de Dendrite",
|
||||
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Multaj ĉambroj jam ekzistas en Matrix; kaj sendependaj, kaj ligitaj kun jamaj retoj (Slock, IRC, Gitter, ktp.). Rigardu la ĉambrujon!",
|
||||
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s per %(browserName)s je %(osName)s",
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Vi povas uzi proprajn servilajn elektojn por saluti aliajn servilojn de Matrix, per specifo de alia hejmservila URL.<br/>Tio permesas al vi uzi klienton Riot kun jama konto de Matrix en alia hejmservilo.<br/><br/>Vi ankaŭ povas agordi propran identigan servilon, sed vi ne povos inviti uzantojn per retpoŝtadreso, aŭ esti invitata per retpoŝtadreso mem."
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Vi povas uzi proprajn servilajn elektojn por saluti aliajn servilojn de Matrix, per specifo de alia hejmservila URL.<br/>Tio permesas al vi uzi klienton Riot kun jama konto de Matrix en alia hejmservilo.<br/><br/>Vi ankaŭ povas agordi propran identigan servilon, sed vi ne povos inviti uzantojn per retpoŝtadreso, aŭ esti invitata per retpoŝtadreso mem.",
|
||||
"Co-ordination for Riot translators": "Kunordigo por tradukantoj de Riot"
|
||||
}
|
||||
|
||||
@@ -1 +1,39 @@
|
||||
{}
|
||||
{
|
||||
"Riot is not supported on mobile web. Install the app?": "रायट फ़ोन पर समर्थन नहीं हैं। एप्लिकेशन इनस्टॉल करना चाहेंगे ?",
|
||||
"Riot Desktop on %(platformName)s": "%(platformName)s पर रायट डेस्कटॉप",
|
||||
"Unknown device": "अज्ञात यन्त्र",
|
||||
"%(appName)s via %(browserName)s on %(osName)s": "%(osName)s पर %(browserName)s के माध्यम से %(appName)s",
|
||||
"You need to be using HTTPS to place a screen-sharing call.": "स्क्रीन साझा की कॉल करने के लिए आपको HTTPS का उपयोग करने की आवश्यकता है।",
|
||||
"Custom Server Options": "कस्टम सर्वर विकल्प",
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "आप एक अलग होम सर्वर यूआरएल निर्दिष्ट करके अन्य मैट्रिक्स सर्वरों में साइन इन करने के लिए कस्टम सर्वर विकल्प का उपयोग कर सकते हैं। <br/> यह आपको एक अलग होम सर्वर पर मौजूदा मैट्रिक्स खाते के साथ रायट का उपयोग करने की अनुमति देता है। <br/> <br/> आप अपना आइडेंटिटी सर्वर भी सेट कर सकते हैं लेकिन आप ईमेल पते से उपयोगकर्ताओं को आमंत्रित नहीं कर पाएंगे, या ईमेल पते से स्वयं आमंत्रित नहीं हों सकेंगे।",
|
||||
"Dismiss": "खारिज",
|
||||
"powered by Matrix": "मैट्रिक्स द्वारा संचालित",
|
||||
"Welcome to Riot.im": "Riot.im में आपका स्वागत है",
|
||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "[मैट्रिक्स] द्वारा संचालित विकेंद्रीकृत, एन्क्रिप्टेड चैट और सहयोगिता",
|
||||
"Search the room directory": "रूम डायरेक्टरी को खोजें",
|
||||
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "मौजूदा नेटवर्क से जुड़े मैट्रिक्स में बहुत से कमरे पहले से मौजूद हैं (स्लैक, आईआरसी, गिटर इत्यादि) या स्वतंत्र। डायरेक्टरी देखें!",
|
||||
"Chat with Riot Bot": "रायट बॉट के साथ चैट करें",
|
||||
"Get started with some tips from Riot Bot!": "रायट बॉट से कुछ सुझावों के साथ शुरू करें!",
|
||||
"General discussion about Matrix and Riot": "मैट्रिक्स और रायट के बारे में सामान्य चर्चा",
|
||||
"Discussion of all things Matrix!": "मैट्रिक्स की सभी चीजों की चर्चा!",
|
||||
"Riot/Web & Desktop chat": "रायट/वेब और डेस्कटॉप चैट",
|
||||
"Riot/iOS & matrix-ios-sdk chat": "रायट / iOS और matrix-ios-sdk चैट",
|
||||
"Riot/Android & matrix-android-sdk chat": "रायट / एंड्रॉइड और matrix-android-sdk चैट",
|
||||
"Matrix technical discussions": "मैट्रिक्स तकनीकी चर्चाएं",
|
||||
"Running Matrix services": "मैट्रिक्स सेवाएं चलाना",
|
||||
"Community-run support for Synapse": "सामुदायिक चालित Synapse के लिए समर्थन",
|
||||
"Admin support for Dendrite": "डेंडर्राइट के लिए व्यवस्थापक समर्थन",
|
||||
"Announcements about Synapse releases": "Synapse रिलीज के बारे में घोषणाएं",
|
||||
"Support for those using and running matrix-appservice-irc": "Matrix-appservice-irc का उपयोग और चलाने वाले लोगों के लिए समर्थन",
|
||||
"Building services on Matrix": "मैट्रिक्स पर सेवाएं बनाना",
|
||||
"Support for those using the Matrix spec": "मैट्रिक्स spec का उपयोग करने वालों के लिए समर्थन",
|
||||
"Design and implementation of E2E in Matrix": "मैट्रिक्स में E2E के डिजाइन और कार्यान्वयन",
|
||||
"Implementing VR services with Matrix": "मैट्रिक्स के साथ VR सेवाओं को लागू करना",
|
||||
"Implementing VoIP services with Matrix": "मैट्रिक्स के साथ वीओआईपी सेवाओं को लागू करना",
|
||||
"Discussion of the Identity Service API": "आइडेंटिटी सर्विस API की चर्चा",
|
||||
"Support for those using, running and writing other bridges": "अन्य ब्रिज का उपयोग, चलाने और लिखने वालों के लिए समर्थन",
|
||||
"Contributing code to Matrix and Riot": "मैट्रिक्स और रायट में कोड योगदान करना",
|
||||
"Dev chat for the Riot/Web dev team": "रायट / वेब डेव टीम के लिए डेवलपर चैट",
|
||||
"Dev chat for the Dendrite dev team": "डेन्ड्राइट देव टीम के लिए डेवलपर चैट",
|
||||
"Co-ordination for Riot translators": "रायट अनुवादकों के लिए समन्वय"
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
"Admin support for Dendrite": "Dendriteの管理者サポート",
|
||||
"Announcements about Synapse releases": "Synapseの公開についてのお知らせ",
|
||||
"Support for those using and running matrix-appservice-irc": "matrix-appservice-ircを利用並びに運営している方へのサポート",
|
||||
"Building services on Matrix": "Matrixでのサービスの開発",
|
||||
"Building services on Matrix": "Matrix上でのサービスの開発",
|
||||
"Support for those using the Matrix spec": "Matrixスペックを利用する方へのサポート",
|
||||
"Design and implementation of E2E in Matrix": "Matrixのデザインとエンドツーエンドの実装",
|
||||
"Implementing VR services with Matrix": "MatrixでのVRサービスの実装",
|
||||
|
||||
@@ -34,6 +34,6 @@
|
||||
"Support for those using, running and writing other bridges": "Ondersteuning voor het gebruiken, draaien en ontwikkelen aan andere bruggen",
|
||||
"Dev chat for the Riot/Web dev team": "Dev-chat voor het Riot/Web ontwikkelteam",
|
||||
"Dev chat for the Dendrite dev team": "Dev-chat voor het Dendrite-ontwikkelteam",
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Je kan de custom server opties gebruiken om op andere Matrix server in te loggen door een andere Home server URL op te geven.<br/> Dit laat je toe om Riot te gebruiken met een bestaande Matrix account op een andere home server.<br/><br/>Je kan ook een custom identiteits-server opzetten maar dan kan je geen gebruikers uitnodigen via hun email adres, of zelf uitgenodigd worden via je email adres.",
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Je kan de custom serveropties gebruiken om op andere Matrix-servers in te loggen door een andere thuisserver-URL op te geven.<br/> Dit laat je toe om Riot te gebruiken met een bestaand Matrix-account op een andere thuisserver.<br/><br/>Je kan ook een aangepaste-identiteitsserver opzetten maar dan kan je geen gebruikers uitnodigen via hun e-mailadres, of zelf uitgenodigd worden via je e-mailadres.",
|
||||
"Co-ordination for Riot translators": "Coördinatie voor Riot vertalers"
|
||||
}
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
{
|
||||
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s %(browserName)s ద్వర %(osName)s కి",
|
||||
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s %(browserName)s ద్వార %(osName)s కి",
|
||||
"Custom Server Options": "మలచిన సేవిక ఎంపికలు",
|
||||
"Dismiss": "రద్దుచేసే",
|
||||
"Riot Desktop on %(platformName)s": "రియట్ రంగస్థలం లో %(platformName)s",
|
||||
"Welcome to Riot.im": "రిమోట్.ఇం కి స్వగతం",
|
||||
"Search the room directory": "గది వివరాన్ని శోధించండి",
|
||||
"Chat with Riot Bot": "రియోట్ బొట్తో మాటామంతి చేయండి"
|
||||
"Chat with Riot Bot": "రియోట్ బొట్తో మాటామంతి చేయండి",
|
||||
"Unknown device": "తెలుయని పరికరం",
|
||||
"You need to be using HTTPS to place a screen-sharing call.": "తెర ని పంచే కాల్ కి HTTPS అవసరం.",
|
||||
"Riot is not supported on mobile web. Install the app?": "మొబైల్ బ్రౌజర్ లో రియట్ పనిచేయదు. ఆప్ ఇన్స్టాల్ చేయాలా?"
|
||||
}
|
||||
|
||||
@@ -24,6 +24,8 @@ require('gfm.css/gfm.css');
|
||||
require('highlight.js/styles/github.css');
|
||||
require('draft-js/dist/Draft.css');
|
||||
|
||||
import './rageshakesetup';
|
||||
|
||||
import React from 'react';
|
||||
// add React and ReactPerf to the global namespace, to make them easier to
|
||||
// access via the console
|
||||
@@ -32,7 +34,7 @@ if (process.env.NODE_ENV !== 'production') {
|
||||
global.Perf = require('react-addons-perf');
|
||||
}
|
||||
|
||||
import RunModernizrTests from './modernizr'; // this side-effects a global
|
||||
import './modernizr';
|
||||
import ReactDOM from 'react-dom';
|
||||
import sdk from 'matrix-react-sdk';
|
||||
import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg';
|
||||
@@ -41,8 +43,6 @@ import VectorConferenceHandler from 'matrix-react-sdk/lib/VectorConferenceHandle
|
||||
import Promise from 'bluebird';
|
||||
import request from 'browser-request';
|
||||
import * as languageHandler from 'matrix-react-sdk/lib/languageHandler';
|
||||
// Also import _t directly so we can call it just `_t` as this is what gen-i18n.js expects
|
||||
import { _t } from 'matrix-react-sdk/lib/languageHandler';
|
||||
|
||||
import url from 'url';
|
||||
|
||||
@@ -50,11 +50,11 @@ import {parseQs, parseQsFromFragment} from './url_utils';
|
||||
import Platform from './platform';
|
||||
|
||||
import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg';
|
||||
import SettingsStore, {SettingLevel} from "matrix-react-sdk/lib/settings/SettingsStore";
|
||||
import SettingsStore from "matrix-react-sdk/lib/settings/SettingsStore";
|
||||
import Tinter from 'matrix-react-sdk/lib/Tinter';
|
||||
import SdkConfig from "matrix-react-sdk/lib/SdkConfig";
|
||||
|
||||
import rageshake from "matrix-react-sdk/lib/rageshake/rageshake";
|
||||
import Olm from 'olm';
|
||||
|
||||
import CallHandler from 'matrix-react-sdk/lib/CallHandler';
|
||||
|
||||
@@ -66,33 +66,17 @@ let lastLocationHashSet = null;
|
||||
// and need to migrate, but they spam the console with warnings.
|
||||
Promise.config({warnings: false});
|
||||
|
||||
function initRageshake() {
|
||||
rageshake.init().then(() => {
|
||||
console.log("Initialised rageshake: See https://bugs.chromium.org/p/chromium/issues/detail?id=583193 to fix line numbers on Chrome.");
|
||||
|
||||
window.addEventListener('beforeunload', (e) => {
|
||||
console.log('riot-web closing');
|
||||
// try to flush the logs to indexeddb
|
||||
rageshake.flush();
|
||||
});
|
||||
|
||||
rageshake.cleanup();
|
||||
}, (err) => {
|
||||
console.error("Failed to initialise rageshake: " + err);
|
||||
});
|
||||
}
|
||||
|
||||
function checkBrowserFeatures(featureList) {
|
||||
if (!window.Modernizr) {
|
||||
console.error("Cannot check features - Modernizr global is missing.");
|
||||
return false;
|
||||
}
|
||||
var featureComplete = true;
|
||||
for (var i = 0; i < featureList.length; i++) {
|
||||
let featureComplete = true;
|
||||
for (let i = 0; i < featureList.length; i++) {
|
||||
if (window.Modernizr[featureList[i]] === undefined) {
|
||||
console.error(
|
||||
"Looked for feature '%s' but Modernizr has no results for this. " +
|
||||
"Has it been configured correctly?", featureList[i]
|
||||
"Has it been configured correctly?", featureList[i],
|
||||
);
|
||||
return false;
|
||||
}
|
||||
@@ -113,7 +97,7 @@ function getScreenFromLocation(location) {
|
||||
return {
|
||||
screen: fragparts.location.substring(1),
|
||||
params: fragparts.params,
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// Here, we do some crude URL analysis to allow
|
||||
@@ -138,10 +122,10 @@ function onHashChange(ev) {
|
||||
// so a web page can update the URL bar appropriately.
|
||||
function onNewScreen(screen) {
|
||||
console.log("newscreen "+screen);
|
||||
var hash = '#/' + screen;
|
||||
const hash = '#/' + screen;
|
||||
lastLocationHashSet = hash;
|
||||
window.location.hash = hash;
|
||||
};
|
||||
}
|
||||
|
||||
// We use this to work out what URL the SDK should
|
||||
// pass through when registering to allow the user to
|
||||
@@ -178,7 +162,7 @@ function makeRegistrationUrl(params) {
|
||||
return url;
|
||||
}
|
||||
|
||||
function getConfig(configJsonFilename) {
|
||||
export function getConfig(configJsonFilename) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
request(
|
||||
{ method: "GET", url: configJsonFilename },
|
||||
@@ -214,21 +198,22 @@ function onTokenLoginCompleted() {
|
||||
// if we did a token login, we're now left with the token, hs and is
|
||||
// url as query params in the url; a little nasty but let's redirect to
|
||||
// clear them.
|
||||
var parsedUrl = url.parse(window.location.href);
|
||||
const parsedUrl = url.parse(window.location.href);
|
||||
parsedUrl.search = "";
|
||||
var formatted = url.format(parsedUrl);
|
||||
const formatted = url.format(parsedUrl);
|
||||
console.log("Redirecting to " + formatted + " to drop loginToken " +
|
||||
"from queryparams");
|
||||
window.location.href = formatted;
|
||||
}
|
||||
|
||||
async function loadApp() {
|
||||
initRageshake();
|
||||
MatrixClientPeg.setIndexedDbWorkerScript(window.vector_indexeddb_worker_script);
|
||||
CallHandler.setConferenceHandler(VectorConferenceHandler);
|
||||
|
||||
window.addEventListener('hashchange', onHashChange);
|
||||
|
||||
await loadOlm();
|
||||
|
||||
await loadLanguage();
|
||||
|
||||
const fragparts = parseQsFromFragment(window.location);
|
||||
@@ -269,7 +254,6 @@ async function loadApp() {
|
||||
}
|
||||
|
||||
// as quickly as we possibly can, set a default theme...
|
||||
const styleElements = Object.create(null);
|
||||
let a;
|
||||
const theme = SettingsStore.getValue("theme");
|
||||
for (let i = 0; (a = document.getElementsByTagName("link")[i]); i++) {
|
||||
@@ -289,12 +273,23 @@ async function loadApp() {
|
||||
// in case the Tinter.tint() in MatrixChat fires before the
|
||||
// CSS has actually loaded (which in practice happens)...
|
||||
|
||||
// FIXME: we should probably block loading the app or even
|
||||
// showing a spinner until the theme is loaded, to avoid
|
||||
// flashes of unstyled content.
|
||||
a.onload = () => {
|
||||
// This if fixes Tinter.setTheme to not fire on Firefox
|
||||
// in case it is the first time loading Riot.
|
||||
// `InstallTrigger` is a Object which only exists on Firefox
|
||||
// (it is used for their Plugins) and can be used as a
|
||||
// feature check.
|
||||
// Firefox loads css always before js. This is why we dont use
|
||||
// onload or it's EventListener as thoose will never trigger.
|
||||
if (typeof InstallTrigger !== 'undefined') {
|
||||
Tinter.setTheme(theme);
|
||||
};
|
||||
} else {
|
||||
// FIXME: we should probably block loading the app or even
|
||||
// showing a spinner until the theme is loaded, to avoid
|
||||
// flashes of unstyled content.
|
||||
a.onload = () => {
|
||||
Tinter.setTheme(theme);
|
||||
};
|
||||
}
|
||||
} else {
|
||||
// Firefox requires this to not be done via `setAttribute`
|
||||
// or via HTML.
|
||||
@@ -334,23 +329,59 @@ async function loadApp() {
|
||||
initialScreenAfterLogin={getScreenFromLocation(window.location)}
|
||||
defaultDeviceDisplayName={platform.getDefaultDeviceDisplayName()}
|
||||
/>,
|
||||
document.getElementById('matrixchat')
|
||||
document.getElementById('matrixchat'),
|
||||
);
|
||||
} else {
|
||||
console.error("Browser is missing required features.");
|
||||
// take to a different landing page to AWOOOOOGA at the user
|
||||
var CompatibilityPage = sdk.getComponent("structures.CompatibilityPage");
|
||||
const CompatibilityPage = sdk.getComponent("structures.CompatibilityPage");
|
||||
window.matrixChat = ReactDOM.render(
|
||||
<CompatibilityPage onAccept={function() {
|
||||
if (window.localStorage) window.localStorage.setItem('mx_accepts_unsupported_browser', true);
|
||||
console.log("User accepts the compatibility risks.");
|
||||
loadApp();
|
||||
}} />,
|
||||
document.getElementById('matrixchat')
|
||||
document.getElementById('matrixchat'),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function loadOlm() {
|
||||
/* Load Olm. We try the WebAssembly version first, and then the legacy,
|
||||
* asm.js version if that fails. For this reason we need to wait for this
|
||||
* to finish before continuing to load the rest of the app. In future
|
||||
* we could somehow pass a promise down to react-sdk and have it wait on
|
||||
* that so olm can be loading in parallel with the rest of the app.
|
||||
*
|
||||
* We also need to tell the Olm js to look for its wasm file at the same
|
||||
* level as index.html. It really should be in the same place as the js,
|
||||
* ie. in the bundle directory, to avoid caching issues, but as far as I
|
||||
* can tell this is completely impossible with webpack.
|
||||
*/
|
||||
return Olm.init({
|
||||
locateFile: () => 'olm.wasm',
|
||||
}).then(() => {
|
||||
console.log("Using WebAssembly Olm");
|
||||
}).catch((e) => {
|
||||
console.log("Failed to load Olm: trying legacy version");
|
||||
return new Promise((resolve, reject) => {
|
||||
const s = document.createElement('script');
|
||||
s.src = 'olm_legacy.js';
|
||||
s.onload = resolve;
|
||||
s.onerror = reject;
|
||||
document.body.appendChild(s);
|
||||
}).then(() => {
|
||||
// Init window.Olm, ie. the one just loaded by the script tag,
|
||||
// not 'Olm' which is still the failed wasm version.
|
||||
return window.Olm.init();
|
||||
}).then(() => {
|
||||
console.log("Using legacy Olm");
|
||||
}).catch((e) => {
|
||||
console.log("Both WebAssembly and asm.js Olm failed!", e);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
async function loadLanguage() {
|
||||
const prefLang = SettingsStore.getValue("language", null, /*excludeDefault=*/true);
|
||||
let langs = [];
|
||||
|
||||
@@ -18,4 +18,4 @@ import {IndexedDBStoreWorker} from 'matrix-js-sdk/lib/indexeddb-worker.js';
|
||||
|
||||
const remoteWorker = new IndexedDBStoreWorker(postMessage);
|
||||
|
||||
onmessage = remoteWorker.onMessage;
|
||||
export const onmessage = remoteWorker.onMessage;
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
/*
|
||||
Copyright 2016 OpenMarket Ltd
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/* a very thin shim for loading olm.js: just sets the global OLM_OPTIONS and
|
||||
* requires the actual olm.js library.
|
||||
*
|
||||
* olm.js reads global.OLM_OPTIONS and defines global.Olm. The latter is fine for us,
|
||||
* but we need to prepare the former.
|
||||
*
|
||||
* We can't use webpack's definePlugin to do this, because we tell webpack not
|
||||
* to parse olm.js. We also can't put this code in index.js, because olm and
|
||||
* index.js are loaded in parallel, and we need to make sure OLM_OPTIONS is set
|
||||
* before olm.js is loaded.
|
||||
*/
|
||||
|
||||
/* total_memory must be a power of two, and at least twice the stack.
|
||||
*
|
||||
* We don't need a lot of stack, but we do need about 128K of heap to encrypt a
|
||||
* 64K event (enough to store the ciphertext and the plaintext, bearing in mind
|
||||
* that the plaintext can only be 48K because base64). We also have about 36K
|
||||
* of statics. So let's have 256K of memory.
|
||||
*/
|
||||
global.OLM_OPTIONS = {
|
||||
TOTAL_STACK: 64*1024,
|
||||
TOTAL_MEMORY: 256*1024,
|
||||
};
|
||||
|
||||
require('olm/olm.js');
|
||||
@@ -27,7 +27,7 @@ import rageshake from 'matrix-react-sdk/lib/rageshake/rageshake';
|
||||
remote.autoUpdater.on('update-downloaded', onUpdateDownloaded);
|
||||
|
||||
// try to flush the rageshake logs to indexeddb before quit.
|
||||
ipcRenderer.on('before-quit', function () {
|
||||
ipcRenderer.on('before-quit', function() {
|
||||
console.log('riot-desktop closing');
|
||||
rageshake.flush();
|
||||
});
|
||||
|
||||
@@ -60,8 +60,8 @@ export default class VectorBasePlatform extends BasePlatform {
|
||||
// This needs to be in in a try block as it will throw
|
||||
// if there are more than 100 badge count changes in
|
||||
// its internal queue
|
||||
let bgColor = "#d00",
|
||||
notif = this.notificationCount;
|
||||
let bgColor = "#d00";
|
||||
let notif = this.notificationCount;
|
||||
|
||||
if (this.errorDidOccur) {
|
||||
notif = notif || "×";
|
||||
@@ -114,7 +114,7 @@ export default class VectorBasePlatform extends BasePlatform {
|
||||
dis.dispatch({
|
||||
action: 'check_updates',
|
||||
value: false,
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
getUpdateCheckStatusEnum() {
|
||||
|
||||
@@ -26,7 +26,7 @@ import Promise from 'bluebird';
|
||||
import url from 'url';
|
||||
import UAParser from 'ua-parser-js';
|
||||
|
||||
var POKE_RATE_MS = 10 * 60 * 1000; // 10 min
|
||||
const POKE_RATE_MS = 10 * 60 * 1000; // 10 min
|
||||
|
||||
export default class WebPlatform extends VectorBasePlatform {
|
||||
constructor() {
|
||||
|
||||
62
src/vector/rageshakesetup.js
Normal file
62
src/vector/rageshakesetup.js
Normal file
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
Copyright 2018 New Vector Ltd
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Separate file that sets up rageshake logging when imported.
|
||||
* This is necessary so that rageshake logging is set up before
|
||||
* anything else. Webpack puts all import statements at the top
|
||||
* of the file before any code, so imports will always be
|
||||
* evaluated first. Other imports can cause other code to be
|
||||
* evaluated (eg. the loglevel library in js-sdk, which if set
|
||||
* up before rageshake causes some js-sdk logging to be missing
|
||||
* from the rageshake.)
|
||||
*/
|
||||
|
||||
import rageshake from "matrix-react-sdk/lib/rageshake/rageshake";
|
||||
import SdkConfig from "matrix-react-sdk/src/SdkConfig";
|
||||
|
||||
function initRageshake() {
|
||||
rageshake.init().then(() => {
|
||||
console.log("Initialised rageshake: See https://bugs.chromium.org/p/chromium/issues/detail?id=583193 to fix line numbers on Chrome.");
|
||||
|
||||
window.addEventListener('beforeunload', (e) => {
|
||||
console.log('riot-web closing');
|
||||
// try to flush the logs to indexeddb
|
||||
rageshake.flush();
|
||||
});
|
||||
|
||||
rageshake.cleanup();
|
||||
}, (err) => {
|
||||
console.error("Failed to initialise rageshake: " + err);
|
||||
});
|
||||
}
|
||||
|
||||
initRageshake();
|
||||
|
||||
global.mxSendRageshake = function(text, withLogs) {
|
||||
if (withLogs === undefined) withLogs = true;
|
||||
require(['matrix-react-sdk/lib/rageshake/submit-rageshake'], (s) => {
|
||||
s(SdkConfig.get().bug_report_endpoint_url, {
|
||||
userText: text,
|
||||
sendLogs: withLogs,
|
||||
progressCallback: console.log.bind(console),
|
||||
}).then(() => {
|
||||
console.log("Bug report sent!");
|
||||
}, (err) => {
|
||||
console.error(err);
|
||||
});
|
||||
});
|
||||
};
|
||||
@@ -23,16 +23,16 @@ import qs from 'querystring';
|
||||
export function parseQsFromFragment(location) {
|
||||
// if we have a fragment, it will start with '#', which we need to drop.
|
||||
// (if we don't, this will return '').
|
||||
var fragment = location.hash.substring(1);
|
||||
const fragment = location.hash.substring(1);
|
||||
|
||||
// our fragment may contain a query-param-like section. we need to fish
|
||||
// this out *before* URI-decoding because the params may contain ? and &
|
||||
// characters which are only URI-encoded once.
|
||||
var hashparts = fragment.split('?');
|
||||
const hashparts = fragment.split('?');
|
||||
|
||||
var result = {
|
||||
const result = {
|
||||
location: decodeURIComponent(hashparts[0]),
|
||||
params: {}
|
||||
params: {},
|
||||
};
|
||||
|
||||
if (hashparts.length > 1) {
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
// ideally these unit tests could be run under nodejs rather than in a browser
|
||||
// via karma, but having two separate test frameworks in the same project
|
||||
// seems confusing
|
||||
var unit_tests = require.context('./unit-tests', true, /\.js$/);
|
||||
const unit_tests = require.context('./unit-tests', true, /\.js$/);
|
||||
unit_tests.keys().forEach(unit_tests);
|
||||
|
||||
var app_tests = require.context('./app-tests', true, /\.jsx?$/);
|
||||
const app_tests = require.context('./app-tests', true, /\.jsx?$/);
|
||||
app_tests.keys().forEach(app_tests);
|
||||
|
||||
@@ -21,36 +21,36 @@ import Platform from '../../src/vector/platform';
|
||||
|
||||
require('skin-sdk');
|
||||
|
||||
var jssdk = require('matrix-js-sdk');
|
||||
const jssdk = require('matrix-js-sdk');
|
||||
|
||||
var sdk = require('matrix-react-sdk');
|
||||
var peg = require('matrix-react-sdk/lib/MatrixClientPeg');
|
||||
var dis = require('matrix-react-sdk/lib/dispatcher');
|
||||
var PageTypes = require('matrix-react-sdk/lib/PageTypes');
|
||||
var MatrixChat = sdk.getComponent('structures.MatrixChat');
|
||||
var RoomDirectory = sdk.getComponent('structures.RoomDirectory');
|
||||
var RoomPreviewBar = sdk.getComponent('rooms.RoomPreviewBar');
|
||||
var RoomView = sdk.getComponent('structures.RoomView');
|
||||
const sdk = require('matrix-react-sdk');
|
||||
const peg = require('matrix-react-sdk/lib/MatrixClientPeg');
|
||||
const dis = require('matrix-react-sdk/lib/dispatcher');
|
||||
const PageTypes = require('matrix-react-sdk/lib/PageTypes');
|
||||
const MatrixChat = sdk.getComponent('structures.MatrixChat');
|
||||
const RoomDirectory = sdk.getComponent('structures.RoomDirectory');
|
||||
const RoomPreviewBar = sdk.getComponent('rooms.RoomPreviewBar');
|
||||
const RoomView = sdk.getComponent('structures.RoomView');
|
||||
|
||||
var React = require('react');
|
||||
var ReactDOM = require('react-dom');
|
||||
var ReactTestUtils = require('react-addons-test-utils');
|
||||
var expect = require('expect');
|
||||
const React = require('react');
|
||||
const ReactDOM = require('react-dom');
|
||||
const ReactTestUtils = require('react-addons-test-utils');
|
||||
const expect = require('expect');
|
||||
import Promise from 'bluebird';
|
||||
|
||||
var test_utils = require('../test-utils');
|
||||
var MockHttpBackend = require('matrix-mock-request');
|
||||
const test_utils = require('../test-utils');
|
||||
const MockHttpBackend = require('matrix-mock-request');
|
||||
|
||||
var HS_URL='http://localhost';
|
||||
var IS_URL='http://localhost';
|
||||
var USER_ID='@me:localhost';
|
||||
var ACCESS_TOKEN='access_token';
|
||||
const HS_URL='http://localhost';
|
||||
const IS_URL='http://localhost';
|
||||
const USER_ID='@me:localhost';
|
||||
const ACCESS_TOKEN='access_token';
|
||||
|
||||
describe('joining a room', function () {
|
||||
describe('over federation', function () {
|
||||
var parentDiv;
|
||||
var httpBackend;
|
||||
var matrixChat;
|
||||
describe('joining a room', function() {
|
||||
describe('over federation', function() {
|
||||
let parentDiv;
|
||||
let httpBackend;
|
||||
let matrixChat;
|
||||
|
||||
beforeEach(function() {
|
||||
test_utils.beforeEach(this);
|
||||
@@ -72,8 +72,8 @@ describe('joining a room', function () {
|
||||
});
|
||||
|
||||
it('should not get stuck at a spinner', function() {
|
||||
var ROOM_ALIAS = '#alias:localhost';
|
||||
var ROOM_ID = '!id:localhost';
|
||||
const ROOM_ALIAS = '#alias:localhost';
|
||||
const ROOM_ID = '!id:localhost';
|
||||
|
||||
httpBackend.when('GET', '/pushrules').respond(200, {});
|
||||
httpBackend.when('POST', '/filter').respond(200, { filter_id: 'fid' });
|
||||
@@ -90,7 +90,7 @@ describe('joining a room', function () {
|
||||
|
||||
PlatformPeg.set(new Platform());
|
||||
|
||||
var mc = (
|
||||
const mc = (
|
||||
<MatrixChat config={{}}
|
||||
makeRegistrationUrl={()=>{throw new Error("unimplemented");}}
|
||||
initialScreenAfterLogin={{
|
||||
@@ -100,7 +100,7 @@ describe('joining a room', function () {
|
||||
);
|
||||
matrixChat = ReactDOM.render(mc, parentDiv);
|
||||
|
||||
var roomView;
|
||||
let roomView;
|
||||
|
||||
// wait for /sync to happen. This may take some time, as the client
|
||||
// has to initialise indexeddb.
|
||||
@@ -118,11 +118,11 @@ describe('joining a room', function () {
|
||||
}).then(() => {
|
||||
console.log(`${Date.now()} App made requests for directory view; switching to a room.`);
|
||||
|
||||
var roomDir = ReactTestUtils.findRenderedComponentWithType(
|
||||
const roomDir = ReactTestUtils.findRenderedComponentWithType(
|
||||
matrixChat, RoomDirectory);
|
||||
|
||||
// enter an alias in the input, and simulate enter
|
||||
var input = ReactTestUtils.findRenderedDOMComponentWithTag(
|
||||
const input = ReactTestUtils.findRenderedDOMComponentWithTag(
|
||||
roomDir, 'input');
|
||||
input.value = ROOM_ALIAS;
|
||||
ReactTestUtils.Simulate.change(input);
|
||||
|
||||
@@ -40,10 +40,10 @@ import * as test_utils from '../test-utils';
|
||||
import MockHttpBackend from 'matrix-mock-request';
|
||||
import {parseQs, parseQsFromFragment} from '../../src/vector/url_utils';
|
||||
|
||||
var DEFAULT_HS_URL='http://my_server';
|
||||
var DEFAULT_IS_URL='http://my_is';
|
||||
const DEFAULT_HS_URL='http://my_server';
|
||||
const DEFAULT_IS_URL='http://my_is';
|
||||
|
||||
describe('loading:', function () {
|
||||
describe('loading:', function() {
|
||||
let parentDiv;
|
||||
let httpBackend;
|
||||
|
||||
@@ -74,7 +74,7 @@ describe('loading:', function () {
|
||||
});
|
||||
});
|
||||
|
||||
afterEach(async function () {
|
||||
afterEach(async function() {
|
||||
console.log(`${Date.now()}: loading: afterEach`);
|
||||
if (parentDiv) {
|
||||
ReactDOM.unmountComponentAtNode(parentDiv);
|
||||
@@ -112,12 +112,12 @@ describe('loading:', function () {
|
||||
toString: function() { return this.search + this.hash; },
|
||||
};
|
||||
|
||||
let tokenLoginCompleteDefer = Promise.defer();
|
||||
const tokenLoginCompleteDefer = Promise.defer();
|
||||
tokenLoginCompletePromise = tokenLoginCompleteDefer.promise;
|
||||
|
||||
function onNewScreen(screen) {
|
||||
console.log(Date.now() + " newscreen "+screen);
|
||||
var hash = '#/' + screen;
|
||||
const hash = '#/' + screen;
|
||||
windowLocation.hash = hash;
|
||||
console.log(Date.now() + " browser URI now "+ windowLocation);
|
||||
}
|
||||
@@ -129,7 +129,7 @@ describe('loading:', function () {
|
||||
return {
|
||||
screen: fragparts.location.substring(1),
|
||||
params: fragparts.params,
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
const MatrixChat = sdk.getComponent('structures.MatrixChat');
|
||||
@@ -142,7 +142,7 @@ describe('loading:', function () {
|
||||
|
||||
PlatformPeg.set(new Platform());
|
||||
|
||||
var params = parseQs(windowLocation);
|
||||
const params = parseQs(windowLocation);
|
||||
matrixChat = ReactDOM.render(
|
||||
<MatrixChat
|
||||
onNewScreen={onNewScreen}
|
||||
@@ -153,7 +153,7 @@ describe('loading:', function () {
|
||||
onTokenLoginCompleted={() => tokenLoginCompleteDefer.resolve()}
|
||||
initialScreenAfterLogin={getScreenFromLocation(windowLocation)}
|
||||
makeRegistrationUrl={() => {throw new Error('Not implemented');}}
|
||||
/>, parentDiv
|
||||
/>, parentDiv,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -179,7 +179,7 @@ describe('loading:', function () {
|
||||
}
|
||||
|
||||
describe("Clean load with no stored credentials:", function() {
|
||||
it('gives a login panel by default', function (done) {
|
||||
it('gives a login panel by default', function(done) {
|
||||
loadApp();
|
||||
|
||||
Promise.delay(1).then(() => {
|
||||
@@ -257,7 +257,6 @@ describe('loading:', function () {
|
||||
}
|
||||
return completeLogin(matrixChat);
|
||||
}).then(() => {
|
||||
|
||||
// once the sync completes, we should have a room view
|
||||
ReactTestUtils.findRenderedComponentWithType(
|
||||
matrixChat, sdk.getComponent('structures.HomePage'));
|
||||
@@ -356,7 +355,7 @@ describe('loading:', function () {
|
||||
});
|
||||
return httpBackend.flush();
|
||||
}).then(() => {
|
||||
return awaitSyncingSpinner(matrixChat)
|
||||
return awaitSyncingSpinner(matrixChat);
|
||||
}).then(() => {
|
||||
// we got a sync spinner - let the sync complete
|
||||
return expectAndAwaitSync();
|
||||
@@ -380,7 +379,7 @@ describe('loading:', function () {
|
||||
it('shows a login view', function() {
|
||||
// we expect a single <Login> component
|
||||
ReactTestUtils.findRenderedComponentWithType(
|
||||
matrixChat, sdk.getComponent('structures.login.Login')
|
||||
matrixChat, sdk.getComponent('structures.login.Login'),
|
||||
);
|
||||
|
||||
// the only outstanding request should be a GET /login
|
||||
@@ -408,7 +407,7 @@ describe('loading:', function () {
|
||||
});
|
||||
|
||||
describe('Guest auto-registration:', function() {
|
||||
it('shows a home page by default', function (done) {
|
||||
it('shows a home page by default', function(done) {
|
||||
loadApp();
|
||||
|
||||
Promise.delay(1).then(() => {
|
||||
@@ -438,7 +437,7 @@ describe('loading:', function () {
|
||||
}).done(done, done);
|
||||
});
|
||||
|
||||
it('uses the last known homeserver to register with', function (done) {
|
||||
it('uses the last known homeserver to register with', function(done) {
|
||||
localStorage.setItem("mx_hs_url", "https://homeserver" );
|
||||
localStorage.setItem("mx_is_url", "https://idserver" );
|
||||
|
||||
@@ -477,7 +476,7 @@ describe('loading:', function () {
|
||||
|
||||
it('shows a room view if we followed a room link', function(done) {
|
||||
loadApp({
|
||||
uriFragment: "#/room/!room:id"
|
||||
uriFragment: "#/room/!room:id",
|
||||
});
|
||||
Promise.delay(1).then(() => {
|
||||
// at this point, we're trying to do a guest registration;
|
||||
@@ -547,7 +546,7 @@ describe('loading:', function () {
|
||||
|
||||
// we expect a single <Login> component
|
||||
ReactTestUtils.findRenderedComponentWithType(
|
||||
matrixChat, sdk.getComponent('structures.login.Login')
|
||||
matrixChat, sdk.getComponent('structures.login.Login'),
|
||||
);
|
||||
});
|
||||
|
||||
@@ -580,7 +579,7 @@ describe('loading:', function () {
|
||||
});
|
||||
|
||||
describe('Token login:', function() {
|
||||
it('logs in successfully', function (done) {
|
||||
it('logs in successfully', function(done) {
|
||||
loadApp({
|
||||
queryString: "?loginToken=secretToken&homeserver=https%3A%2F%2Fhomeserver&identityServer=https%3A%2F%2Fidserver",
|
||||
});
|
||||
@@ -658,7 +657,7 @@ describe('loading:', function () {
|
||||
|
||||
// assert that we are on the loading page
|
||||
function assertAtLoadingSpinner(matrixChat) {
|
||||
var domComponent = ReactDOM.findDOMNode(matrixChat);
|
||||
const domComponent = ReactDOM.findDOMNode(matrixChat);
|
||||
expect(domComponent.className).toEqual("mx_MatrixChat_splash");
|
||||
|
||||
// just the spinner
|
||||
@@ -697,12 +696,12 @@ function awaitSyncingSpinner(matrixChat, retryLimit, retryCount) {
|
||||
}
|
||||
|
||||
function assertAtSyncingSpinner(matrixChat) {
|
||||
var domComponent = ReactDOM.findDOMNode(matrixChat);
|
||||
const domComponent = ReactDOM.findDOMNode(matrixChat);
|
||||
expect(domComponent.className).toEqual("mx_MatrixChat_splash");
|
||||
|
||||
ReactTestUtils.findRenderedComponentWithType(
|
||||
matrixChat, sdk.getComponent('elements.Spinner'));
|
||||
var logoutLink = ReactTestUtils.findRenderedDOMComponentWithTag(
|
||||
const logoutLink = ReactTestUtils.findRenderedDOMComponentWithTag(
|
||||
matrixChat, 'a');
|
||||
expect(logoutLink.text).toEqual("Logout");
|
||||
}
|
||||
|
||||
@@ -4,5 +4,5 @@
|
||||
* Skins the react-sdk with the vector components
|
||||
*/
|
||||
|
||||
var sdk = require('matrix-react-sdk');
|
||||
const sdk = require('matrix-react-sdk');
|
||||
sdk.loadSkin(require('../src/component-index'));
|
||||
|
||||
@@ -8,7 +8,7 @@ import Promise from 'bluebird';
|
||||
* @param {Mocha.Context} context The test context
|
||||
*/
|
||||
export function beforeEach(context) {
|
||||
var desc = context.currentTest.fullTitle();
|
||||
const desc = context.currentTest.fullTitle();
|
||||
console.log();
|
||||
console.log(desc);
|
||||
console.log(new Array(1 + desc.length).join("="));
|
||||
@@ -22,7 +22,7 @@ export function beforeEach(context) {
|
||||
* returns true if the current environment supports webrtc
|
||||
*/
|
||||
export function browserSupportsWebRTC() {
|
||||
var n = global.window.navigator;
|
||||
const n = global.window.navigator;
|
||||
return n.getUserMedia || n.webkitGetUserMedia ||
|
||||
n.mozGetUserMedia;
|
||||
}
|
||||
|
||||
@@ -15,15 +15,6 @@ module.exports = {
|
||||
|
||||
"mobileguide": "./src/vector/mobile_guide/index.js",
|
||||
|
||||
// We ship olm.js as a separate lump of javascript. This makes it get
|
||||
// loaded via a separate <script/> tag in index.html (which loads it
|
||||
// into the browser global `Olm`, where js-sdk expects to find it).
|
||||
//
|
||||
// (we should probably make js-sdk load it asynchronously at some
|
||||
// point, so that it doesn't block the pageload, but that is a separate
|
||||
// problem)
|
||||
"olm": "./src/vector/olm-loader.js",
|
||||
|
||||
// CSS themes
|
||||
"theme-light": "./node_modules/matrix-react-sdk/res/themes/light/css/light.scss",
|
||||
"theme-dark": "./node_modules/matrix-react-sdk/res/themes/dark/css/dark.scss",
|
||||
@@ -171,12 +162,3 @@ module.exports = {
|
||||
inline: false,
|
||||
},
|
||||
};
|
||||
|
||||
// olm is an optional dependency. Ignore it if it's not installed, to avoid a
|
||||
// scary-looking error.
|
||||
try {
|
||||
require('olm');
|
||||
} catch (e) {
|
||||
console.log("Olm is not installed; not shipping it");
|
||||
delete(module.exports.entry["olm"]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user