Skip to content

Commit cd29e64

Browse files
committed
Remove detection state event bus from tabdata
1 parent aaed0d4 commit cd29e64

File tree

1 file changed

+30
-25
lines changed

1 file changed

+30
-25
lines changed

packages/extension/background/background.ts

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ type TabDataConfig = {
2020
forwardToClient: (message: bridge.ForwardPayload) => void
2121
}
2222

23-
type PostMessanger = {post: bridge.PostMessageFn; on: bridge.OnMessageFn}
24-
2523
class TabData {
2624

2725
connectListeners = new Set<
@@ -32,13 +30,23 @@ class TabData {
3230
debug.Debugger.OutputChannels>
3331
| null = null
3432

33+
popup_messanger: bridge.PortMessanger<debug.Debugger.InputChannels,
34+
debug.Debugger.OutputChannels>
35+
| null = null
36+
37+
detected_state: bridge.DetectionState = {
38+
Solid: false,
39+
SolidDev: false,
40+
Debugger: false,
41+
}
42+
3543
constructor(
3644
public id: number,
3745
// null when not connected with content-script
3846
public config: TabDataConfig | null,
3947
) {}
4048

41-
untilContentScriptConnect(): Promise<PostMessanger> {
49+
untilContentScriptConnect(): Promise<{post: bridge.PostMessageFn; on: bridge.OnMessageFn}> {
4250
return new Promise(resolve => {
4351
if (this.config) {
4452
resolve({post: this.config.toContent.bind(this), on: this.config.fromContent.bind(this)})
@@ -67,21 +75,6 @@ class TabData {
6775
bridge.emit(this.versionsBus, versions)
6876
this.versionsBus.clear()
6977
}
70-
71-
detected: bridge.DetectionState = {
72-
Solid: false,
73-
SolidDev: false,
74-
Debugger: false,
75-
}
76-
detectedListeners = new bridge.CallbackSet<[bridge.DetectionState]>()
77-
onDetected(fn: (state: bridge.DetectionState) => void) {
78-
fn(this.detected)
79-
this.detectedListeners.add(fn)
80-
}
81-
set_detected(state: bridge.DetectionState) {
82-
this.detected = state
83-
bridge.emit(this.detectedListeners, state)
84-
}
8578
}
8679

8780
const ACTIVE_TAB_QUERY = {active: true, currentWindow: true} as const
@@ -172,7 +165,10 @@ chrome.runtime.onConnect.addListener(async port => {
172165
})
173166

174167
// "DetectSolid" from content-script (realWorld)
175-
content_messanger.on('Detected', state => tab.set_detected(state))
168+
content_messanger.on('Detected', state => {
169+
tab.popup_messanger?.post('Detected', state)
170+
tab.detected_state = state
171+
})
176172

177173
port.onDisconnect.addListener(() => {
178174
tab.panel_messanger?.post('ResetPanel')
@@ -263,25 +259,34 @@ chrome.runtime.onConnect.addListener(async port => {
263259
}
264260
})
265261

262+
port.onDisconnect.addListener(() => {
263+
tab.panel_messanger = null
264+
content_messanger.post('DevtoolsClosed')
265+
})
266+
266267
break
267268
}
268269

269270
case bridge.ConnectionName.Popup: {
270-
const data = await getActiveTabData()
271-
if (data instanceof Error) {
272-
error(data)
271+
const tab = await getActiveTabData()
272+
if (tab instanceof Error) {
273+
error(tab)
273274
break
274275
}
275276
const popup_messanger = bridge.createPortMessanger(
276277
bridge.Place_Name.Background,
277278
bridge.Place_Name.Popup,
278279
port)
280+
tab.popup_messanger = popup_messanger
281+
282+
popup_messanger.post('Detected', tab.detected_state)
279283

280-
data.onVersions(v => {
284+
tab.onVersions(v => {
281285
popup_messanger.post('Versions', v)
282286
})
283-
data.onDetected(state => {
284-
popup_messanger.post('Detected', state)
287+
288+
port.onDisconnect.addListener(() => {
289+
tab.popup_messanger = null
285290
})
286291

287292
break

0 commit comments

Comments
 (0)