import MangaFunctions from "../MangaFunctions"; import React, {Children, ReactElement, ReactEventHandler, useEffect, useState} from "react"; import Icon from '@mdi/react'; import { mdiTagTextOutline, mdiAccountEdit, mdiLinkVariant } from '@mdi/js'; import MarkdownPreview from '@uiw/react-markdown-preview'; import {AuthorElement} from "./IAuthor"; import {LinkElement} from "./ILink"; export default interface IManga{ mangaId: string; idOnConnectorSite: string; name: string; description: string; websiteUrl: string; year: number; originalLanguage: string; releaseStatus: MangaReleaseStatus; folderName: string; ignoreChapterBefore: number; mangaConnectorId: string; authorIds: string[]; tags: string[]; linkIds: string[]; altTitleIds: string[]; } export enum MangaReleaseStatus { Continuing = "Continuing", Completed = "Completed", OnHiatus = "OnHiatus", Cancelled = "Cancelled", Unreleased = "Unreleased", } export function MangaItem({apiUri, mangaId, children} : {apiUri: string, mangaId: string, children?: (string | ReactElement)[]}) : ReactElement { const LoadMangaCover : ReactEventHandler = (e) => { if(e.currentTarget.src != MangaFunctions.GetMangaCoverImageUrl(apiUri, mangaId, e.currentTarget)) e.currentTarget.src = MangaFunctions.GetMangaCoverImageUrl(apiUri, mangaId, e.currentTarget); } let [manga, setManga] = useState(null); let [clicked, setClicked] = useState(false); useEffect(() => { MangaFunctions.GetMangaById(apiUri, mangaId).then(setManga); }, []); return (
setClicked(!clicked)}> MangaFunctions Cover

{manga ? manga.mangaConnectorId : "Connector"}

{manga ? manga.name : "Name"}

Link
{manga ? manga.authorIds.map(authorId =>

) :

} {manga ? manga.tags.map(tag =>

{tag}

) :

Tag

} {manga ? manga.linkIds.map(linkId =>

) :

}
{children ? children.map(c => { if(c instanceof Element) return c as ReactElement; else return {c} }) : null}
) }