mirror of
https://github.com/Foundry376/Mailspring.git
synced 2025-02-23 15:46:28 +08:00
fix(tracking): Calling Actions.setMetadata from applyTransforms no longer works
This commit is contained in:
parent
b9f39cd86e
commit
65a60f2d96
3 changed files with 32 additions and 26 deletions
|
@ -381,31 +381,34 @@ class DraftStore
|
|||
# Run draft transformations registered by third-party plugins
|
||||
allowedFields = ['to', 'from', 'cc', 'bcc', 'subject', 'body']
|
||||
|
||||
Promise.each @extensions(), (ext) ->
|
||||
extApply = ext.applyTransformsToDraft
|
||||
extUnapply = ext.unapplyTransformsToDraft
|
||||
unless extApply and extUnapply
|
||||
return Promise.resolve()
|
||||
|
||||
session.changes.commit(noSyncback: true).then =>
|
||||
draft = session.draft().clone()
|
||||
Promise.resolve(extUnapply({draft})).then (cleaned) =>
|
||||
cleaned = draft if cleaned is 'unnecessary'
|
||||
Promise.resolve(extApply({draft: cleaned})).then (transformed) =>
|
||||
Promise.resolve(extUnapply({draft: transformed.clone()})).then (untransformed) =>
|
||||
untransformed = cleaned if untransformed is 'unnecessary'
|
||||
|
||||
if not _.isEqual(_.pick(untransformed, allowedFields), _.pick(cleaned, allowedFields))
|
||||
console.log("-- BEFORE --")
|
||||
console.log(draft.body)
|
||||
console.log("-- TRANSFORMED --")
|
||||
console.log(transformed.body)
|
||||
console.log("-- UNTRANSFORMED (should match BEFORE) --")
|
||||
console.log(untransformed.body)
|
||||
NylasEnv.reportError(new Error("An extension applied a tranform to the draft that it could not reverse."))
|
||||
session.changes.add(_.pick(transformed, allowedFields))
|
||||
Promise.each @extensions(), (ext) ->
|
||||
extApply = ext.applyTransformsToDraft
|
||||
extUnapply = ext.unapplyTransformsToDraft
|
||||
unless extApply and extUnapply
|
||||
return Promise.resolve()
|
||||
|
||||
.then =>
|
||||
session.changes.commit(noSyncback: true)
|
||||
Promise.resolve(extUnapply({draft})).then (cleaned) =>
|
||||
cleaned = draft if cleaned is 'unnecessary'
|
||||
Promise.resolve(extApply({draft: cleaned})).then (transformed) =>
|
||||
Promise.resolve(extUnapply({draft: transformed.clone()})).then (untransformed) =>
|
||||
untransformed = cleaned if untransformed is 'unnecessary'
|
||||
|
||||
if not _.isEqual(_.pick(untransformed, allowedFields), _.pick(cleaned, allowedFields))
|
||||
console.log("-- BEFORE --")
|
||||
console.log(draft.body)
|
||||
console.log("-- TRANSFORMED --")
|
||||
console.log(transformed.body)
|
||||
console.log("-- UNTRANSFORMED (should match BEFORE) --")
|
||||
console.log(untransformed.body)
|
||||
NylasEnv.reportError(new Error("An extension applied a tranform to the draft that it could not reverse."))
|
||||
draft = transformed
|
||||
|
||||
.then =>
|
||||
DatabaseStore.inTransaction (t) =>
|
||||
t.persistModel(draft)
|
||||
|
||||
_onRemoveFile: ({file, messageClientId}) =>
|
||||
@sessionForClientId(messageClientId).then (session) ->
|
||||
|
|
2
src/pro
2
src/pro
|
@ -1 +1 @@
|
|||
Subproject commit 1c66da339a724a1562354e07433170033f5c8638
|
||||
Subproject commit ec04ee3f59272cfa5de87ff465b2e675eafa19ad
|
|
@ -42,12 +42,12 @@ class WindowEventHandler
|
|||
ipcRenderer.on 'scroll-touch-end', ->
|
||||
window.dispatchEvent(new Event('scroll-touch-end'))
|
||||
|
||||
window.addEventListener 'beforeunload', =>
|
||||
window.onbeforeunload = =>
|
||||
# Don't hide the window here if we don't want the renderer process to be
|
||||
# throttled in case more work needs to be done before closing
|
||||
return @runUnloadCallbacks()
|
||||
|
||||
window.addEventListener 'unload', =>
|
||||
window.onunload = =>
|
||||
NylasEnv.storeWindowDimensions()
|
||||
NylasEnv.saveStateAndUnloadWindow()
|
||||
|
||||
|
@ -108,10 +108,12 @@ class WindowEventHandler
|
|||
@unloadCallbacks.push(callback)
|
||||
|
||||
runUnloadCallbacks: ->
|
||||
hasReturned = false
|
||||
|
||||
unloadCallbacksRunning = 0
|
||||
unloadCallbackComplete = =>
|
||||
unloadCallbacksRunning -= 1
|
||||
if unloadCallbacksRunning is 0
|
||||
if unloadCallbacksRunning is 0 and hasReturned
|
||||
@runUnloadFinished()
|
||||
|
||||
for callback in @unloadCallbacks
|
||||
|
@ -122,6 +124,7 @@ class WindowEventHandler
|
|||
console.warn "You registered an `onBeforeUnload` callback that does not return either exactly `true` or `false`. It returned #{returnValue}", callback
|
||||
|
||||
# In Electron, returning false cancels the close.
|
||||
hasReturned = true
|
||||
return (unloadCallbacksRunning is 0)
|
||||
|
||||
runUnloadFinished: ->
|
||||
|
|
Loading…
Reference in a new issue