           onClick: @editStart
 
 
-  renderReplyButton: ({ text, icon, extraProps = {} }) =>
-    props = _.extend
-      disabled: !@validPost() || @state.posting?
-      onClick: @throttledPost,
-      extraProps
-
+  renderReplyButton: (action) =>
     div className: "#{bn}__action",
       el BigButton,
-        text: text
-        # wobbles if using spinner
-        icon: if @state.posting then '_spinner' else icon
-        props: props
+        text: osu.trans("common.buttons.#{action}")
+        icon: if @state.posting == action then '_spinner' else ACTION_ICONS[action]
+        props:
+          disabled: !@validPost() || @state.posting?
+          onClick: @throttledPost
+          'data-action': action
 
 
   canResolve: =>

    LoadingOverlay.show()

    @postXhr?.abort()
    @setState posting: true

    resolved = switch event.currentTarget.dataset.action
               when 'resolve' then true
               when 'reopen' then false
               else @props.discussion.resolved

    @postXhr = $.ajax laroute.route('beatmap-discussion-posts.store'),

bn = 'beatmap-discussion-post'

class BeatmapDiscussions.NewReply extends React.PureComponent
  ACTION_ICONS =
    reply_resolve: 'fas fa-check'
    reply_reopen: 'fas fa-exclamation-circle'
    reply: 'fas fa-reply'

  constructor: (props) ->
    super props

