manage errors

This commit is contained in:
2025-10-20 11:37:06 +02:00
parent aefbffd480
commit 3a57e4c437
3 changed files with 158 additions and 26 deletions
+47 -12
View File
@@ -1,18 +1,19 @@
import { View, Text, Image, Pressable, Platform } from "react-native";
import React, { useEffect, useState } from "react";
import { ai, icons } from "../../assets";
import { BlurView } from "expo-blur";
import Style, { size } from "../../styles/Style";
import { Palette } from "../../styles";
import { FONT_FAMILY } from "../../styles/Fonts";
import moment from "moment";
import React, { useEffect, useState } from "react";
import { Image, Platform, Pressable, Text, View } from "react-native";
import useMinuit from "react-native-minuit/src/hooks/useMinuit.js";
import { ai, icons } from "../../assets";
import AppAlert from "../../components/Alert";
import GradientButton from "../../components/GradientButton";
import ProgressBar from "../../components/ProgressBar";
import firebase, { projectsRef } from "../../config/firebase";
import { Routes } from "../../navigation";
import { goBack, navigate } from "../../navigation/NavigationService";
import { useUser } from "../../providers/UserDataProvider";
import { Routes } from "../../navigation";
import GradientButton from "../../components/GradientButton";
import firebase, { projectsRef } from "../../config/firebase";
import useMinuit from "react-native-minuit/src/hooks/useMinuit.js";
import moment from "moment";
import { Palette } from "../../styles";
import { FONT_FAMILY } from "../../styles/Fonts";
import Style, { size } from "../../styles/Style";
const CreatingSong = ({ active, config }) => {
const [progress, setProgress] = useState(0);
@@ -118,6 +119,7 @@ const CreatingSong = ({ active, config }) => {
{
sunoTaskId: taskId,
musicStatus: "GENERATING",
musicError: firebase.firestore.FieldValue.delete(),
musicConfig: {
title: config?.title || "",
lyrics: config?.lyrics || [],
@@ -134,7 +136,40 @@ const CreatingSong = ({ active, config }) => {
);
}
} catch (e) {
console.log(e);
console.log("CreatingSong generation error", e?.message);
const rawMessage = e?.message || "";
const sanitized =
typeof rawMessage === "string"
? rawMessage.replace(/^INTERNAL:/i, "").trim()
: "";
const fallbackMessage =
e?.details?.status ||
"Le service est actuellement indisponible. Merci de réessayer.";
AppAlert(
"Impossible de générer la musique veuillez réessayer plus tard."
);
if (config?.projectId) {
try {
await projectsRef.doc(config.projectId).set(
{
musicStatus: "FAILED",
sunoTaskId: firebase.firestore.FieldValue.delete(),
generationStartAt: firebase.firestore.FieldValue.delete(),
updatedAt: firebase.firestore.FieldValue.serverTimestamp(),
musicError: {
source: "SUNO_API",
message: sanitized || fallbackMessage,
},
},
{ merge: true }
);
} catch (firestoreError) {
console.log(
"CreatingSong Firestore update error",
firestoreError?.message
);
}
}
} finally {
await setIsLoading(false);
}
+40 -1
View File
@@ -123,6 +123,7 @@ const GeneratingSong = () => {
voice: cfg?.voice,
instruments: cfg?.instruments,
tempo: cfg?.tempo,
projectId: selectedProjectId || selectedProject?.id || null,
});
const taskId =
data?.response?.data?.taskId || data?.response?.data?.task_id;
@@ -130,6 +131,7 @@ const GeneratingSong = () => {
const baseUpdate = {
sunoTaskId: taskId,
musicStatus: "GENERATING",
musicError: firebase.firestore.FieldValue.delete(),
generationStartAt: firebase.firestore.FieldValue.serverTimestamp(),
updatedAt: firebase.firestore.FieldValue.serverTimestamp(),
};
@@ -152,6 +154,42 @@ const GeneratingSong = () => {
}
} catch (e) {
console.log("GeneratingSong error", e?.message);
const rawMessage = e?.message || "";
const sanitized =
typeof rawMessage === "string"
? rawMessage.replace(/^INTERNAL:/i, "").trim()
: "";
const fallbackMessage =
e?.details?.message ||
e?.details?.status ||
"Le service Suno est indisponible. Veuillez réessayer plus tard.";
AppAlert(
"Impossible de générer la musique",
sanitized || fallbackMessage
);
if (selectedProjectId) {
try {
await projectsRef.doc(selectedProjectId).set(
{
musicStatus: "FAILED",
sunoTaskId: firebase.firestore.FieldValue.delete(),
generationStartAt: firebase.firestore.FieldValue.delete(),
updatedAt: firebase.firestore.FieldValue.serverTimestamp(),
musicError: {
source: "SUNO_API",
message: sanitized || fallbackMessage,
},
},
{ merge: true }
);
} catch (firestoreError) {
console.log(
"GeneratingSong Firestore update error",
firestoreError?.message
);
}
}
askedRef.current = false;
} finally {
await setIsLoading(false);
}
@@ -181,7 +219,8 @@ const GeneratingSong = () => {
status == null ||
status === "" ||
status === "PENDING" ||
status === "READY";
status === "READY" ||
status === "FAILED";
if (titleOk && isIdle && !askedRef.current) {
askedRef.current = true;