clear lot of tickets
This commit is contained in:
@@ -15,6 +15,7 @@ import GradientButton from "../../components/GradientButton";
|
||||
import KaraokeLyrics from "../../components/KaraokeLyrics";
|
||||
import MusicLandHeader from "../../components/MusicLandHeader";
|
||||
import { increment, projectsRef } from "../../config/firebase";
|
||||
import usePlayer from "../../hooks/usePlayer";
|
||||
import useSharedAudioPlayer from "../../hooks/useSharedAudioPlayer";
|
||||
import { Routes } from "../../navigation";
|
||||
import { goBack, navigate } from "../../navigation/NavigationService";
|
||||
@@ -35,6 +36,7 @@ const RecordPlayback = ({ route }) => {
|
||||
log("Route params received", { hasProject: !!project });
|
||||
const projectId = project?.id;
|
||||
const songIndex = project?.songIndex;
|
||||
const { setLooping, isLooping } = usePlayer() || {};
|
||||
// Permissions
|
||||
const [cameraPermission, requestCameraPermission] = useCameraPermissions();
|
||||
|
||||
@@ -48,6 +50,8 @@ const RecordPlayback = ({ route }) => {
|
||||
const countdownActiveRef = useRef(false); // évite le déclenchement avant 1er tick
|
||||
const playbackStartedRef = useRef(false); // devient vrai lorsque l'audio progresse réellement
|
||||
const progressLogRef = useRef({ bucket: -1, lastPos: -1, lastDur: -1 });
|
||||
const originalLoopingValueRef = useRef({ hasValue: false, value: false });
|
||||
const latestLoopingValueRef = useRef(isLooping ?? false);
|
||||
|
||||
// Compteurs vues
|
||||
const listenedMsRef = useRef(0);
|
||||
@@ -80,6 +84,10 @@ const RecordPlayback = ({ route }) => {
|
||||
log("Screen params", { projectId, songUrl, songIndex });
|
||||
}, [projectId, songUrl, songIndex]);
|
||||
|
||||
useEffect(() => {
|
||||
latestLoopingValueRef.current = isLooping ?? false;
|
||||
}, [isLooping]);
|
||||
|
||||
const musicIndex = useMemo(() => {
|
||||
const i = Number(songIndex);
|
||||
return Number.isFinite(i) && i >= 0 ? i : 0;
|
||||
@@ -280,12 +288,42 @@ const RecordPlayback = ({ route }) => {
|
||||
} catch (_) {}
|
||||
}, [player]);
|
||||
|
||||
const resetSessionRef = useRef(resetSession);
|
||||
useEffect(() => {
|
||||
resetSessionRef.current = resetSession;
|
||||
}, [resetSession]);
|
||||
|
||||
useFocusEffect(
|
||||
useCallback(() => {
|
||||
log("Screen focused, resetting session");
|
||||
void resetSession();
|
||||
return () => {};
|
||||
}, [resetSession])
|
||||
void resetSessionRef.current?.();
|
||||
return () => {
|
||||
log("Screen blurred, stopping playback");
|
||||
void resetSessionRef.current?.();
|
||||
};
|
||||
}, [])
|
||||
);
|
||||
|
||||
useFocusEffect(
|
||||
useCallback(() => {
|
||||
if (typeof setLooping === "function") {
|
||||
originalLoopingValueRef.current = {
|
||||
hasValue: true,
|
||||
value: latestLoopingValueRef.current,
|
||||
};
|
||||
if (latestLoopingValueRef.current) {
|
||||
setLooping(false);
|
||||
}
|
||||
}
|
||||
return () => {
|
||||
if (
|
||||
typeof setLooping === "function" &&
|
||||
originalLoopingValueRef.current?.hasValue
|
||||
) {
|
||||
setLooping(!!originalLoopingValueRef.current.value);
|
||||
}
|
||||
};
|
||||
}, [setLooping])
|
||||
);
|
||||
|
||||
// Lancer le compte à rebours (le tick décrémente uniquement)
|
||||
|
||||
Reference in New Issue
Block a user