mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
Let emoji_store.jsx use Client APIs to resolve URLs (#5302)
This commit is contained in:
committed by
George Goldberg
parent
11e0a7daa2
commit
432dc9239f
133
webapp/client/browser_web_client.jsx
Normal file
133
webapp/client/browser_web_client.jsx
Normal file
@@ -0,0 +1,133 @@
|
||||
// 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 {reconnect} from 'actions/websocket_actions.jsx';
|
||||
|
||||
import request from 'superagent';
|
||||
|
||||
const HTTP_UNAUTHORIZED = 401;
|
||||
|
||||
const mfaPaths = [
|
||||
'/mfa/setup',
|
||||
'/mfa/confirm'
|
||||
];
|
||||
|
||||
class WebClientClass extends Client {
|
||||
constructor() {
|
||||
super();
|
||||
this.enableLogErrorsToConsole(true);
|
||||
this.hasInternetConnection = true;
|
||||
TeamStore.addChangeListener(this.onTeamStoreChanged.bind(this));
|
||||
}
|
||||
|
||||
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) {
|
||||
if (res && res.body && res.body.id === 'api.context.mfa_required.app_error') {
|
||||
if (mfaPaths.indexOf(window.location.pathname) === -1) {
|
||||
window.location.reload();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (err.status === HTTP_UNAUTHORIZED && res.req.url !== this.getUsersRoute() + '/login') {
|
||||
GlobalActions.emitUserLoggedOutEvent('/login');
|
||||
}
|
||||
|
||||
if (err.status == null) {
|
||||
this.hasInternetConnection = false;
|
||||
}
|
||||
}
|
||||
|
||||
handleSuccess = (res) => { // eslint-disable-line no-unused-vars
|
||||
if (res && !this.hasInternetConnection) {
|
||||
reconnect();
|
||||
this.hasInternetConnection = true;
|
||||
}
|
||||
}
|
||||
|
||||
// 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);
|
||||
}
|
||||
|
||||
if (!res.body) {
|
||||
console.error('Missing response body for getYoutubeVideoInfo'); // eslint-disable-line no-console
|
||||
}
|
||||
|
||||
return success(res.body);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
var WebClient = new WebClientClass();
|
||||
export default WebClient;
|
||||
@@ -1,133 +1,10 @@
|
||||
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||
// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
// This file is only for testing on non-browser environments.
|
||||
// See browser_web_client.jsx for the actual implementation for browsers.
|
||||
|
||||
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 {reconnect} from 'actions/websocket_actions.jsx';
|
||||
|
||||
import request from 'superagent';
|
||||
|
||||
const HTTP_UNAUTHORIZED = 401;
|
||||
|
||||
const mfaPaths = [
|
||||
'/mfa/setup',
|
||||
'/mfa/confirm'
|
||||
];
|
||||
|
||||
class WebClientClass extends Client {
|
||||
constructor() {
|
||||
super();
|
||||
this.enableLogErrorsToConsole(true);
|
||||
this.hasInternetConnection = true;
|
||||
TeamStore.addChangeListener(this.onTeamStoreChanged.bind(this));
|
||||
}
|
||||
|
||||
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) {
|
||||
if (res && res.body && res.body.id === 'api.context.mfa_required.app_error') {
|
||||
if (mfaPaths.indexOf(window.location.pathname) === -1) {
|
||||
window.location.reload();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (err.status === HTTP_UNAUTHORIZED && res.req.url !== this.getUsersRoute() + '/login') {
|
||||
GlobalActions.emitUserLoggedOutEvent('/login');
|
||||
}
|
||||
|
||||
if (err.status == null) {
|
||||
this.hasInternetConnection = false;
|
||||
}
|
||||
}
|
||||
|
||||
handleSuccess = (res) => { // eslint-disable-line no-unused-vars
|
||||
if (res && !this.hasInternetConnection) {
|
||||
reconnect();
|
||||
this.hasInternetConnection = true;
|
||||
}
|
||||
}
|
||||
|
||||
// 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);
|
||||
}
|
||||
|
||||
if (!res.body) {
|
||||
console.error('Missing response body for getYoutubeVideoInfo'); // eslint-disable-line no-console
|
||||
}
|
||||
|
||||
return success(res.body);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
var WebClient = new WebClientClass();
|
||||
var WebClient = new Client();
|
||||
export default WebClient;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
"name": "mattermost-webapp",
|
||||
"browser": {"./client/web_client.jsx": "./client/browser_web_client.jsx"},
|
||||
"version": "0.0.1",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import Client from '../client/web_client.jsx';
|
||||
import AppDispatcher from '../dispatcher/app_dispatcher.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
import EventEmitter from 'events';
|
||||
@@ -148,8 +149,7 @@ class EmojiStore extends EventEmitter {
|
||||
|
||||
getEmojiImageUrl(emoji) {
|
||||
if (emoji.id) {
|
||||
// must match Client.getCustomEmojiImageUrl
|
||||
return `/api/v3/emoji/${emoji.id}`;
|
||||
return Client.getCustomEmojiImageUrl(emoji.id);
|
||||
}
|
||||
|
||||
const filename = emoji.filename || emoji.aliases[0];
|
||||
|
||||
Reference in New Issue
Block a user