Skip to content

Instantly share code, notes, and snippets.

@jasonLaster
Created January 5, 2017 21:12
Show Gist options
  • Save jasonLaster/854a5f3a2f0db707522c830ea906ab27 to your computer and use it in GitHub Desktop.
Save jasonLaster/854a5f3a2f0db707522c830ea906ab27 to your computer and use it in GitHub Desktop.
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