hunk.code_window:     propTypes: {
           filenames: React.PropTypes.arrayOf(React.PropTypes.string).isRequired,
           index: React.PropTypes.number.isRequired,
           imageModalId: React.PropTypes.string.isRequired,
           handleImageClick: React.PropTypes.func
       },
       componentDidMount: function() {
           var filename = this.props.filenames[this.props.index];
  
hunk.labels: keep keep keep replace keep keep keep keep keep
hunk.after_edit:         modalId: React.PropTypes.string.isRequired,
  
hunk.file_path: web/react/components/file_attachment.jsx
hunk.type: replace
file: // Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
  // See License.txt for license information.
  
  var AppDispatcher = require('../dispatcher/app_dispatcher.jsx');
  var EventEmitter = require('events').EventEmitter;
  var assign = require('object-assign');
  
  var Constants = require('../utils/constants.jsx');
  var ActionTypes = Constants.ActionTypes;
  
  var BrowserStore = require('../stores/browser_store.jsx');
  
  var CHANGE_EVENT = 'change';
  
  var ErrorStore = assign({}, EventEmitter.prototype, {
  
    emitChange: function() {
      this.emit(CHANGE_EVENT);
    },
  
    addChangeListener: function(callback) {
      this.on(CHANGE_EVENT, callback);
    },
  
    removeChangeListener: function(callback) {
      this.removeListener(CHANGE_EVENT, callback);
    },
    handledError: function() {
      BrowserStore.removeItem("last_error");
    },
    getLastError: function() {
      return BrowserStore.getItem('last_error');
    },
  
    _storeLastError: function(error) {
      BrowserStore.setItem("last_error", error);
    },
  });
  
  ErrorStore.dispatchToken = AppDispatcher.register(function(payload) {
    var action = payload.action;
    switch(action.type) {
      case ActionTypes.RECIEVED_ERROR:
        ErrorStore._storeLastError(action.err);
        ErrorStore.emitChange();
        break;
  
      default:
    }
  });
  
  module.exports = ErrorStore;
  
  
  