diff options
author | Christopher Speller <crspeller@gmail.com> | 2016-07-19 10:16:44 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-19 10:16:44 -0400 |
commit | 1641370fbedc42e07f7a9b7758286d341f13b624 (patch) | |
tree | 0571746e175c7b6da2a5587bda1b8aaca033cc03 /webapp/client/web_client.jsx | |
parent | 2b0fcd378ce96277f393b89cac1a98d70e1c480f (diff) | |
download | chat-1641370fbedc42e07f7a9b7758286d341f13b624.tar.gz chat-1641370fbedc42e07f7a9b7758286d341f13b624.tar.bz2 chat-1641370fbedc42e07f7a9b7758286d341f13b624.zip |
Moving javascript driver back to platform (#3613)
Diffstat (limited to 'webapp/client/web_client.jsx')
-rw-r--r-- | webapp/client/web_client.jsx | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/webapp/client/web_client.jsx b/webapp/client/web_client.jsx new file mode 100644 index 000000000..d6474f1d9 --- /dev/null +++ b/webapp/client/web_client.jsx @@ -0,0 +1,101 @@ +// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import Client from './client.jsx'; +import TeamStore from '../stores/team_store.jsx'; +import BrowserStore from '../stores/browser_store.jsx'; +import * as GlobalActions from 'actions/global_actions.jsx'; + +import request from 'superagent'; + +const HTTP_UNAUTHORIZED = 401; + +class WebClientClass extends Client { + constructor() { + super(); + this.enableLogErrorsToConsole(true); + TeamStore.addChangeListener(this.onTeamStoreChanged); + } + + onTeamStoreChanged = () => { + this.setTeamId(TeamStore.getCurrentId()); + } + + track = (category, action, label, property, value) => { + if (global.window && global.window.analytics) { + global.window.analytics.track(action, {category, label, property, value}); + } + } + + trackPage = () => { + if (global.window && global.window.analytics) { + global.window.analytics.page(); + } + } + + handleError = (err, res) => { // eslint-disable-line no-unused-vars + if (err.status === HTTP_UNAUTHORIZED && res.req.url !== '/api/v3/users/login') { + GlobalActions.emitUserLoggedOutEvent('/login'); + } + } + + // not sure why but super.login doesn't work if using an () => arrow functions. + // I think this might be a webpack issue. + webLogin(loginId, password, token, success, error) { + this.login( + loginId, + password, + token, + (data) => { + this.track('api', 'api_users_login_success', '', 'login_id', loginId); + BrowserStore.signalLogin(); + + if (success) { + success(data); + } + }, + (err) => { + this.track('api', 'api_users_login_fail', '', 'login_id', loginId); + if (error) { + error(err); + } + } + ); + } + + webLoginByLdap(loginId, password, token, success, error) { + this.loginByLdap( + loginId, + password, + token, + (data) => { + this.track('api', 'api_users_login_success', '', 'login_id', loginId); + BrowserStore.signalLogin(); + + if (success) { + success(data); + } + }, + (err) => { + this.track('api', 'api_users_login_fail', '', 'login_id', loginId); + if (error) { + error(err); + } + } + ); + } + + getYoutubeVideoInfo(googleKey, videoId, success, error) { + request.get('https://www.googleapis.com/youtube/v3/videos'). + query({part: 'snippet', id: videoId, key: googleKey}). + end((err, res) => { + if (err) { + return error(err); + } + return success(res.body); + }); + } +} + +var WebClient = new WebClientClass(); +export default WebClient; |