@@ -16,13 +16,14 @@ function main() {
16
16
styleEl . id = 'sentinel-css'
17
17
document . head . append ( styleEl )
18
18
19
- const injectionWeakMap = new WeakMap ( )
19
+ const injectionMap = new Map < HTMLElement , HTMLElement > ( )
20
20
21
- sentinel . on ( 'nav' , ( nav ) => {
22
- if ( injectionWeakMap . has ( nav ) ) return
23
- injectionWeakMap . set ( nav , true )
21
+ const injectNavMenu = ( nav : HTMLElement ) => {
22
+ if ( injectionMap . has ( nav ) ) return
24
23
25
24
const container = getMenuContainer ( )
25
+ injectionMap . set ( nav , container )
26
+
26
27
const chatList = nav . querySelector ( ':scope > div.overflow-y-auto, :scope > div.overflow-y-hidden' )
27
28
if ( chatList ) {
28
29
chatList . after ( container )
@@ -31,7 +32,21 @@ function main() {
31
32
// fallback to the bottom of the nav
32
33
nav . append ( container )
33
34
}
34
- } )
35
+ }
36
+
37
+ sentinel . on ( 'nav' , injectNavMenu )
38
+
39
+ setInterval ( ( ) => {
40
+ injectionMap . forEach ( ( container , nav ) => {
41
+ if ( ! nav . isConnected ) {
42
+ container . remove ( )
43
+ injectionMap . delete ( nav )
44
+ }
45
+ } )
46
+
47
+ const navList = Array . from ( document . querySelectorAll ( 'nav' ) ) . filter ( nav => ! injectionMap . has ( nav ) )
48
+ navList . forEach ( injectNavMenu )
49
+ } , 300 )
35
50
36
51
// Support for share page
37
52
if ( isSharePage ( ) ) {
0 commit comments