manage errors
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user