0c29506402
- Extract utility functions from component files into dedicated modules to fix react-refresh/only-export-components warnings: - parseBadgeDefinition -> src/lib/parseBadgeDefinition.ts - parseProfileBadges -> src/lib/parseProfileBadges.ts - getColors, paletteToTheme -> src/lib/colorMomentUtils.ts - parseDimToAspectRatio, eventToMediaItem -> src/lib/mediaUtils.ts - isAudioUrl, isImageUrl, isVideoUrl -> src/lib/mediaTypeDetection.ts - buildKindOptions, parseSelectedKinds -> src/lib/feedFilterUtils.ts - useVideoThumbnail -> src/hooks/useVideoThumbnail.ts - useEnvelopeDimensions -> src/hooks/useEnvelopeDimensions.ts - usePortalContainer -> src/hooks/usePortalContainer.ts - useAudioPlayer -> src/contexts/audioPlayerContextDef.ts - SubHeaderBar context/hooks -> src/components/SubHeaderBarContext.ts - EmotionDev hooks -> src/blobbi/dev/useEmotionDev.ts - BlobbiActions context def -> BlobbiActionsContextDef.ts - Remove export from internal-only functions (useEventComments, parseEmojiPack, useScrollCarets, formatEffectSummary, getSortedEffectEntries) - Fix react-hooks/exhaustive-deps warnings by adding missing dependencies to useEffect/useCallback/useMemo hooks across 14 files - Fix logical expression dependency warnings by wrapping conditional values (tasks, pubkeys, authorPubkeys) in useMemo - Move module-level constants (CORE_TAB_IDS, CORE_TAB_LABELS, DEFAULT_TAB_LABELS) out of ProfilePage component body - Reorder usePushNotifications hooks so syncPreferences is defined before enable to fix block-scoped variable error
26 lines
831 B
TypeScript
26 lines
831 B
TypeScript
import { useEffect, useRef } from 'react';
|
|
import { useLocation } from 'react-router-dom';
|
|
import { useAudioPlayer } from '@/contexts/audioPlayerContextDef';
|
|
|
|
/**
|
|
* Auto-minimizes the audio player when the user navigates to a different page.
|
|
* No dialog — audio just keeps playing in the floating mini-bar.
|
|
*/
|
|
export function AudioNavigationGuard() {
|
|
const { currentTrack, minimized, minimize } = useAudioPlayer();
|
|
const location = useLocation();
|
|
const prevPath = useRef(location.pathname);
|
|
|
|
useEffect(() => {
|
|
if (location.pathname !== prevPath.current) {
|
|
// Route changed — minimize if playing and expanded
|
|
if (currentTrack && !minimized) {
|
|
minimize();
|
|
}
|
|
prevPath.current = location.pathname;
|
|
}
|
|
}, [location.pathname, currentTrack, minimized, minimize]);
|
|
|
|
return null;
|
|
}
|