     set_input: (input) =>
         @setState(input:input)
 
+    # Doesn't work
+    change_message: (message, new_content) =>
+        #key = message.get('date')
+        #console.log("CHANGE MESSAGE", key, new_content)
+
+        #@mergeState(messages:
+        #    "#{key}":
+        #        payload:
+        #            content:new_content)
+
     save_scroll_state: (position, height, offset) =>
         # height == 0 means chat room is not rendered
         if height != 0
             @setState(saved_position:position, height:height, offset:offset)
+
 
 # boilerplate setting up actions, stores, sync'd file, etc.
 syncdbs = {}

        show_avatar    : rtypes.bool
        is_prev_sender : rtypes.bool
        is_next_sender : rtypes.bool

    shouldComponentUpdate: (next) ->
        return @props.message != next.message or

               @props.show_avatar != next.show_avatar or
               @props.is_prev_sender != next.is_prev_sender or
               @props.is_next_sender != next.is_next_sender or
               @state.show_edit_input != next.show_edit_input or
               ((not @props.is_prev_sender) and (@props.sender_name != next.sender_name))

    sender_is_viewer: ->
