Bug: Ensure state happen at the correct times

This commit is contained in:
Andrew Miner
2015-05-13 12:47:37 -07:00
parent 0def10bb63
commit 2b0584935c
2 changed files with 19 additions and 18 deletions
@@ -183,6 +183,7 @@ module.exports = class ItemPageController extends PageController
_refreshDescription: ->
if @model.item?.description?.length > 0
@_descriptionController.model = @model.item.description
@_descriptionController.resetToDefaultState()
@show @$descriptionSection
else if @user?
@show @$descriptionSection
@@ -50,12 +50,23 @@ module.exports = class MarkdownSectionController extends BaseController
# saved however is appropriate. The promise must reject if saving failed for some reason.
@_endEditing = options.endEditing
# Public Methods ###############################################################################
resetToDefaultState: ->
if @model?
@state = State.viewing
else
if @editable?
@state = State.creating
else
@state = State.waiting
# Event Methods ################################################################################
onCancelClicked: (event)->
event.preventDefault()
@model = @_originalModel
@_resetToDefaultState()
@resetToDefaultState()
onEditClicked: (event)->
event.preventDefault()
@@ -69,7 +80,7 @@ module.exports = class MarkdownSectionController extends BaseController
.catch (e)=>
logger.warning "cannot begin editing: #{e.stack}"
@state = State.appologizing
w(true).delay(@confirmDuration).then => @_resetToDefaultState()
w(true).delay(@confirmDuration).then => @resetToDefaultState()
onPreviewClicked: (event)->
event.preventDefault()
@@ -82,7 +93,6 @@ module.exports = class MarkdownSectionController extends BaseController
onSaveClicked: (event)->
event.preventDefault()
@model = @$textarea.val()
@state = State.waiting
@_endEditing()
.then =>
@@ -95,7 +105,8 @@ module.exports = class MarkdownSectionController extends BaseController
@state = State.viewing
onTextChanged: (event)->
@tryRefresh()
event.preventDefault()
@model = @$textarea.val()
# Property Methods #############################################################################
@@ -127,7 +138,7 @@ module.exports = class MarkdownSectionController extends BaseController
@$textarea = @$('textarea')
@$title = @$('h2')
@_resetToDefaultState()
@resetToDefaultState()
super
@@ -139,7 +150,6 @@ module.exports = class MarkdownSectionController extends BaseController
super
onWillChangeModel: (oldModel, newModel)->
_.defer => @_resetToDefaultState()
@$textarea.val newModel
super oldModel, newModel
@@ -172,14 +182,14 @@ module.exports = class MarkdownSectionController extends BaseController
return result
_updateSizer: ->
text = @$textarea.val()
text = @model
if @model?
text = text.replace /\n/g, '<br>'
@$sizer.html text
_updatePreview: ->
text = @$textarea.val()
text = @model
if @model?
text = @_convertWikiLinks text
text = @_convertImageLinks text
@@ -187,16 +197,6 @@ module.exports = class MarkdownSectionController extends BaseController
@$markdownPanel.html text
_resetToDefaultState: ->
if @model?
@state = State.viewing
else
if @editable?
@state = State.creating
else
@state = State.waiting
_updateStateVisibility: ->
return if @_lastUpdatedState is @state
@_lastUpdatedState = @state