diff --git a/app/hooks/useActiveJobs/utilities.ts b/app/hooks/useActiveJobs/utilities.ts
index 4719709658..4da3db7378 100644
--- a/app/hooks/useActiveJobs/utilities.ts
+++ b/app/hooks/useActiveJobs/utilities.ts
@@ -6,9 +6,7 @@ export async function PollRecentJobs() {
const response = await jobsApi.ListRecentJobs();
if (response.success && response.data) {
- if (response.data.length > 0) {
- setJobs(response.data);
- }
+ setJobs(response.data);
// else, just no jobs, not an error, do nothing
return;
}
diff --git a/app/pages/PageEnigma/comps/SidePanelTabs/itemTabs/AudioTab/audioInferenceElement.tsx b/app/pages/PageEnigma/comps/SidePanelTabs/itemTabs/AudioTab/audioInferenceElement.tsx
new file mode 100644
index 0000000000..370b94508a
--- /dev/null
+++ b/app/pages/PageEnigma/comps/SidePanelTabs/itemTabs/AudioTab/audioInferenceElement.tsx
@@ -0,0 +1,74 @@
+import { useCallback } from "react";
+import { twMerge } from "tailwind-merge";
+import {
+ faSpinnerThird,
+ faCircleExclamation,
+ faXmark,
+} from "@fortawesome/pro-solid-svg-icons";
+import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
+
+import { JobsApi } from "~/Classes/ApiManager";
+import { JobStatus, ToastTypes } from "~/enums";
+import { Job } from "~/models";
+import { ButtonIcon, H5 } from "~/components";
+import { addToast } from "~/signals";
+import { isJobStatusError } from "~/utilities";
+import { PollRecentJobs } from "~/hooks/useActiveJobs/utilities";
+
+export const InferenceElement = ({ job }: { job: Job }) => {
+ const jobStatus = job.status.status;
+
+ const className = twMerge(
+ "rounded-md w-full flex justify-between items-center p-2 gap-2",
+ jobStatus === JobStatus.PENDING || jobStatus === JobStatus.ATTEMPT_FAILED
+ ? "bg-inference-pending"
+ : "",
+ jobStatus === JobStatus.STARTED ? "bg-inference-generating" : "",
+ isJobStatusError(jobStatus) ? "bg-inference-error" : "",
+ );
+
+ const getStatusText = () => {
+ switch (jobStatus) {
+ case JobStatus.PENDING:
+ return "Pending...";
+ case JobStatus.ATTEMPT_FAILED:
+ return "Attempt Failed, server will retry soon!";
+ case JobStatus.STARTED:
+ return "Started, generating...";
+ case JobStatus.DEAD:
+ case JobStatus.COMPLETE_FAILURE:
+ default:
+ return "Error!";
+ }
+ };
+
+ const handleDeleteJob = useCallback(async (job: Job) => {
+ const jobsApi = new JobsApi();
+ const response = await jobsApi.DeleteJobByToken(job.job_token);
+ if (response.success) {
+ addToast(
+ ToastTypes.SUCCESS,
+ "Successfully delete the audio generation job.",
+ );
+ PollRecentJobs();
+ return;
+ }
+ addToast(
+ ToastTypes.ERROR,
+ response.errorMessage ??
+ "Unknown Error in deleting audio generation job.",
+ );
+ }, []);
+
+ return (
+
+ {isJobStatusError(jobStatus) ? (
+
+ ) : (
+
+ )}
+
{getStatusText()}
+ handleDeleteJob(job)} />
+
+ );
+};
diff --git a/app/pages/PageEnigma/comps/SidePanelTabs/itemTabs/AudioTab/inferenceElement.tsx b/app/pages/PageEnigma/comps/SidePanelTabs/itemTabs/AudioTab/inferenceElement.tsx
deleted file mode 100644
index b4aa3599d7..0000000000
--- a/app/pages/PageEnigma/comps/SidePanelTabs/itemTabs/AudioTab/inferenceElement.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-import { twMerge } from "tailwind-merge";
-import {
- faSpinnerThird,
- faCircleXmark,
- faXmark,
-} from "@fortawesome/pro-solid-svg-icons";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-
-import { JobStatus } from "~/enums";
-import { Job } from "~/models";
-import { ButtonIcon, H5 } from "~/components";
-
-export const InferenceElement = ({ job }: { job: Job }) => {
- const className = twMerge(
- "rounded-md w-full flex justify-between items-center p-2 gap-2",
- job.status.status === JobStatus.PENDING ? "bg-inference-pending" : "",
- job.status.status === JobStatus.STARTED ? "bg-inference-generating" : "",
- job.status.status === JobStatus.DEAD ? "bg-inference-error" : "",
- );
-
- const statusText = "".concat(
- job.status.status === JobStatus.PENDING ? "Pending..." : "",
- job.status.status === JobStatus.STARTED ? "Generating..." : "",
- job.status.status === JobStatus.DEAD ? "Error" : "",
- );
- return (
-
- {job.status.status === JobStatus.DEAD && (
-
- )}
- {job.status.status !== JobStatus.DEAD && (
-
- )}
-
{statusText}
- {job.status.status === JobStatus.DEAD && (
- {
- console.log(job);
- }}
- />
- )}
-
- );
-};
diff --git a/app/pages/PageEnigma/comps/SidePanelTabs/itemTabs/AudioTab/pageAudioLibrary.tsx b/app/pages/PageEnigma/comps/SidePanelTabs/itemTabs/AudioTab/pageAudioLibrary.tsx
index a5b1f69ad1..8360bfb928 100644
--- a/app/pages/PageEnigma/comps/SidePanelTabs/itemTabs/AudioTab/pageAudioLibrary.tsx
+++ b/app/pages/PageEnigma/comps/SidePanelTabs/itemTabs/AudioTab/pageAudioLibrary.tsx
@@ -12,7 +12,7 @@ import {
import { AudioItemElements } from "./audioItemElements";
import { TabTitle } from "~/pages/PageEnigma/comps/SidePanelTabs/comps/TabTitle";
-import { InferenceElement } from "./inferenceElement";
+import { InferenceElement } from "./audioInferenceElement";
import { AssetFilterOption } from "~/enums";
import { AudioTabPages } from "~/pages/PageEnigma/enums";
@@ -31,7 +31,7 @@ export const PageAudioLibrary = ({
AssetFilterOption.FEATURED,
);
const filteredAudioItems =
- selectedFilter === AssetFilterOption.FEATURED
+ selectedFilter === AssetFilterOption.MINE
? audioItems.value ?? []
: userAudioItems.value ?? [];
const [currentPage, setCurrentPage] = useState(0);
diff --git a/app/utilities.ts b/app/utilities.ts
index b7831584f7..770b33192b 100644
--- a/app/utilities.ts
+++ b/app/utilities.ts
@@ -34,6 +34,17 @@ export const isNumberString = (value: string) => {
return !isNaN(Number(value));
};
+export const isJobStatusError = (curr: JobStatus) => {
+ if (
+ curr === JobStatus.ATTEMPT_FAILED ||
+ curr === JobStatus.COMPLETE_FAILURE ||
+ curr === JobStatus.DEAD
+ ) {
+ return true;
+ }
+ return false;
+};
+
export const getFileName = (file: File) => {
return file.name.substring(0, file.name.lastIndexOf("."));
};