Remove PerformSendActionTask in favor of immediate local execution

This commit is contained in:
Ben Gotow 2017-06-28 13:59:50 -07:00
parent 11f19ae648
commit 9ed627f6b0
5 changed files with 19 additions and 93 deletions

View file

@ -28,7 +28,7 @@ class SendActionButton extends React.Component {
_onSendWithAction = (sendAction) => {
const {isValidDraft, draft} = this.props
if (isValidDraft()) {
Actions.sendDraft(draft.id, sendAction.configKey)
Actions.sendDraft(draft.headerMessageId, sendAction.configKey)
}
}

View file

@ -13,10 +13,9 @@ SyncbackActivity = require("./syncback-activity").default
AccountStore,
FolderSyncProgressStore,
TaskQueue,
PerformSendActionTask,
SendDraftTask} = require 'nylas-exports'
SEND_TASK_CLASSES = [PerformSendActionTask, SendDraftTask]
SEND_TASK_CLASSES = [SendDraftTask]
class ActivitySidebar extends React.Component
@displayName: 'ActivitySidebar'

View file

@ -8,7 +8,6 @@ import DatabaseStore from './database-store';
import SendActionsStore from './send-actions-store';
import FocusedContentStore from './focused-content-store';
import BaseDraftTask from '../tasks/base-draft-task';
import PerformSendActionTask from '../tasks/perform-send-action-task';
import SyncbackDraftTask from '../tasks/syncback-draft-task';
import DestroyDraftTask from '../tasks/destroy-draft-task';
import Thread from '../models/thread';
@ -58,7 +57,6 @@ class DraftStore extends NylasStore {
this.listenTo(Actions.ensureDraftSynced, this._onEnsureDraftSynced);
this.listenTo(Actions.sendDraft, this._onSendDraft);
this.listenTo(Actions.destroyDraft, this._onDestroyDraft);
this.listenTo(Actions.removeFile, this._onRemoveFile);
NylasEnv.onBeforeUnload(this._onBeforeUnload);
@ -369,40 +367,26 @@ class DraftStore extends NylasStore {
});
}
_onSendDraft = (headerMessageId, sendActionKey = DefaultSendActionKey) => {
_onSendDraft = async (headerMessageId, sendActionKey = DefaultSendActionKey) => {
this._draftsSending[headerMessageId] = true;
return this.sessionForClientId(headerMessageId).then((session) => {
return DraftHelpers.prepareDraftForSyncback(session)
.then(() => {
Actions.queueTask(new PerformSendActionTask(headerMessageId, sendActionKey));
this._doneWithSession(session);
if (NylasEnv.config.get("core.sending.sounds")) {
SoundRegistry.playSound('hit-send');
}
if (NylasEnv.isComposerWindow()) {
NylasEnv.close();
}
});
});
}
__testExtensionTransforms() {
const headerMessageId = NylasEnv.getWindowProps().headerMessageId;
return this.sessionForClientId(headerMessageId).then((session) => {
return this._prepareForSyncback(session).then(() => {
window.__draft = session.draft();
console.log("Done transforming draft. Available at window.__draft");
});
});
}
const sendAction = SendActionsStore.sendActionForKey(sendActionKey)
if (!sendAction) {
throw new Error(`Cant find send action ${sendActionKey} `);
}
_onRemoveFile = ({file, headerMessageId}) => {
return this.sessionForClientId(headerMessageId).then((session) => {
let files = _.clone(session.draft().files) || [];
files = _.reject(files, (f) => f.id === file.id);
session.changes.add({files});
return session.changes.commit();
});
if (NylasEnv.config.get("core.sending.sounds")) {
SoundRegistry.playSound('hit-send');
}
const session = await this.sessionForClientId(headerMessageId);
await DraftHelpers.prepareDraftForSyncback(session)
await sendAction.performSendAction({draft: session.draft()});
this._doneWithSession(session);
if (NylasEnv.isComposerWindow()) {
NylasEnv.close();
}
}
_onDidCancelSendAction = ({headerMessageId}) => {

View file

@ -1,56 +0,0 @@
import Task from './task';
import Actions from '../actions';
import BaseDraftTask from './base-draft-task';
import TaskQueue from '../stores/task-queue';
import SendActionsStore from '../stores/send-actions-store';
class PerformSendActionTask extends BaseDraftTask {
constructor(headerMessageId, sendActionKey) {
super(headerMessageId)
this._sendActionKey = sendActionKey
this._sendTimer = null
this._taskResolve = () => {}
}
label() {
return "Sending message";
}
shouldDequeueOtherTask(otherTask) {
return (
otherTask instanceof PerformSendActionTask &&
this.headerMessageId === otherTask.headerMessageId
)
}
performLocal() {
if (!this.headerMessageId) {
const errMsg = `Attempt to call ${this.constructor.name}.performLocal without a headerMessageId`;
return Promise.reject(new Error(errMsg));
}
return Promise.resolve()
}
cancel() {
const {id: taskId, headerMessageId} = this
clearTimeout(this._sendTimer)
Actions.didCancelSendAction({taskId, headerMessageId})
this._taskResolve(Task.Status.Continue)
}
_performSendAction() {
return this.refreshDraftReference()
.then((draft) => {
const sendAction = SendActionsStore.sendActionForKey(this._sendActionKey)
if (!sendAction) {
return Promise.reject(new Error(`Cant find send action ${this._sendActionKey} `))
}
const {performSendAction} = sendAction
return performSendAction({draft})
})
}
}
export default PerformSendActionTask

View file

@ -115,7 +115,6 @@ lazyLoadAndRegisterTask(`SyncbackEventTask`, 'syncback-event-task');
lazyLoadAndRegisterTask(`DestroyCategoryTask`, 'destroy-category-task');
lazyLoadAndRegisterTask(`SyncbackCategoryTask`, 'syncback-category-task');
lazyLoadAndRegisterTask(`SyncbackMetadataTask`, 'syncback-metadata-task');
lazyLoadAndRegisterTask(`PerformSendActionTask`, 'perform-send-action-task');
lazyLoadAndRegisterTask(`ReprocessMailRulesTask`, 'reprocess-mail-rules-task');
lazyLoadAndRegisterTask(`SendFeatureUsageEventTask`, 'send-feature-usage-event-task');
lazyLoadAndRegisterTask(`EnsureMessageInSentFolderTask`, 'ensure-message-in-sent-folder-task');