initial piwik stuff
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>pull/21833/head
							parent
							
								
									5a6baafc91
								
							
						
					
					
						commit
						98c2f9201b
					
				|  | @ -0,0 +1,77 @@ | |||
| /* | ||||
|  Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> | ||||
| 
 | ||||
|  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. | ||||
|  */ | ||||
| 
 | ||||
| /* | ||||
|  * Holds the current Platform object used by the code to do anything | ||||
|  * specific to the platform we're running on (eg. web, electron) | ||||
|  * Platforms are provided by the app layer. | ||||
|  * This allows the app layer to set a Platform without necessarily | ||||
|  * having to have a MatrixChat object | ||||
|  */ | ||||
| 
 | ||||
| import MatrixClientPeg from './MatrixClientPeg'; | ||||
| // import dis from './dispatcher';
 | ||||
| 
 | ||||
| function redact(str) { | ||||
|     return str.replace(/#\/(room|user)\/(.+)/, "#/$1/<redacted>"); | ||||
| } | ||||
| 
 | ||||
| class Analytics { | ||||
|     constructor() { | ||||
|         this.tracker = null; | ||||
|     } | ||||
| 
 | ||||
|     set(tracker) { | ||||
|         this.tracker = tracker; | ||||
| 
 | ||||
|         this.tracker.enableHeartBeatTimer(); | ||||
|         this.tracker.enableLinkTracking(true); | ||||
| 
 | ||||
|         // dis.register(this._onAction.bind(this));
 | ||||
|     } | ||||
| 
 | ||||
|     // _onAction(payload) {
 | ||||
|     //     this.trackEvent('Dispatcher', payload.action);
 | ||||
|     // }
 | ||||
| 
 | ||||
|     async trackPageChange() { | ||||
|         if (!this.tracker) return; | ||||
|         this.tracker.trackPageView(redact(window.location.hash)); | ||||
|     } | ||||
| 
 | ||||
|     async trackEvent(category, action, name) { | ||||
|         if (!this.tracker) return; | ||||
|         this.tracker.trackEvent(category, action, name); | ||||
|     } | ||||
| 
 | ||||
|     async logout() { | ||||
|         if (!this.tracker) return; | ||||
|         this.tracker.deleteCookies(); | ||||
|     } | ||||
| 
 | ||||
|     async login() { // not used currently
 | ||||
|         const cli = MatrixClientPeg.get(); | ||||
|         if (!this.tracker || !cli) return; | ||||
| 
 | ||||
|         this.tracker.setUserId(`@${cli.getUserIdLocalpart()}:${cli.getDomain()}`); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| if (!global.mxAnalytics) { | ||||
|     global.mxAnalytics = new Analytics(); | ||||
| } | ||||
| module.exports = global.mxAnalytics; | ||||
|  | @ -19,6 +19,7 @@ import q from 'q'; | |||
| import Matrix from 'matrix-js-sdk'; | ||||
| 
 | ||||
| import MatrixClientPeg from './MatrixClientPeg'; | ||||
| import Analytics from './Analytics'; | ||||
| import Notifier from './Notifier'; | ||||
| import UserActivity from './UserActivity'; | ||||
| import Presence from './Presence'; | ||||
|  | @ -405,6 +406,7 @@ export function onLoggedOut() { | |||
| } | ||||
| 
 | ||||
| function _clearLocalStorage() { | ||||
|     Analytics.logout(); | ||||
|     if (!window.localStorage) { | ||||
|         return; | ||||
|     } | ||||
|  |  | |||
|  | @ -20,6 +20,7 @@ import q from 'q'; | |||
| import React from 'react'; | ||||
| import Matrix from "matrix-js-sdk"; | ||||
| 
 | ||||
| import Analytics from "../../Analytics"; | ||||
| import MatrixClientPeg from "../../MatrixClientPeg"; | ||||
| import PlatformPeg from "../../PlatformPeg"; | ||||
| import SdkConfig from "../../SdkConfig"; | ||||
|  | @ -1004,6 +1005,7 @@ module.exports = React.createClass({ | |||
|         if (this.props.onNewScreen) { | ||||
|             this.props.onNewScreen(screen); | ||||
|         } | ||||
|         Analytics.trackPageChange(); | ||||
|     }, | ||||
| 
 | ||||
|     onAliasClick: function(event, alias) { | ||||
|  |  | |||
|  | @ -16,6 +16,7 @@ limitations under the License. | |||
| 
 | ||||
| import React from 'react'; | ||||
| 
 | ||||
| import Analytics from '../../../Analytics'; | ||||
| import * as KeyCode from '../../../KeyCode'; | ||||
| import AccessibleButton from '../elements/AccessibleButton'; | ||||
| import sdk from '../../../index'; | ||||
|  | @ -66,8 +67,9 @@ export default React.createClass({ | |||
|     }, | ||||
| 
 | ||||
|     render: function() { | ||||
|         Analytics.trackEvent('Dialog', 'mount', this.props.title); | ||||
|         const TintableSvg = sdk.getComponent("elements.TintableSvg"); | ||||
|                  | ||||
| 
 | ||||
|         return ( | ||||
|             <div onKeyDown={this._onKeyDown} className={this.props.className}> | ||||
|                 <AccessibleButton onClick={this._onCancelClick} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Michael Telatynski
						Michael Telatynski