feat: add webpush and sadhna tracker
This commit is contained in:
@@ -6,7 +6,6 @@ import {
|
||||
useEffect,
|
||||
useMemo,
|
||||
useState,
|
||||
useSyncExternalStore,
|
||||
} from "react";
|
||||
import { useAudioPlayer } from "./audio-context";
|
||||
import { AudioWaveAnimation } from "./audio-wave";
|
||||
@@ -35,41 +34,6 @@ import {
|
||||
|
||||
const MINIMIZE_DELAY = 8000;
|
||||
|
||||
/**
|
||||
* `useSyncExternalStore` is the React-recommended way to expose values
|
||||
* from external systems (window, media-queries, etc.) without a
|
||||
* mirror-into-state effect. The previous useEffect-+-setState version
|
||||
* tripped React 19's "setState synchronously inside an effect" warning
|
||||
* — this variant has no effect at all.
|
||||
*
|
||||
* On the server we default to false (desktop). The player only mounts
|
||||
* when a track is playing, which is always after hydration, so the
|
||||
* initial-paint value never matters for SSR markup.
|
||||
*/
|
||||
const MOBILE_QUERY = "(max-width: 767px)";
|
||||
|
||||
function subscribeMobile(callback: () => void): () => void {
|
||||
const mq = window.matchMedia(MOBILE_QUERY);
|
||||
mq.addEventListener("change", callback);
|
||||
return () => mq.removeEventListener("change", callback);
|
||||
}
|
||||
|
||||
function getMobileSnapshot(): boolean {
|
||||
return window.matchMedia(MOBILE_QUERY).matches;
|
||||
}
|
||||
|
||||
function getMobileServerSnapshot(): boolean {
|
||||
return false;
|
||||
}
|
||||
|
||||
function useIsMobile() {
|
||||
return useSyncExternalStore(
|
||||
subscribeMobile,
|
||||
getMobileSnapshot,
|
||||
getMobileServerSnapshot,
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns [minimized, setMinimized, resetTimer].
|
||||
* Auto-minimizes after `MINIMIZE_DELAY` ms of inactivity. Call
|
||||
@@ -460,7 +424,6 @@ export function FloatingPlayer() {
|
||||
|
||||
const playerRef = useRef<HTMLDivElement>(null);
|
||||
const [selectionToolbarVisible, setSelectionToolbarVisible] = useState(false);
|
||||
const isMobile = useIsMobile();
|
||||
const { minimized, setMinimized, resetTimer } =
|
||||
useAutoMinimize(!!currentTrack);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user