import NotFound from "./404"; import { NextPage } from "next"; import { NextSeo } from "next-seo"; import { useRouter } from "next/router"; import { FC, useState } from "react"; import { useQuery } from "react-query"; import axios from "axios"; import Box from "@mui/material/Box"; import Button from "@mui/material/Button"; import Container from "@mui/material/Container"; import Divider from "@mui/material/Divider"; import Typography from "@mui/material/Typography"; import { useTheme } from "@mui/material/styles"; import Add from "@mui/icons-material/Add"; import Result, { CategoryResult, ChannelResult, PlaylistResult, VideoResult } from "@interfaces/api/search"; import { apiToVideo } from "@utils/conversions"; import { useSettings } from "@utils/hooks"; import Channel from "@components/Channel/Inline"; import Layout from "@components/Layout"; import Loading from "@components/Loading"; import Video from "@components/Video/Inline"; const Results: NextPage = () => { const router = useRouter(); const [settings] = useSettings(); const query = router.query["search_query"]; const { data, isLoading } = useQuery( ["searchResultsFor", query], () => query ? axios .get(`https://${settings.invidiousServer}/api/v1/search`, { params: { q: query, type: "all" } }) .then((res) => res.data) : undefined ); const Category: FC<{ category: CategoryResult }> = ({ category }) => { const initialCount = 3; const [count, setCount] = useState(initialCount); const shownVideos = category.contents.slice(0, count); return ( <> {category.title} {shownVideos.map((video, i) => (