         Meteor.call 'tagNew', message.group, tag, 'boolean'
         Meteor.call 'messageUpdate', message._id,
           tags: Object.assign {}, message.tags ? {}, {"#{escapeTag tag}": true}
-    dropdownToggle e
+    addTagRef.current.click()
     false  ## prevent form from submitting
 
   <div className="panel message #{messagePanelClass message, editing}" data-message={message._id} id={message._id} ref={ref}>

  , [message._id]
  ref = useRef()
  messageBodyRef = useRef()

  ## Support dragging rendered attachment like dragging message itself
  messageFileRef = useRef()

ThreadPrivacy = React.memo ({message, tabindex}) ->
  onPrivacy = (e) ->
    e.preventDefault()
    Meteor.call 'threadPrivacy', message._id,
      privacyOptionsByCode[e.target.getAttribute 'data-code'].list

  <Dropdown className="btn-group">
    <Dropdown.Toggle variant="warning" tabIndex={tabindex}>
      {"Thread Privacy "}
      <span className="caret"/>
    </Dropdown.Toggle>
    <Dropdown.Menu>
      {for privacy in privacyOptions
        active = _.isEqual _.sortBy(privacy.list),
                           _.sortBy(message.threadPrivacy ? ['public'])
        <li key={privacy.code} className="threadPrivacy #{if active then 'active' else ''}">
          <Dropdown.Item href="#" data-code={privacy.code} onClick={onPrivacy}>
            {privacy.display}
          </Dropdown.Item>
        </li>
      }
    </Dropdown.Menu>
  </Dropdown>

EmojiButtons = React.memo ({message, can}) ->
  emojis = useTracker ->
