diff --git a/src/assets/UI/RestartSpinnerIcon.js b/src/assets/UI/RestartSpinnerIcon.js
new file mode 100644
index 0000000..a84af69
--- /dev/null
+++ b/src/assets/UI/RestartSpinnerIcon.js
@@ -0,0 +1,61 @@
+import * as React from "react";
+import { View } from "react-native";
+import Svg, { ClipPath, Defs, G, Path, Rect } from "react-native-svg";
+
+const RestartSpinnerIcon = ({
+ size = 30,
+ color = "#F94697",
+ background = "transparent",
+ style,
+}) => {
+ return (
+
+
+
+ );
+};
+
+export default RestartSpinnerIcon;
diff --git a/src/screens/Playback/RecordPlayback.js b/src/screens/Playback/RecordPlayback.js
index 1ac0b4c..80f1b9c 100644
--- a/src/screens/Playback/RecordPlayback.js
+++ b/src/screens/Playback/RecordPlayback.js
@@ -10,12 +10,13 @@ import React, {
} from "react";
import { Text, TouchableOpacity, View } from "react-native";
import { useSafeAreaInsets } from "react-native-safe-area-context";
-import Svg, { Circle, Path, G, Defs, Rect, ClipPath } from "react-native-svg";
+import Svg, { Circle } from "react-native-svg";
import alert from "../../components/Alert";
import GradientButton from "../../components/GradientButton";
import KaraokeLyrics from "../../components/KaraokeLyrics";
import MusicLandHeader from "../../components/MusicLandHeader";
import { increment, projectsRef } from "../../config/firebase";
+import RestartSpinnerIcon from "../../assets/UI/RestartSpinnerIcon";
import usePlayer from "../../hooks/usePlayer";
import useSharedAudioPlayer from "../../hooks/useSharedAudioPlayer";
import { Routes } from "../../navigation";
@@ -887,60 +888,6 @@ const ProgressRing = ({ size = 50, strokeWidth = 12, progress = 0 }) => {
);
};
-const RestartSpinnerIcon = ({
- size = 30,
- color = "#F94697", // couleur unie
- background = "transparent",
-}) => {
- return (
-
-
-
- );
-};
-
export default RecordPlayback;
// Render previous/current/next line to reduce jumpiness
diff --git a/src/screens/Playback/RecordPlayback.web.js b/src/screens/Playback/RecordPlayback.web.js
index 4e2af91..3137e56 100644
--- a/src/screens/Playback/RecordPlayback.web.js
+++ b/src/screens/Playback/RecordPlayback.web.js
@@ -7,7 +7,7 @@ import React, {
useRef,
useState,
} from "react";
-import { Text, View } from "react-native";
+import { Text, TouchableOpacity, View } from "react-native";
import { useSafeAreaInsets } from "react-native-safe-area-context";
import Svg, { Circle } from "react-native-svg";
import alert from "../../components/Alert";
@@ -26,6 +26,7 @@ import { FONT_FAMILY } from "../../styles/Fonts";
import CreateLyricsHeader from "../Writing/components/CreateLyricsHeader";
import { background } from "../../assets";
import playbackBG2 from "../../assets/UI/playbackBG2.png";
+import RestartSpinnerIcon from "../../assets/UI/RestartSpinnerIcon";
const TIME_BEFORE_INCREMENT_MS = 20000;
const LOG_PREFIX = "[RecordPlayback.web]";
@@ -736,6 +737,23 @@ const RecordPlayback = ({ route }) => {
});
}, 1000);
}, [songUrl, canRecord, resetSession, startPlayback]);
+
+ const handleRestartRecording = useCallback(async () => {
+ console.log(LOG_PREFIX, "restartButton:pressed", {
+ isPreparing,
+ isRecording,
+ });
+ try {
+ await startCountdownThenRecord();
+ } catch (e) {
+ console.log(
+ LOG_PREFIX,
+ "restartButton:error",
+ String(e?.message || e || ""),
+ );
+ }
+ }, [isPreparing, isRecording, startCountdownThenRecord]);
+
const progressRatio = dur > 0 ? Math.min(1, pos / dur) : 0;
return (
@@ -873,7 +891,7 @@ const RecordPlayback = ({ route }) => {
/>
)}
- {/* Progress circulaire */}
+ {/* Progress circulaire + restart */}
{permissionsGranted && (isRecording || isPreparing) && (
{
>
-
+ >
+
+
)}
@@ -981,7 +1010,7 @@ const ProgressRing = ({ size = 50, strokeWidth = 12, progress = 0 }) => {
style={{
transform: [{ rotate: "-90deg" }],
backgroundColor: "#ffffff3d",
- borderRadius: 55,
+ borderRadius: size / 2,
}}
>
{
updateData.musicUrls = firebase.firestore.FieldValue.delete();
updateData.musicStatus = firebase.firestore.FieldValue.delete();
}
- await projectsRef
- .doc(selectedProjectId)
- .set(updateData, { merge: true });
+ await projectsRef.doc(selectedProjectId).set(updateData, { merge: true });
const projectForStage = {
...selectedProject,
title: titleTrimmed,
@@ -507,9 +505,7 @@ const Lyrics = ({ navigation }) => {
- setIsSensitiveContentAcknowledged((prev) => !prev)
- }
+ onPress={() => setIsSensitiveContentAcknowledged((prev) => !prev)}
label={RESPONSIBILITY_CHECKBOX_LABEL}
/>