Created
January 5, 2017 21:12
-
-
Save jasonLaster/854a5f3a2f0db707522c830ea906ab27 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/packages/devtools-client-adapters/src/chrome.js b/packages/devtools-client-adapters/src/chrome.js | |
index aac683c..9d140c3 100644 | |
--- a/packages/devtools-client-adapters/src/chrome.js | |
+++ b/packages/devtools-client-adapters/src/chrome.js | |
@@ -44,6 +44,10 @@ function connectClient() { | |
return Promise.resolve(createTabs([])); | |
} | |
+ return getTabs(); | |
+} | |
+ | |
+async function getTabs() { | |
return CDP.List({ | |
port: getValue("chrome.port"), | |
host: getValue("chrome.host") | |
diff --git a/packages/devtools-client-adapters/src/firefox.js b/packages/devtools-client-adapters/src/firefox.js | |
index ec743bc..b4f7e35 100644 | |
--- a/packages/devtools-client-adapters/src/firefox.js | |
+++ b/packages/devtools-client-adapters/src/firefox.js | |
@@ -52,16 +52,19 @@ function createTabs(tabs: TabPayload[]): Tab[] { | |
}); | |
} | |
-function connectClient() { | |
+async function connectClient() { | |
const useProxy = !getValue("firefox.webSocketConnection"); | |
const firefoxHost = getValue( | |
useProxy ? "firefox.proxyHost" : "firefox.webSocketHost" | |
); | |
+ const tabs = await getTabs(); | |
const socket = new WebSocket(`ws://${firefoxHost}`); | |
const transport = useProxy ? | |
new DebuggerTransport(socket) : new WebsocketTransport(socket); | |
+} | |
+function getTabs() { | |
return new Promise((resolve, reject) => { | |
debuggerClient = new DebuggerClient(transport); | |
debuggerClient.connect().then(() => { | |
diff --git a/packages/devtools-launchpad/src/actions/tabs.js b/packages/devtools-launchpad/src/actions/tabs.js | |
index 4a9b691..d4579fe 100644 | |
--- a/packages/devtools-launchpad/src/actions/tabs.js | |
+++ b/packages/devtools-launchpad/src/actions/tabs.js | |
@@ -25,9 +25,13 @@ const constants = require("../constants"); | |
* @returns {TabAction} with type constants.ADD_TABS and tabs as value | |
*/ | |
function newTabs(tabs) { | |
- return { | |
- type: constants.ADD_TABS, | |
- value: tabs | |
+ return ({ getState, dispatch }) => { | |
+ // check for duplicate tabs | |
+ // maybe map will just handle it! | |
+ return dispatch({ | |
+ type: constants.ADD_TABS, | |
+ value: tabs | |
+ }); | |
}; | |
} | |
diff --git a/packages/devtools-launchpad/src/index.js b/packages/devtools-launchpad/src/index.js | |
index 7a47969..db166c6 100644 | |
--- a/packages/devtools-launchpad/src/index.js | |
+++ b/packages/devtools-launchpad/src/index.js | |
@@ -93,19 +93,7 @@ function getTargetFromQuery() { | |
return null; | |
} | |
-function bootstrap(React, ReactDOM, App, appActions, appStore) { | |
- const connTarget = getTargetFromQuery(); | |
- if (connTarget) { | |
- return startDebugging(connTarget, appActions) | |
- .then(({ tab, client }) => { | |
- debugGlobal("client", client.clientCommands); | |
- renderRoot(React, ReactDOM, App, appStore); | |
- return { tab, connTarget, client }; | |
- }); | |
- } | |
- | |
- const { store, actions, LaunchpadApp } = initApp(); | |
- renderRoot(React, ReactDOM, LaunchpadApp, store); | |
+function getTabs(actions) { | |
chrome.connectClient().then(tabs => { | |
actions.newTabs(tabs); | |
}).catch(e => { | |
@@ -122,6 +110,24 @@ function bootstrap(React, ReactDOM, App, appActions, appStore) { | |
}); | |
} | |
+function bootstrap(React, ReactDOM, App, appActions, appStore) { | |
+ const connTarget = getTargetFromQuery(); | |
+ if (connTarget) { | |
+ return startDebugging(connTarget, appActions) | |
+ .then(({ tab, client }) => { | |
+ debugGlobal("client", client.clientCommands); | |
+ renderRoot(React, ReactDOM, App, appStore); | |
+ return { tab, connTarget, client }; | |
+ }); | |
+ } | |
+ | |
+ const { store, actions, LaunchpadApp } = initApp(); | |
+ renderRoot(React, ReactDOM, LaunchpadApp, store); | |
+ | |
+ getTabs(actions); | |
+ setInterval(() => getTabs(actions), 1000); | |
+} | |
+ | |
module.exports = { | |
bootstrap, | |
renderRoot, |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment