Skip to content

Commit 7f7972b

Browse files
committed
fix: suggestions enabled state now updates in same tab
The storage event only fires for cross-tab changes. Added custom event dispatch when setSuggestionsEnabled is called so the hook updates immediately in the same tab.
1 parent 9cce482 commit 7f7972b

2 files changed

Lines changed: 7 additions & 5 deletions

File tree

src/hooks/useContentSuggestion.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export function useContentSuggestion() {
2424
const [enabled, setEnabled] = useState(() => isSuggestionsEnabled())
2525
const abortRef = useRef(null)
2626

27-
// Re-check enabled state when localStorage changes (e.g., from settings)
27+
// Re-check enabled state when localStorage changes (cross-tab via storage event)
2828
useEffect(() => {
2929
const handleStorage = (e) => {
3030
if (e.key === 'hypermark_suggestions_enabled') {
@@ -35,11 +35,11 @@ export function useContentSuggestion() {
3535
return () => window.removeEventListener('storage', handleStorage)
3636
}, [])
3737

38-
// Also check on mount/focus in case changed in same tab
38+
// Listen for same-tab changes via custom event
3939
useEffect(() => {
40-
const handleFocus = () => setEnabled(isSuggestionsEnabled())
41-
window.addEventListener('focus', handleFocus)
42-
return () => window.removeEventListener('focus', handleFocus)
40+
const handleChange = (e) => setEnabled(e.detail.enabled)
41+
window.addEventListener('suggestions-enabled-change', handleChange)
42+
return () => window.removeEventListener('suggestions-enabled-change', handleChange)
4343
}, [])
4444

4545
const cancel = useCallback(() => {

src/services/content-suggestion.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ export function isSuggestionsEnabled() {
8282
*/
8383
export function setSuggestionsEnabled(enabled) {
8484
localStorage.setItem(STORAGE_KEY_ENABLED, enabled ? 'true' : 'false')
85+
// Dispatch custom event for same-tab reactivity (storage event only fires cross-tab)
86+
window.dispatchEvent(new CustomEvent('suggestions-enabled-change', { detail: { enabled } }))
8587
}
8688

8789
/**

0 commit comments

Comments
 (0)