hunk.code_window:                     success(data);
                   }
               },
               (err) => {
                   this.track('api', 'api_users_login_fail', name, 'login_id', loginId);
                   if (error) {
                       error(err);
                   }
  
hunk.labels: keep keep keep keep replace keep keep keep
hunk.after_edit:                 this.track('api', 'api_users_login_fail', '', 'login_id', loginId);
  
hunk.file_path: webapp/utils/web_client.jsx
hunk.type: replace
file: // Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
  // See License.txt for license information.
  
  import Client from '../client/client.jsx';
  import TeamStore from '../stores/team_store.jsx';
  import BrowserStore from '../stores/browser_store.jsx';
  import * as GlobalActions from 'action_creators/global_actions.jsx';
  
  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', name, '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', name, 'login_id', loginId);
                  if (error) {
                      error(err);
                  }
              }
          );
      }
  }
  
  var WebClient = new WebClientClass();
  export default WebClient;
  