From 61a67c52c555faddccef50f9a38ba451aac43541 Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Sat, 27 May 2017 20:39:52 +0100
Subject: [PATCH 01/13] initial piwik stuff
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
src/components/structures/RightPanel.js | 11 ++++++----
src/vector/index.js | 28 +++++++++++++++++++++----
2 files changed, 31 insertions(+), 8 deletions(-)
diff --git a/src/components/structures/RightPanel.js b/src/components/structures/RightPanel.js
index c7f5394bf1..8d5fc36e40 100644
--- a/src/components/structures/RightPanel.js
+++ b/src/components/structures/RightPanel.js
@@ -22,6 +22,7 @@ import sdk from 'matrix-react-sdk';
import Matrix from "matrix-js-sdk";
import dis from 'matrix-react-sdk/lib/dispatcher';
import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg';
+import Analytics from 'matrix-react-sdk/lib/Analytics';
import rate_limited_func from 'matrix-react-sdk/lib/ratelimitedfunc';
import Modal from 'matrix-react-sdk/lib/Modal';
import AccessibleButton from 'matrix-react-sdk/lib/components/views/elements/AccessibleButton';
@@ -61,24 +62,26 @@ module.exports = React.createClass({
return {
phase: this.Phase.MemberInfo,
member: member,
- }
- }
- else {
+ };
+ } else {
return {
phase: this.Phase.MemberList
- }
+ };
}
},
onMemberListButtonClick: function() {
+ Analytics.trackEvent('RightPanel', 'memberListButtonClick');
this.setState({ phase: this.Phase.MemberList });
},
onFileListButtonClick: function() {
+ Analytics.trackEvent('RightPanel', 'fileListButtonClick');
this.setState({ phase: this.Phase.FilePanel });
},
onNotificationListButtonClick: function() {
+ Analytics.trackEvent('RightPanel', 'notificationListButtonClick');
this.setState({ phase: this.Phase.NotificationPanel });
},
diff --git a/src/vector/index.js b/src/vector/index.js
index 14f8bb4b36..d1752356a9 100644
--- a/src/vector/index.js
+++ b/src/vector/index.js
@@ -56,7 +56,8 @@ if (process.env.NODE_ENV !== 'production') {
var RunModernizrTests = require("./modernizr"); // this side-effects a global
var ReactDOM = require("react-dom");
var sdk = require("matrix-react-sdk");
-var PlatformPeg = require("matrix-react-sdk/lib/PlatformPeg");
+const PlatformPeg = require("matrix-react-sdk/lib/PlatformPeg");
+const Analytics = require("matrix-react-sdk/lib/Analytics");
sdk.loadSkin(require('../component-index'));
var VectorConferenceHandler = require('../VectorConferenceHandler');
var UpdateChecker = require("./updater");
@@ -143,7 +144,7 @@ var onNewScreen = function(screen) {
var 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
@@ -279,6 +280,26 @@ async function loadApp() {
} else if (validBrowser) {
UpdateChecker.start();
+ let doNotTrack = navigator.doNotTrack;
+ if (typeof navigator.doNotTrack === 'string') {
+ doNotTrack = navigator.doNotTrack === 'yes';
+ }
+ if (!doNotTrack && configJson.piwik && configJson.piwik.url && configJson.piwik.siteId) {
+ (function() {
+ const g = document.createElement('script');
+ const s = document.getElementsByTagName('script')[0];
+ g.type='text/javascript'; g.async=true; g.defer=true; g.src=configJson.piwik.url+'piwik.js';
+
+ g.onload = function() {
+ const tracker = window.Piwik.getTracker(configJson.piwik.url+'piwik.php', configJson.piwik.siteId);
+ console.log('Initialised anonymous analytics');
+ Analytics.set(tracker);
+ };
+
+ s.parentNode.insertBefore(g, s);
+ })();
+ }
+
const MatrixChat = sdk.getComponent('structures.MatrixChat');
window.matrixChat = ReactDOM.render(
,
document.getElementById('matrixchat')
);
- }
- else {
+ } 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");
From 195fcba69608ce2cb3a6e424de5c194d4e2b54b7 Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Sat, 27 May 2017 20:56:25 +0100
Subject: [PATCH 02/13] correct DNT check
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
src/vector/index.js | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/src/vector/index.js b/src/vector/index.js
index d1752356a9..7674dd4789 100644
--- a/src/vector/index.js
+++ b/src/vector/index.js
@@ -280,10 +280,7 @@ async function loadApp() {
} else if (validBrowser) {
UpdateChecker.start();
- let doNotTrack = navigator.doNotTrack;
- if (typeof navigator.doNotTrack === 'string') {
- doNotTrack = navigator.doNotTrack === 'yes';
- }
+ const doNotTrack = navigator.doNotTrack === 'yes' || navigator.doNotTrack === '1' || navigator.doNotTrack === 1;
if (!doNotTrack && configJson.piwik && configJson.piwik.url && configJson.piwik.siteId) {
(function() {
const g = document.createElement('script');
From 2e75640cdde4f790acee7c1ff87778abbacd3dec Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Sun, 28 May 2017 11:27:33 +0100
Subject: [PATCH 03/13] sample piwik config
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
config.sample.json | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/config.sample.json b/config.sample.json
index 3c513f7ab2..bf5da247d5 100644
--- a/config.sample.json
+++ b/config.sample.json
@@ -10,5 +10,9 @@
"servers": [
"matrix.org"
]
+ },
+ "piwik": {
+ "url": "//piwik.riot.im/",
+ "siteId": 1
}
}
From c2c417b207a8ec8356fcff6201439432341e54f8 Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Sun, 28 May 2017 13:07:56 +0100
Subject: [PATCH 04/13] add piwik config to riot.im electron build config
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
electron_app/riot.im/config.json | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/electron_app/riot.im/config.json b/electron_app/riot.im/config.json
index 80526f4ab8..a31f77e4c5 100644
--- a/electron_app/riot.im/config.json
+++ b/electron_app/riot.im/config.json
@@ -12,5 +12,9 @@
"servers": [
"matrix.org"
]
+ },
+ "piwik": {
+ "url": "//piwik.riot.ovh/",
+ "siteId": 2
}
}
From 6969baa5a6b7717e1319f24c76d11e109dc3b47a Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Sun, 28 May 2017 13:08:09 +0100
Subject: [PATCH 05/13] change event wording
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
src/components/structures/RightPanel.js | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/components/structures/RightPanel.js b/src/components/structures/RightPanel.js
index 8d5fc36e40..230572002d 100644
--- a/src/components/structures/RightPanel.js
+++ b/src/components/structures/RightPanel.js
@@ -71,17 +71,17 @@ module.exports = React.createClass({
},
onMemberListButtonClick: function() {
- Analytics.trackEvent('RightPanel', 'memberListButtonClick');
+ Analytics.trackEvent('Right Panel', 'Member List Button', 'click');
this.setState({ phase: this.Phase.MemberList });
},
onFileListButtonClick: function() {
- Analytics.trackEvent('RightPanel', 'fileListButtonClick');
+ Analytics.trackEvent('Right Panel', 'File List Button', 'click');
this.setState({ phase: this.Phase.FilePanel });
},
onNotificationListButtonClick: function() {
- Analytics.trackEvent('RightPanel', 'notificationListButtonClick');
+ Analytics.trackEvent('Right Panel', 'Notification List Button', 'click');
this.setState({ phase: this.Phase.NotificationPanel });
},
From 28d929f9015c44acec2b47da5b7a7d83bf06a3bb Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Sun, 28 May 2017 13:10:13 +0100
Subject: [PATCH 06/13] correct electron config to not point at personal piwik
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
electron_app/riot.im/config.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/electron_app/riot.im/config.json b/electron_app/riot.im/config.json
index a31f77e4c5..023e6a02e6 100644
--- a/electron_app/riot.im/config.json
+++ b/electron_app/riot.im/config.json
@@ -14,7 +14,7 @@
]
},
"piwik": {
- "url": "//piwik.riot.ovh/",
- "siteId": 2
+ "url": "//piwik.riot.im/",
+ "siteId": 1
}
}
From 3e7ef112f02f1abec561d3e8a3dc29b68cc90ab4 Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Mon, 29 May 2017 13:17:12 +0100
Subject: [PATCH 07/13] opt out based on analyticsOptOut localSetting
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
src/vector/index.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/vector/index.js b/src/vector/index.js
index 7674dd4789..571fecfa42 100644
--- a/src/vector/index.js
+++ b/src/vector/index.js
@@ -280,8 +280,8 @@ async function loadApp() {
} else if (validBrowser) {
UpdateChecker.start();
- const doNotTrack = navigator.doNotTrack === 'yes' || navigator.doNotTrack === '1' || navigator.doNotTrack === 1;
- if (!doNotTrack && configJson.piwik && configJson.piwik.url && configJson.piwik.siteId) {
+ const analyticsEnabled = !UserSettingsStore.getLocalSetting('analyticsOptOut', false);
+ if (analyticsEnabled && configJson.piwik && configJson.piwik.url && configJson.piwik.siteId) {
(function() {
const g = document.createElement('script');
const s = document.getElementsByTagName('script')[0];
From 3e7b738b11a4250dc83b91d4c53bc023bd0c3083 Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Mon, 29 May 2017 14:22:35 +0100
Subject: [PATCH 08/13] move all piwik init stuff to MatrixChat/Analytics as it
now relies on SDKConfig
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
src/vector/index.js | 18 ------------------
1 file changed, 18 deletions(-)
diff --git a/src/vector/index.js b/src/vector/index.js
index 571fecfa42..432710fbc2 100644
--- a/src/vector/index.js
+++ b/src/vector/index.js
@@ -57,7 +57,6 @@ var RunModernizrTests = require("./modernizr"); // this side-effects a global
var ReactDOM = require("react-dom");
var sdk = require("matrix-react-sdk");
const PlatformPeg = require("matrix-react-sdk/lib/PlatformPeg");
-const Analytics = require("matrix-react-sdk/lib/Analytics");
sdk.loadSkin(require('../component-index'));
var VectorConferenceHandler = require('../VectorConferenceHandler');
var UpdateChecker = require("./updater");
@@ -280,23 +279,6 @@ async function loadApp() {
} else if (validBrowser) {
UpdateChecker.start();
- const analyticsEnabled = !UserSettingsStore.getLocalSetting('analyticsOptOut', false);
- if (analyticsEnabled && configJson.piwik && configJson.piwik.url && configJson.piwik.siteId) {
- (function() {
- const g = document.createElement('script');
- const s = document.getElementsByTagName('script')[0];
- g.type='text/javascript'; g.async=true; g.defer=true; g.src=configJson.piwik.url+'piwik.js';
-
- g.onload = function() {
- const tracker = window.Piwik.getTracker(configJson.piwik.url+'piwik.php', configJson.piwik.siteId);
- console.log('Initialised anonymous analytics');
- Analytics.set(tracker);
- };
-
- s.parentNode.insertBefore(g, s);
- })();
- }
-
const MatrixChat = sdk.getComponent('structures.MatrixChat');
window.matrixChat = ReactDOM.render(
Date: Mon, 29 May 2017 19:12:04 +0100
Subject: [PATCH 09/13] make eslint happy about MatrixToolbar
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
src/components/views/globals/MatrixToolbar.js | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/src/components/views/globals/MatrixToolbar.js b/src/components/views/globals/MatrixToolbar.js
index 6d47ad1b9e..488b5def47 100644
--- a/src/components/views/globals/MatrixToolbar.js
+++ b/src/components/views/globals/MatrixToolbar.js
@@ -16,11 +16,10 @@ limitations under the License.
'use strict';
-var React = require('react');
+import React from 'react';
import { _t } from 'matrix-react-sdk/lib/languageHandler';
-var Notifier = require("matrix-react-sdk/lib/Notifier");
-var sdk = require('matrix-react-sdk')
-var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton');
+import Notifier from 'matrix-react-sdk/lib/Notifier';
+import AccessibleButton from 'matrix-react-sdk/lib/components/views/elements/AccessibleButton';
module.exports = React.createClass({
displayName: 'MatrixToolbar',
@@ -43,5 +42,5 @@ module.exports = React.createClass({
);
- }
+ },
});
From 8a59acb5c3308a1df4e76af5e01915d1d3d2d852 Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Mon, 29 May 2017 19:32:44 +0100
Subject: [PATCH 10/13] explicit protocol in configs, otherwise breaks in
Electron when it tries file://
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
config.sample.json | 2 +-
electron_app/riot.im/config.json | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/config.sample.json b/config.sample.json
index bf5da247d5..c9b3d65b0f 100644
--- a/config.sample.json
+++ b/config.sample.json
@@ -12,7 +12,7 @@
]
},
"piwik": {
- "url": "//piwik.riot.im/",
+ "url": "https://piwik.riot.im/",
"siteId": 1
}
}
diff --git a/electron_app/riot.im/config.json b/electron_app/riot.im/config.json
index 023e6a02e6..1303985ecd 100644
--- a/electron_app/riot.im/config.json
+++ b/electron_app/riot.im/config.json
@@ -14,7 +14,7 @@
]
},
"piwik": {
- "url": "//piwik.riot.im/",
+ "url": "https://piwik.riot.im/",
"siteId": 1
}
}
From e991461e8dcb379613606afc167322bbc01527cb Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Mon, 29 May 2017 19:51:28 +0100
Subject: [PATCH 11/13] add new BasePlatform method, Analytics fun on the
Webpack train
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
src/vector/platform/ElectronPlatform.js | 4 ++++
src/vector/platform/VectorBasePlatform.js | 4 ++++
src/vector/platform/WebPlatform.js | 4 ++++
3 files changed, 12 insertions(+)
diff --git a/src/vector/platform/ElectronPlatform.js b/src/vector/platform/ElectronPlatform.js
index bf930a674f..a12de530ba 100644
--- a/src/vector/platform/ElectronPlatform.js
+++ b/src/vector/platform/ElectronPlatform.js
@@ -67,6 +67,10 @@ export default class ElectronPlatform extends VectorBasePlatform {
dis.register(_onAction);
}
+ getHumanReadableName() {
+ return 'Electron Platform';
+ }
+
setNotificationCount(count: number) {
if (this.notificationCount === count) return;
super.setNotificationCount(count);
diff --git a/src/vector/platform/VectorBasePlatform.js b/src/vector/platform/VectorBasePlatform.js
index 00c9c47c30..4ff3c222f2 100644
--- a/src/vector/platform/VectorBasePlatform.js
+++ b/src/vector/platform/VectorBasePlatform.js
@@ -35,6 +35,10 @@ export default class VectorBasePlatform extends BasePlatform {
this._updateFavicon();
}
+ getHumanReadableName() {
+ return 'Vector Base Platform';
+ }
+
_updateFavicon() {
try {
// This needs to be in in a try block as it will throw
diff --git a/src/vector/platform/WebPlatform.js b/src/vector/platform/WebPlatform.js
index cdff7344a6..1db024edd3 100644
--- a/src/vector/platform/WebPlatform.js
+++ b/src/vector/platform/WebPlatform.js
@@ -31,6 +31,10 @@ export default class WebPlatform extends VectorBasePlatform {
this.runningVersion = null;
}
+ getHumanReadableName() {
+ return 'Web Platform';
+ }
+
/**
* Returns true if the platform supports displaying
* notifications, otherwise false.
From b9ec25b32f53659f4b35e0ed348838e62badcb0b Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Mon, 29 May 2017 20:03:21 +0100
Subject: [PATCH 12/13] add flow annotation
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
src/vector/platform/ElectronPlatform.js | 2 +-
src/vector/platform/VectorBasePlatform.js | 2 +-
src/vector/platform/WebPlatform.js | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/vector/platform/ElectronPlatform.js b/src/vector/platform/ElectronPlatform.js
index a12de530ba..13604cdabe 100644
--- a/src/vector/platform/ElectronPlatform.js
+++ b/src/vector/platform/ElectronPlatform.js
@@ -67,7 +67,7 @@ export default class ElectronPlatform extends VectorBasePlatform {
dis.register(_onAction);
}
- getHumanReadableName() {
+ getHumanReadableName(): string {
return 'Electron Platform';
}
diff --git a/src/vector/platform/VectorBasePlatform.js b/src/vector/platform/VectorBasePlatform.js
index 4ff3c222f2..04caecdc2d 100644
--- a/src/vector/platform/VectorBasePlatform.js
+++ b/src/vector/platform/VectorBasePlatform.js
@@ -35,7 +35,7 @@ export default class VectorBasePlatform extends BasePlatform {
this._updateFavicon();
}
- getHumanReadableName() {
+ getHumanReadableName(): string {
return 'Vector Base Platform';
}
diff --git a/src/vector/platform/WebPlatform.js b/src/vector/platform/WebPlatform.js
index 1db024edd3..1a3c46fb0b 100644
--- a/src/vector/platform/WebPlatform.js
+++ b/src/vector/platform/WebPlatform.js
@@ -31,7 +31,7 @@ export default class WebPlatform extends VectorBasePlatform {
this.runningVersion = null;
}
- getHumanReadableName() {
+ getHumanReadableName(): string {
return 'Web Platform';
}
From 33b95d4965284d5f40f07de4d98ee017da2849bf Mon Sep 17 00:00:00 2001
From: Richard van der Hoff
Date: Tue, 30 May 2017 15:11:17 +0100
Subject: [PATCH 13/13] Standardise on node v6/v7
---
.travis.yml | 13 ++++++++++++-
README.md | 15 ++++++++-------
2 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index ff58bf374c..c68279a269 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,17 @@
language: node_js
node_js:
- - 6 # node v6, to match jenkins
+ # 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 current 'LTS' version
+ # - 7.x is the current 'current' version (until October 2017)
+ #
+ # see: https://github.com/nodejs/LTS/
+ - 6.0
+ - 6
+ - 7
install:
- scripts/fetch-develop.deps.sh
- npm install
diff --git a/README.md b/README.md
index 4c5452e146..be3f3a8b4b 100644
--- a/README.md
+++ b/README.md
@@ -55,9 +55,10 @@ Building From Source
Riot is a modular webapp built with modern ES6 and requires a npm build system
to build.
-1. Install or update `node.js` so that your `npm` is at least at version `2.0.0`
-1. Clone the repo: `git clone https://github.com/vector-im/riot-web.git`
-1. Switch to the riot-web directory: `cd riot-web`
+1. Install or update `node.js` so that your `node` is at least v6.0.0 (and `npm`
+ is at least v3.8.6).
+1. Clone the repo: `git clone https://github.com/vector-im/riot-web.git`.
+1. Switch to the riot-web directory: `cd riot-web`.
1. If you're using the `develop` branch, install the develop versions of the
dependencies, as the released ones will be too old:
```
@@ -65,7 +66,7 @@ to build.
```
Whenever you git pull on riot-web you will also probably need to force an update
to these dependencies - the simplest way is to re-run the script, but you can also
- manually update and reuild them:
+ manually update and rebuild them:
```
cd matrix-js-sdk
git pull
@@ -85,10 +86,10 @@ to build.
up-to-date. Or just use https://riot.im/develop - the continuous integration
release of the develop branch.
(Note that we don't reference the develop versions in git directly due to
- https://github.com/npm/npm/issues/3055)
-1. Install the prerequisites: `npm install`
+ https://github.com/npm/npm/issues/3055.)
+1. Install the prerequisites: `npm install`.
1. Configure the app by copying `config.sample.json` to `config.json` and
- modifying it (see below for details)
+ modifying it (see below for details).
1. `npm run dist` to build a tarball to deploy. Untaring this file will give
a version-specific directory containing all the files that need to go on your
web server.