hunk.code_window:         draft.uploadsInProgress = uploadsInProgress;
           PostStore.storeCurrentDraft(draft);
           const enableSendButton = this.handleEnableSendButton(this.state.message, fileInfos);
           this.setState({fileInfos, uploadsInProgress, enableSendButton});
       }
       componentWillMount() {
  
hunk.labels: keep keep keep keep add keep keep keep
hunk.after_edit:         this.handleFileUploadChange();
  
hunk.file_path: webapp/components/create_post.jsx
hunk.type: add
file: // Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
  // See License.txt for license information.
  
  package api
  
  import (
  	"github.com/mattermost/platform/app"
  	"github.com/mattermost/platform/model"
  )
  
  type LogoutProvider struct {
  }
  
  const (
  	CMD_LOGOUT = "logout"
  )
  
  func init() {
  	RegisterCommandProvider(&LogoutProvider{})
  }
  
  func (me *LogoutProvider) GetTrigger() string {
  	return CMD_LOGOUT
  }
  
  func (me *LogoutProvider) GetCommand(c *Context) *model.Command {
  	return &model.Command{
  		Trigger:          CMD_LOGOUT,
  		AutoComplete:     true,
  		AutoCompleteDesc: c.T("api.command_logout.desc"),
  		AutoCompleteHint: "",
  		DisplayName:      c.T("api.command_logout.name"),
  	}
  }
  
  func (me *LogoutProvider) DoCommand(c *Context, args *model.CommandArgs, message string) *model.CommandResponse {
  	FAIL := &model.CommandResponse{ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL, Text: c.T("api.command_logout.fail_message")}
  	SUCCESS := &model.CommandResponse{GotoLocation: "/login"}
  
  	// We can't actually remove the user's cookie from here so we just dump their session and let the browser figure it out
  	if c.Session.Id != "" {
  		if err := app.RevokeSessionById(c.Session.Id); err != nil {
  			return FAIL
  		}
  		return SUCCESS
  	}
  	return FAIL
  }
  