diff --git a/components/RepositoryItem.tsx b/components/RepositoryItem.tsx index 6b41bb92..48b7d9ef 100644 --- a/components/RepositoryItem.tsx +++ b/components/RepositoryItem.tsx @@ -1,7 +1,6 @@ -import dayjs from "dayjs"; -import relativeTime from "dayjs/plugin/relativeTime"; import React, { useEffect, useState } from "react"; +import { useLastModified } from "../hooks/useLastModified"; import { Repository } from "../types"; import { IssuesList } from "./IssueList"; import { RepositoryDescription } from "./RepositoryDescription"; @@ -16,14 +15,6 @@ export const RepositoryItem = ({ repository }: RepositoryItemProps) => { const [isIssueOpen, setIsIssueOpen] = useState(false); const [isIssuesListVisible, setIsIssuesListVisible] = useState(false); - dayjs.extend(relativeTime); - const useLastModified = (date: string) => { - const [lastModified, setLastModified] = useState(""); - - useEffect(() => setLastModified(dayjs(date).fromNow()), [date]); - - return lastModified; - }; const lastModified = useLastModified(repository.last_modified); useEffect(() => { @@ -31,7 +22,9 @@ export const RepositoryItem = ({ repository }: RepositoryItemProps) => { setIsIssuesListVisible(true); } else { // Delay unmounting to allow close animation to complete - const timer = setTimeout(() => setIsIssuesListVisible(false), 300); + const timer = setTimeout(() => { + setIsIssuesListVisible(false); + }, 300); return () => clearTimeout(timer); } }, [isIssueOpen]); diff --git a/hooks/useLastModified.tsx b/hooks/useLastModified.tsx new file mode 100644 index 00000000..35ec93b5 --- /dev/null +++ b/hooks/useLastModified.tsx @@ -0,0 +1,8 @@ +import dayjs from "dayjs"; +import relativeTime from "dayjs/plugin/relativeTime"; + +dayjs.extend(relativeTime); + +export const useLastModified = (date: string) => { + return dayjs(date).fromNow(); +};