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: -> _refreshDescription: ->
if @model.item?.description?.length > 0 if @model.item?.description?.length > 0
@_descriptionController.model = @model.item.description @_descriptionController.model = @model.item.description
@_descriptionController.resetToDefaultState()
@show @$descriptionSection @show @$descriptionSection
else if @user? else if @user?
@show @$descriptionSection @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. # saved however is appropriate. The promise must reject if saving failed for some reason.
@_endEditing = options.endEditing @_endEditing = options.endEditing
# Public Methods ###############################################################################
resetToDefaultState: ->
if @model?
@state = State.viewing
else
if @editable?
@state = State.creating
else
@state = State.waiting
# Event Methods ################################################################################ # Event Methods ################################################################################
onCancelClicked: (event)-> onCancelClicked: (event)->
event.preventDefault() event.preventDefault()
@model = @_originalModel @model = @_originalModel
@_resetToDefaultState() @resetToDefaultState()
onEditClicked: (event)-> onEditClicked: (event)->
event.preventDefault() event.preventDefault()
@@ -69,7 +80,7 @@ module.exports = class MarkdownSectionController extends BaseController
.catch (e)=> .catch (e)=>
logger.warning "cannot begin editing: #{e.stack}" logger.warning "cannot begin editing: #{e.stack}"
@state = State.appologizing @state = State.appologizing
w(true).delay(@confirmDuration).then => @_resetToDefaultState() w(true).delay(@confirmDuration).then => @resetToDefaultState()
onPreviewClicked: (event)-> onPreviewClicked: (event)->
event.preventDefault() event.preventDefault()
@@ -82,7 +93,6 @@ module.exports = class MarkdownSectionController extends BaseController
onSaveClicked: (event)-> onSaveClicked: (event)->
event.preventDefault() event.preventDefault()
@model = @$textarea.val()
@state = State.waiting @state = State.waiting
@_endEditing() @_endEditing()
.then => .then =>
@@ -95,7 +105,8 @@ module.exports = class MarkdownSectionController extends BaseController
@state = State.viewing @state = State.viewing
onTextChanged: (event)-> onTextChanged: (event)->
@tryRefresh() event.preventDefault()
@model = @$textarea.val()
# Property Methods ############################################################################# # Property Methods #############################################################################
@@ -127,7 +138,7 @@ module.exports = class MarkdownSectionController extends BaseController
@$textarea = @$('textarea') @$textarea = @$('textarea')
@$title = @$('h2') @$title = @$('h2')
@_resetToDefaultState() @resetToDefaultState()
super super
@@ -139,7 +150,6 @@ module.exports = class MarkdownSectionController extends BaseController
super super
onWillChangeModel: (oldModel, newModel)-> onWillChangeModel: (oldModel, newModel)->
_.defer => @_resetToDefaultState()
@$textarea.val newModel @$textarea.val newModel
super oldModel, newModel super oldModel, newModel
@@ -172,14 +182,14 @@ module.exports = class MarkdownSectionController extends BaseController
return result return result
_updateSizer: -> _updateSizer: ->
text = @$textarea.val() text = @model
if @model? if @model?
text = text.replace /\n/g, '<br>' text = text.replace /\n/g, '<br>'
@$sizer.html text @$sizer.html text
_updatePreview: -> _updatePreview: ->
text = @$textarea.val() text = @model
if @model? if @model?
text = @_convertWikiLinks text text = @_convertWikiLinks text
text = @_convertImageLinks text text = @_convertImageLinks text
@@ -187,16 +197,6 @@ module.exports = class MarkdownSectionController extends BaseController
@$markdownPanel.html text @$markdownPanel.html text
_resetToDefaultState: ->
if @model?
@state = State.viewing
else
if @editable?
@state = State.creating
else
@state = State.waiting
_updateStateVisibility: -> _updateStateVisibility: ->
return if @_lastUpdatedState is @state return if @_lastUpdatedState is @state
@_lastUpdatedState = @state @_lastUpdatedState = @state