aboutsummaryrefslogtreecommitdiff
path: root/components/search
diff options
context:
space:
mode:
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