Mailspring/internal_packages/send-and-archive/lib/send-and-archive-extension.es6
Evan Morikawa a20b979208 feat(analytics): add analytics for change mail tasks
Summary:
Adds the following new events:

- Threads Moved to Folder
  - isArchive
  - source
  - folderType
  - folderDisplayName
  - numThreads
  - numMessages
  - description
  - isUndo

- Threads Changed Labels
  - isArchive
  - source
  - labelTypesToAdd
  - labelTypesToRemove
  - labelDisplayNamesToAdd
  - labelDisplayNamesToRemove
  - numThreads
  - numMessages
  - description
  - isUndo

- Threads Starred
  - source
  - numThreads
  - description
  - isUndo

- Threads Unstarred
  - source
  - numThreads
  - description
  - isUndo

- Threads Marked as Read
  - source
  - numThreads
  - description
  - isUndo

- Threads Marked as Unread
  - source
  - numThreads
  - description
  - isUndo

Each new action has a "source" property that's one of the following:
- Category Picker: New Category
- Category Picker: Existing Category
- Toolbar Button: Message List
- Toolbar Button: Thread List
- Send and Archive
- Context Menu: Thread List
- Thread List Icon
- Quick Actions: Thread List
- Swipe
- Keyboard Shortcut
- Dragged Out of List
- Snooze Move
- Important Icon
- Label Remove Icon
- Thread Selected
- Mail Rules
- Dragged Into List

Test Plan: manual

Reviewers: juan

Reviewed By: juan

Differential Revision: https://phab.nylas.com/D3760
2017-01-24 12:22:33 -05:00

32 lines
745 B
JavaScript

import {
Actions,
Thread,
DatabaseStore,
TaskFactory,
SendDraftTask,
} from 'nylas-exports'
export const name = 'SendAndArchiveExtension'
export function sendActions() {
return [{
title: 'Send and Archive',
iconUrl: 'nylas://send-and-archive/images/composer-archive@2x.png',
isAvailableForDraft({draft}) {
return draft.threadId != null
},
performSendAction({draft}) {
Actions.queueTask(new SendDraftTask(draft.clientId))
return DatabaseStore.modelify(Thread, [draft.threadId])
.then((threads) => {
const tasks = TaskFactory.tasksForArchiving({
source: "Send and Archive",
threads: threads,
})
Actions.queueTasks(tasks)
})
},
}]
}