       # config.set('poi.notify.morale.audio', audio_morale)
 
     handleShipChange: (e) ->
-      if e && e.target.value != @state.secretary
-        ship = e.target.value
-        @setState
-          secretary: ship
-        config.set('plugin.secretary.ship', ship)
-        @updateNotifyConfig(ship)
+      ship = parseInt(e.target.value)
+      return unless ship != NaN
+      @setState
+        secretary: ship
+      config.set('plugin.secretary.ship', ship)
+      @updateNotifyConfig(ship)
 
     handleAudition: (type) ->
       audio = null

        <Grid>
          <Col xs=12>
            <Input type="select" value={@state.secretary} onChange={@handleShipChange}>
              <option key={0} value={null}>当前秘书舰</option>
              {
                for ship, i in @state.ships
                  continue unless ship?

     * @param {number} ship id in window.$ships
     ###
    updateNotifyConfig: (ship_id) ->
      server = SERVERS[Math.floor(Math.random() * SERVERS.length)]
      return unless server

      # ship_id 0 represents using flagship from fleet 1
      if ship_id == 0
        {_decks, _ships} = window
        ship = _decks[0]?.api_ship[0]
        if ship and ship > 0
