import React, { useEffect, useRef } from "react"; import { Box } from "@mui/material"; import { useQuery } from "@tanstack/react-query"; import hljs from "highlight.js/lib/core"; import diff from "highlight.js/lib/languages/diff"; import "highlight.js/styles/github.css"; import { Client } from "api/client/AhrimanClient"; import { QueryKeys } from "api/QueryKeys"; import CopyButton from "components/common/CopyButton"; import type { Changes } from "api/types/Changes"; import type { RepositoryId } from "api/types/RepositoryId"; hljs.registerLanguage("diff", diff); interface ChangesTabProps { packageBase: string; repo: RepositoryId; } export default function ChangesTab({ packageBase, repo }: ChangesTabProps): React.JSX.Element { const codeRef = useRef(null); const { data } = useQuery({ queryKey: QueryKeys.changes(packageBase, repo), queryFn: () => Client.fetchChanges(packageBase, repo), enabled: !!packageBase, }); const changesText = data?.changes ?? ""; useEffect(() => { if (codeRef.current) { codeRef.current.textContent = changesText; delete codeRef.current.dataset.highlighted; hljs.highlightElement(codeRef.current); } }, [changesText]); return ( changesText} /> ); }