@@ -56,6 +56,10 @@ import {
5656 getFeatureFlag ,
5757 getGlobalSetting ,
5858} from "~/components/settings/utils/accessors" ;
59+ import {
60+ onSettingChange ,
61+ settingKeys ,
62+ } from "~/components/settings/utils/settingsEmitter" ;
5963import {
6064 PERSONAL_KEYS ,
6165 GLOBAL_KEYS ,
@@ -95,6 +99,7 @@ export const initObservers = ({
9599 discourseNodeSearchTriggerListener : EventListener ;
96100 nodeCreationPopoverListener : EventListener ;
97101 } ;
102+ cleanups : Array < ( ) => void > ;
98103} => {
99104 const pageTitleObserver = createHTMLObserver ( {
100105 tag : "H1" ,
@@ -196,10 +201,19 @@ export const initObservers = ({
196201 } ) ;
197202 } ) as EventListener ;
198203
204+ const suggestiveHandler = getSuggestiveOverlayHandler ( onloadArgs ) ;
205+ const toggleSuggestiveOverlay = onPageRefObserverChange ( suggestiveHandler ) ;
199206 if ( getPersonalSetting < boolean > ( [ PERSONAL_KEYS . suggestiveModeOverlay ] ) ) {
200- addPageRefObserver ( getSuggestiveOverlayHandler ( onloadArgs ) ) ;
207+ addPageRefObserver ( suggestiveHandler ) ;
201208 }
202209
210+ const unsubSuggestiveOverlay = onSettingChange (
211+ settingKeys . personalSuggestiveModeOverlay ,
212+ ( newValue ) => {
213+ toggleSuggestiveOverlay ( Boolean ( newValue ) ) ;
214+ } ,
215+ ) ;
216+
203217 const graphOverviewExportObserver = createHTMLObserver ( {
204218 tag : "DIV" ,
205219 className : "rm-graph-view-control-panel__main-options" ,
@@ -241,17 +255,36 @@ export const initObservers = ({
241255 }
242256 } ;
243257
244- const globalTrigger = (
258+ let globalTrigger = (
245259 getGlobalSetting < string > ( [ GLOBAL_KEYS . trigger ] ) ?? "\\"
246260 ) . trim ( ) ;
247261 const personalTriggerCombo = getPersonalSetting < IKeyCombo > ( [
248262 PERSONAL_KEYS . personalNodeMenuTrigger ,
249263 ] ) ;
250- const personalTrigger = personalTriggerCombo ?. key ;
251- const personalModifiers = personalTriggerCombo
264+ let personalTrigger = personalTriggerCombo ?. key ;
265+ let personalModifiers = personalTriggerCombo
252266 ? getModifiersFromCombo ( personalTriggerCombo )
253267 : [ ] ;
254268
269+ const unsubGlobalTrigger = onSettingChange (
270+ settingKeys . globalTrigger ,
271+ ( newValue ) => {
272+ globalTrigger = ( newValue as string ) . trim ( ) ;
273+ } ,
274+ ) ;
275+
276+ const unsubPersonalTrigger = onSettingChange (
277+ settingKeys . personalNodeMenuTrigger ,
278+ ( newValue ) => {
279+ const combo =
280+ newValue && typeof newValue === "object"
281+ ? ( newValue as IKeyCombo )
282+ : undefined ;
283+ personalTrigger = combo ?. key ;
284+ personalModifiers = combo ? getModifiersFromCombo ( combo ) : [ ] ;
285+ } ,
286+ ) ;
287+
255288 const leftSidebarObserver = createHTMLObserver ( {
256289 tag : "DIV" ,
257290 useBody : true ,
@@ -309,9 +342,16 @@ export const initObservers = ({
309342 }
310343 } ;
311344
312- const customTrigger =
345+ let customTrigger =
313346 getPersonalSetting < string > ( [ PERSONAL_KEYS . nodeSearchMenuTrigger ] ) ?? "@" ;
314347
348+ const unsubSearchTrigger = onSettingChange (
349+ settingKeys . nodeSearchMenuTrigger ,
350+ ( newValue ) => {
351+ customTrigger = newValue as string ;
352+ } ,
353+ ) ;
354+
315355 const discourseNodeSearchTriggerListener = ( e : Event ) => {
316356 const evt = e as KeyboardEvent ;
317357 const target = evt . target as HTMLElement ;
@@ -414,5 +454,11 @@ export const initObservers = ({
414454 discourseNodeSearchTriggerListener,
415455 nodeCreationPopoverListener,
416456 } ,
457+ cleanups : [
458+ unsubGlobalTrigger ,
459+ unsubPersonalTrigger ,
460+ unsubSearchTrigger ,
461+ unsubSuggestiveOverlay ,
462+ ] ,
417463 } ;
418464} ;
0 commit comments