             is_equal: (a, b) => (a - 0) == (b - 0)
         @syncdb.save()
 
+    set_show_history: (message, is_history) =>
+        if not @syncdb?
+            # TODO: give an error or try again later?
+            return
+        author_id = @redux.getStore('account').get_account_id()
+
+        if is_history
+            show_history = message.get('show_history').set(author_id, 'true')
+        else
+            show_history = message.get('show_history').remove(author_id)
+
+        @syncdb.update
+            set :
+                show_history : show_history.toJS()
+            where :
+                date: message.get('date')
+            is_equal: (a, b) => (a - 0) == (b - 0)
+        @syncdb.save()
+
     set_to_last_input: =>
         @setState(input:@redux.getStore(@name).get('last_sent'))
 
     set_input: (input) =>
         @setState(input:input)
+
+    #set_edited_input: (edited_input) =>
+    #    @setState(edited_input:edited_input)
 
     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 = {}

                            placeholder = {'Type a message...'}
                            onClick     = {@mark_as_read}
                            onChange    = {(value)=>@props.actions.set_input(@refs.input.getValue())}
                            style       = {@chat_input_style}
                            />
                    </Col>


    propTypes:
        message        : rtypes.object.isRequired  # immutable.js message object
        history        : rtypes.array
        history_author : rtypes.array
        account_id     : rtypes.string.isRequired
        sender_name    : rtypes.string
        editor_name    : rtypes.string
