diff options
Diffstat (limited to 'components/search')
| -rw-r--r-- | components/search/searchByImage.tsx (renamed from components/search/searchByImage.js) | 61 | ||||
| -rw-r--r-- | components/search/selection.ts (renamed from components/search/selection.js) | 0 |
2 files changed, 51 insertions, 10 deletions
diff --git a/components/search/searchByImage.js b/components/search/searchByImage.tsx index f61418f..2041871 100644 --- a/components/search/searchByImage.js +++ b/components/search/searchByImage.tsx @@ -3,15 +3,22 @@ import { useRouter } from "next/router"; import React, { useEffect } from "react"; import { toast } from "sonner"; +type SearchByImageProps = { + searchPalette?: boolean; + setIsOpen?: (isOpen: boolean) => void; + setData?: any; // Replace 'any' with the actual data type + setMedia?: (media: any) => void; // Replace 'any' with the actual media type +}; + export default function SearchByImage({ searchPalette = false, setIsOpen, - setData, - setMedia, -}) { + setData = () => {}, + setMedia = () => {}, +}: SearchByImageProps) { const router = useRouter(); - async function findImage(formData) { + async function findImage(formData: FormData) { const response = new Promise((resolve, reject) => { fetch("https://api.trace.moe/search?anilistInfo", { method: "POST", @@ -32,14 +39,16 @@ export default function SearchByImage({ }); response - .then((data) => { - if (data?.result?.length > 0) { + .then((data: any) => { + if (data && data?.result?.length > 0) { const id = data.result[0].anilist.id; - const datas = data.result.filter((i) => i.anilist.isAdult === false); + const datas = data.result.filter( + (i: any) => i.anilist.isAdult === false + ); if (setData) setData(datas); if (searchPalette) router.push(`/en/anime/${id}`); if (setIsOpen) setIsOpen(false); - if (setMedia) setMedia(); + if (setMedia) setMedia({}); } }) .catch((error) => { @@ -47,7 +56,7 @@ export default function SearchByImage({ }); } - const handleImageSelect = async (e) => { + const handleImageSelect = async (e: any) => { const selectedImage = e.target.files[0]; if (selectedImage) { @@ -64,7 +73,7 @@ export default function SearchByImage({ useEffect(() => { // Add a global event listener for the paste event - const handlePaste = async (e) => { + const handlePaste = async (e: any) => { // e.preventDefault(); const items = e.clipboardData.items; @@ -117,3 +126,35 @@ export default function SearchByImage({ </div> ); } + +export interface TraceMoeDataTypes { + frameCount: number; + error: string; + result: TraceMoeResultTypes[]; +} + +export interface TraceMoeResultTypes { + anilist: Anilist; + filename: string; + episode: any; + from: number; + to: number; + similarity: number; + video: string; + image: string; + hovered?: boolean; +} + +interface Anilist { + id: number; + idMal: number; + title: Title; + synonyms: string[]; + isAdult: boolean; +} + +interface Title { + native: string; + romaji: string; + english: any; +} diff --git a/components/search/selection.js b/components/search/selection.ts index 767361d..767361d 100644 --- a/components/search/selection.js +++ b/components/search/selection.ts |