From 5bd70921991a6467c27c5720deba1869860f6d6f Mon Sep 17 00:00:00 2001 From: Evan Morikawa Date: Thu, 8 Dec 2016 17:19:21 -0800 Subject: [PATCH] feat(links): forward name and message in links --- src/flux/actions.es6 | 1 + src/package-manager.coffee | 25 ++++++++++++++++++------- src/pro | 2 +- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/flux/actions.es6 b/src/flux/actions.es6 index 919231fbf..026f2bf39 100644 --- a/src/flux/actions.es6 +++ b/src/flux/actions.es6 @@ -552,6 +552,7 @@ class Actions { static toggleAccount = ActionScopeWindow; static notifyPluginsChanged = ActionScopeGlobal; + static notifyPluginsChangedViaUrl = ActionScopeGlobal; } diff --git a/src/package-manager.coffee b/src/package-manager.coffee index 70e570eb1..15670f42f 100644 --- a/src/package-manager.coffee +++ b/src/package-manager.coffee @@ -59,7 +59,7 @@ class PackageManager @packageActivators = [] @registerPackageActivator(this, ['nylas']) - ipcRenderer.on("changePluginStateFromUrl", @_onChangePluginState) + ipcRenderer.on("changePluginStateFromUrl", @_onChangePluginStateFromUrl) pluginIdFor: (packageName) => @@ -70,7 +70,7 @@ class PackageManager @cachedPackagePluginIds[cacheKey] = @_resolvePluginIdFor(packageName, env) return @cachedPackagePluginIds[cacheKey] - _onChangePluginState: (event, urlToOpen = "") => + _onChangePluginStateFromUrl: (event, urlToOpen = "") => {query} = url.parse(urlToOpen, true) disabled = NylasEnv.config.get('core.disabledPackages') ? [] turnedOn = [] @@ -78,18 +78,29 @@ class PackageManager for name, state of query continue if /-displayName/gi.test(name) displayName = query["#{name}-displayName"] ? name + message = query["#{name}-message"] ? null if state is "off" and name not in disabled - turnedOff.push(displayName) + turnedOff.push({name, displayName, message}) if name not in disabled then disabled.push(name) else if state is "on" - turnedOn.push(displayName) + turnedOn.push({name, displayName, message}) disabled = _.without(disabled, name) NylasEnv.config.set('core.disabledPackages', disabled) if NylasEnv.isMainWindow() then NylasEnv.focus() if turnedOn.length > 0 then @_notifyPluginsChanged(turnedOn, "enabled") if turnedOff.length > 0 then @_notifyPluginsChanged(turnedOff, "disabled") - _notifyPluginsChanged: (names, dir) => + setTimeout(() => + # This lets us enable features in plugins after it's been enabled + # via a url, but after the the showMessageBox modal has come up. + Actions.notifyPluginsChangedViaUrl({turnedOn, turnedOff}) + , 350) + + _notifyPluginsChanged: (nameData, dir) => + names = _.pluck(nameData, "displayName") + messages = _.compact(_.pluck(nameData, "message")).map((m) => decodeURIComponent(m)) + if messages.length > 0 + msgText = "\n\n" + messages.join("\n\n") if names.length >= 2 last = names[names.length - 1] names[names.length - 1] = "and #{last}" @@ -99,10 +110,10 @@ class PackageManager remote.dialog.showMessageBox(remote.getCurrentWindow(), { type: 'info', message: "#{pluginText} #{dir}", - detail: "#{names.join(", ")} #{has} been #{dir}" + detail: "#{names.join(", ")} #{has} been #{dir}#{msgText}" buttons: ['Thanks'], }) - , 500 + , 300 _resolvePluginIdFor: (packageName, env) => metadata = @loadedPackages[packageName]?.metadata diff --git a/src/pro b/src/pro index 6460d6faa..079eb8b1c 160000 --- a/src/pro +++ b/src/pro @@ -1 +1 @@ -Subproject commit 6460d6faa1d895f07ba3d3892a67ad41ddb04c09 +Subproject commit 079eb8b1c8c6d3ba9db4c01da4f56360c0dab8b1