mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-11-12 12:40:08 +08:00
116d375ff7
Summary: WIP: This is a quick patch for Drew to make extensions async We'll need to think through the upgrade/deprecation plan to roll out async extensions across all of our APIs. Test Plan: TODO Reviewers: drew, evan, bengotow Reviewed By: bengotow Differential Revision: https://phab.nylas.com/D2392
37 lines
1.6 KiB
CoffeeScript
37 lines
1.6 KiB
CoffeeScript
{ComposerExtension} = require 'nylas-exports'
|
|
request = require 'request'
|
|
post = Promise.promisify(request.post, multiArgs: true)
|
|
|
|
class AvailabilityComposerExtension extends ComposerExtension
|
|
|
|
# When subclassing the ComposerExtension, you can add your own custom logic
|
|
# to execute before a draft is sent in the @finalizeSessionBeforeSending
|
|
# method. Here, we're registering the events before we send the draft.
|
|
@finalizeSessionBeforeSending: (session) ->
|
|
body = session.draft().body
|
|
participants = session.draft().participants()
|
|
sender = session.draft().from
|
|
matches = (/data-quick-schedule="(.*)?" style/).exec body
|
|
if matches?
|
|
json = atob(matches[1])
|
|
data = JSON.parse(json)
|
|
data.attendees = []
|
|
data.attendees = participants.map (p) ->
|
|
name: p.name, email: p.email, isSender: p.isMe()
|
|
serverUrl = "https://quickschedule.herokuapp.com/register-events"
|
|
post({url: serverUrl, body: JSON.stringify(data)})
|
|
.then (args) =>
|
|
data = args[1]
|
|
return data
|
|
.catch (error) ->
|
|
dialog = require('remote').require('dialog')
|
|
dialog.showErrorBox('Error creating QuickSchedule event',
|
|
"There was a problem connecting to the QuickSchedule server. Make sure you're connected to the internet and "+
|
|
"try sending again. If problems persist, contact the N1 team (using the blue question icon at the bottom right "+
|
|
"of your inbox) and we'll get right on it!")
|
|
Promise.reject(error)
|
|
else
|
|
Promise.resolve()
|
|
|
|
|
|
module.exports = AvailabilityComposerExtension
|