From 0022f469e6aa53362b7df34f8e3e5924dc826c34 Mon Sep 17 00:00:00 2001 From: InfiniteStash <117855276+InfiniteStash@users.noreply.github.com> Date: Sun, 18 Aug 2024 08:49:35 +0000 Subject: [PATCH] WIP --- frontend/src/graphql/queries/index.ts | 5 +- .../{UserScenes.tsx => UserFingerprints.tsx} | 0 .../UserFingerprintsList/UserFingerprint.tsx | 41 ++++++------- .../UserFingerprintsList.tsx | 46 ++++++++------- .../UserFingerprintsList/UserSceneLine.tsx | 57 ++++++++++++------- .../{index.tsx => index.ts} | 0 frontend/src/pages/users/index.tsx | 13 +++-- 7 files changed, 97 insertions(+), 65 deletions(-) rename frontend/src/pages/users/{UserScenes.tsx => UserFingerprints.tsx} (100%) rename frontend/src/pages/users/UserFingerprintsList/{index.tsx => index.ts} (100%) diff --git a/frontend/src/graphql/queries/index.ts b/frontend/src/graphql/queries/index.ts index 8d2c4bee..b3f07952 100644 --- a/frontend/src/graphql/queries/index.ts +++ b/frontend/src/graphql/queries/index.ts @@ -138,7 +138,10 @@ export const useScenes = (variables: ScenesQueryVariables, skip = false) => skip, }); -export const useScenesWithFingerprints = (variables: ScenesWithFingerprintsQueryVariables, skip = false) => +export const useScenesWithFingerprints = ( + variables: ScenesWithFingerprintsQueryVariables, + skip = false +) => useQuery(ScenesWithFingerprintsDocument, { variables, skip, diff --git a/frontend/src/pages/users/UserScenes.tsx b/frontend/src/pages/users/UserFingerprints.tsx similarity index 100% rename from frontend/src/pages/users/UserScenes.tsx rename to frontend/src/pages/users/UserFingerprints.tsx diff --git a/frontend/src/pages/users/UserFingerprintsList/UserFingerprint.tsx b/frontend/src/pages/users/UserFingerprintsList/UserFingerprint.tsx index 59d3f92b..4195b66d 100644 --- a/frontend/src/pages/users/UserFingerprintsList/UserFingerprint.tsx +++ b/frontend/src/pages/users/UserFingerprintsList/UserFingerprint.tsx @@ -1,34 +1,35 @@ -import { FC } from 'react'; -import { Button } from 'react-bootstrap'; +import { FC } from "react"; +import { Button } from "react-bootstrap"; import { FingerprintAlgorithm } from "src/graphql"; import { Icon } from "src/components/fragments"; import { formatDuration } from "src/utils"; -import { - faTimesCircle, -} from "@fortawesome/free-solid-svg-icons"; +import { faTimesCircle } from "@fortawesome/free-solid-svg-icons"; interface Props { fingerprint: { hash: string; duration: number; algorithm: FingerprintAlgorithm; - } + }; deleteFingerprint: () => void; } -export const UserFingerprint: FC = ({ fingerprint, deleteFingerprint }) => ( +export const UserFingerprint: FC = ({ + fingerprint, + deleteFingerprint, +}) => (
  • -
    - {fingerprint.algorithm} - {fingerprint.hash} ({formatDuration(fingerprint.duration)}) - -
    +
    + {fingerprint.algorithm} + {fingerprint.hash} ({formatDuration(fingerprint.duration)}) + +
  • -) +); diff --git a/frontend/src/pages/users/UserFingerprintsList/UserFingerprintsList.tsx b/frontend/src/pages/users/UserFingerprintsList/UserFingerprintsList.tsx index 274d22c2..07d8e94b 100644 --- a/frontend/src/pages/users/UserFingerprintsList/UserFingerprintsList.tsx +++ b/frontend/src/pages/users/UserFingerprintsList/UserFingerprintsList.tsx @@ -34,13 +34,18 @@ const sortOptions = [ { value: SceneSortEnum.UPDATED_AT, label: "Updated At" }, ]; -export const UserFingerprintsList: FC = ({ perPage = PER_PAGE, filter }) => { - const [deletionCandidates, setDeletionCandidates] = useState<{ - hash: string; - scene_id: string; - algorithm: FingerprintAlgorithm; - duration: number; - }[]>([]); +export const UserFingerprintsList: FC = ({ + perPage = PER_PAGE, + filter, +}) => { + const [deletionCandidates, setDeletionCandidates] = useState< + { + hash: string; + scene_id: string; + algorithm: FingerprintAlgorithm; + duration: number; + }[] + >([]); const [showDelete, setShowDelete] = useState(false); const [deleteFingerprint] = useUnmatchFingerprint(); @@ -100,23 +105,25 @@ export const UserFingerprintsList: FC = ({ perPage = PER_PAGE, filter }) ); - const deleteFingerprints = (fingerprints: { - scene_id: string, - hash: string, - algorithm: FingerprintAlgorithm, - duration: number - }[]) => { + const deleteFingerprints = ( + fingerprints: { + scene_id: string; + hash: string; + algorithm: FingerprintAlgorithm; + duration: number; + }[] + ) => { setDeletionCandidates(fingerprints); setShowDelete(true); }; const handleDelete = async (status: boolean) => { if (status && deletionCandidates.length) { - for (const candidate of deletionCandidates) { - await deleteFingerprint({ - variables: candidate, - }); - } + for (const candidate of deletionCandidates) { + await deleteFingerprint({ + variables: candidate, + }); + } } setDeletionCandidates([]); setShowDelete(false); @@ -152,7 +159,8 @@ export const UserFingerprintsList: FC = ({ perPage = PER_PAGE, filter }) Release Date - { data?.queryScenes.scenes.map(scene => ( + + {data?.queryScenes.scenes.map((scene) => ( void; + scene: ScenesWithFingerprintsQuery["queryScenes"]["scenes"][number]; + deleteFingerprints: ( + fingerprints: { + scene_id: string; + hash: string; + algorithm: FingerprintAlgorithm; + duration: number; + }[] + ) => void; } const UserSceneLine: FC = ({ scene, deleteFingerprints }) => ( - <> + <> - + @@ -49,9 +62,15 @@ const UserSceneLine: FC = ({ scene, deleteFingerprints }) => (
      - { scene.fingerprints.map(fp => ( - deleteFingerprints([{ ...fp, scene_id: scene.id }])} key={fp.hash} /> - )) } + {scene.fingerprints.map((fp) => ( + + deleteFingerprints([{ ...fp, scene_id: scene.id }]) + } + key={fp.hash} + /> + ))}
    diff --git a/frontend/src/pages/users/UserFingerprintsList/index.tsx b/frontend/src/pages/users/UserFingerprintsList/index.ts similarity index 100% rename from frontend/src/pages/users/UserFingerprintsList/index.tsx rename to frontend/src/pages/users/UserFingerprintsList/index.ts diff --git a/frontend/src/pages/users/index.tsx b/frontend/src/pages/users/index.tsx index 6408cf62..385da599 100644 --- a/frontend/src/pages/users/index.tsx +++ b/frontend/src/pages/users/index.tsx @@ -12,7 +12,7 @@ import UserAdd from "./UserAdd"; import UserEdit from "./UserEdit"; import UserPassword from "./UserPassword"; import UserEdits from "./UserEdits"; -import UserScenes from "./UserScenes"; +import UserFingerprints from "./UserFingerprints"; const UserLoader: FC = () => { const { name } = useParams<{ name: string }>(); @@ -90,11 +90,12 @@ const UserRoutes: FC = () => ( - - <UserScenes /> - </> - } /> + <> + <Title page={"My Fingerprints"} /> + <UserFingerprints/> + </> + } + /> <Route path="/:name/*" element={<UserLoader />} /> </Routes> );