hunk.code_window:     }
       componentDidMount() {
           ReactionStore.addChangeListener(this.props.post.id, this.handleReactionsChanged);
           if (this.props.post.has_reactions) {
               AsyncClient.listReactions(this.props.post.channel_id, this.props.post.id);
  
hunk.labels: keep keep keep add keep keep keep
hunk.after_edit:         EmojiStore.addChangeListener(this.handleEmojisChanged);
  
hunk.file_path: webapp/components/post_view/components/reaction_list_container.jsx
hunk.type: add
file: // Copyright 2012 The Go Authors. All rights reserved.
  // Use of this source code is governed by a BSD-style
  // license that can be found in the LICENSE file.
  
  // +build !plan9
  
  // Package fsnotify provides a platform-independent interface for file system notifications.
  package fsnotify
  
  import (
  	"bytes"
  	"fmt"
  )
  
  // Event represents a single file system notification.
  type Event struct {
  	Name string // Relative path to the file or directory.
  	Op   Op     // File operation that triggered the event.
  }
  
  // Op describes a set of file operations.
  type Op uint32
  
  // These are the generalized file operations that can trigger a notification.
  const (
  	Create Op = 1 << iota
  	Write
  	Remove
  	Rename
  	Chmod
  )
  
  func (op Op) String() string {
  	// Use a buffer for efficient string concatenation
  	var buffer bytes.Buffer
  
  	if op&Create == Create {
  		buffer.WriteString("|CREATE")
  	}
  	if op&Remove == Remove {
  		buffer.WriteString("|REMOVE")
  	}
  	if op&Write == Write {
  		buffer.WriteString("|WRITE")
  	}
  	if op&Rename == Rename {
  		buffer.WriteString("|RENAME")
  	}
  	if op&Chmod == Chmod {
  		buffer.WriteString("|CHMOD")
  	}
  	if buffer.Len() == 0 {
  		return ""
  	}
  	return buffer.String()[1:] // Strip leading pipe
  }
  
  // String returns a string representation of the event in the form
  // "file: REMOVE|WRITE|..."
  func (e Event) String() string {
  	return fmt.Sprintf("%q: %s", e.Name, e.Op.String())
  }
  