From b9103fb73727d3b8e52adba34b7aed420fa25a1d Mon Sep 17 00:00:00 2001 From: Victor Holguin Date: Fri, 3 Nov 2023 16:02:44 -0700 Subject: [PATCH] reworked voice designer ListItems component to allow iterating and applying onclick functions and other needed features, allowing for DeleteDataset endpoint implementation, via the useVoiceRequest hook --- .../voice_datasets/DeleteDataset.ts | 6 +- .../src/components/common/Modal/Modal.tsx | 20 ++++- .../voice_designer/VoiceDesignerMainPage.tsx | 72 +++++++++++------- .../voice_designer/components/NewList.tsx | 74 +++++++++++++++++++ .../pages/voice_designer/useVoiceRequests.tsx | 32 ++++++++ 5 files changed, 171 insertions(+), 33 deletions(-) create mode 100644 packages/fakeyou.com/src/v2/view/pages/voice_designer/components/NewList.tsx create mode 100644 packages/fakeyou.com/src/v2/view/pages/voice_designer/useVoiceRequests.tsx diff --git a/packages/components/src/api/voice_designer/voice_datasets/DeleteDataset.ts b/packages/components/src/api/voice_designer/voice_datasets/DeleteDataset.ts index b69bd53000..060ac57db2 100644 --- a/packages/components/src/api/voice_designer/voice_datasets/DeleteDataset.ts +++ b/packages/components/src/api/voice_designer/voice_datasets/DeleteDataset.ts @@ -1,15 +1,15 @@ import MakeRequest from "../../MakeRequest"; -export interface DreateVoiceRequest { +export interface DeleteVoiceRequest { set_delete: boolean; as_mod: boolean; } -export interface DreateVoiceResponse { +export interface DeleteVoiceResponse { success: boolean } -export const DeleteVoice = MakeRequest({ +export const DeleteDataset = MakeRequest({ method: "DELETE", routingFunction: (voiceToken: string) => `/v1/voice_designer/dataset/${ voiceToken }/delete`, }); diff --git a/packages/fakeyou.com/src/components/common/Modal/Modal.tsx b/packages/fakeyou.com/src/components/common/Modal/Modal.tsx index e85ae516d0..dd5fbc94cb 100644 --- a/packages/fakeyou.com/src/components/common/Modal/Modal.tsx +++ b/packages/fakeyou.com/src/components/common/Modal/Modal.tsx @@ -4,14 +4,18 @@ import { faTrashAlt } from "@fortawesome/pro-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useSpring, a } from "@react-spring/web"; + + interface ModalProps { show: boolean; handleClose: () => void; + onCancel?: (e: React.MouseEvent) => any; + onConfirm?: (e: React.MouseEvent) => any; title: string; content: React.ReactNode; } -const Modal: React.FC = ({ show, handleClose, title, content }) => { +const Modal: React.FC = ({ show, handleClose, onCancel: cancelEvent, onConfirm: confirmEvent, title, content }) => { const modalRef = useRef(null); const fadeIn = useSpring({ @@ -22,6 +26,16 @@ const Modal: React.FC = ({ show, handleClose, title, content }) => { }, }); + const onCancel = (e: React.MouseEvent) => { + if (cancelEvent) cancelEvent(e); + handleClose(); + }; + + const onConfirm = (e: React.MouseEvent) => { + if (confirmEvent) confirmEvent(e); + handleClose(); + }; + useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if ( @@ -70,9 +84,9 @@ const Modal: React.FC = ({ show, handleClose, title, content }) => {