diff --git a/src/contents/App.tsx b/src/contents/App.tsx index 7e3fda4..1aa71b7 100644 --- a/src/contents/App.tsx +++ b/src/contents/App.tsx @@ -23,7 +23,6 @@ export const getStyle = () => { const App = () => { const { initialize, - modalRef, users, loading, stopRetrieveLoop, @@ -32,6 +31,12 @@ const App = () => { errorMessage, } = useRetrieveBskyUsers(); + const [isModalOpen, setIsModalOpen] = React.useState(false); + const closeModal = () => { + setIsModalOpen(false); + stopRetrieveLoop(); + }; + React.useEffect(() => { const messageHandler = ( message: { @@ -43,6 +48,7 @@ const App = () => { if (Object.values(MESSAGE_NAMES).includes(message.name)) { initialize() .then(() => { + setIsModalOpen(true); sendResponse({ hasError: false }); }) .catch((e) => { @@ -72,7 +78,7 @@ const App = () => { return ( <> - +
{loading && (

diff --git a/src/lib/components/Modal.stories.tsx b/src/lib/components/Modal.stories.tsx index 4017f28..bd007ce 100644 --- a/src/lib/components/Modal.stories.tsx +++ b/src/lib/components/Modal.stories.tsx @@ -1,8 +1,6 @@ import type { Meta, StoryObj } from "@storybook/react"; - -import { useRef } from "react"; +import { useState } from "react"; import Modal from "./Modal"; -import type { Props as UserCardProps } from "./UserCard"; const meta: Meta = { title: "Components/Modal", @@ -10,22 +8,22 @@ const meta: Meta = { }; export default meta; -type Story = StoryObj<{ items: UserCardProps["user"][] }>; +type Story = StoryObj; const DefaultTemplate: Story = { render: () => { - const modalRef = useRef(null); + const [isModalOpen, setIsModalOpen] = useState(false); return ( <> - + setIsModalOpen(false)}>

Modal content

diff --git a/src/lib/components/Modal.tsx b/src/lib/components/Modal.tsx index 4b0440f..e8cf0ee 100644 --- a/src/lib/components/Modal.tsx +++ b/src/lib/components/Modal.tsx @@ -1,14 +1,15 @@ import type React from "react"; -import { useEffect } from "react"; +import { useEffect, useRef } from "react"; export type Props = { children: React.ReactNode; - anchorRef: React.RefObject; - open?: boolean; + open: boolean; onClose?: () => void; }; -const Modal = ({ children, anchorRef, open = false, onClose }: Props) => { +const Modal = ({ children, open = false, onClose }: Props) => { + const anchorRef = useRef(null); + useEffect(() => { if (anchorRef.current) { anchorRef.current.addEventListener("close", onClose); @@ -19,7 +20,7 @@ const Modal = ({ children, anchorRef, open = false, onClose }: Props) => { anchorRef.current.removeEventListener("close", onClose); } }; - }, [anchorRef, onClose]); + }, [onClose]); return ( <> diff --git a/src/lib/hooks/useRetrieveBskyUsers.ts b/src/lib/hooks/useRetrieveBskyUsers.ts index 6830612..e7c248b 100644 --- a/src/lib/hooks/useRetrieveBskyUsers.ts +++ b/src/lib/hooks/useRetrieveBskyUsers.ts @@ -45,11 +45,6 @@ export const useRetrieveBskyUsers = () => { messageName: (typeof MESSAGE_NAMES)[keyof typeof MESSAGE_NAMES]; }>(null); - const modalRef = React.useRef(null); - const showModal = () => { - modalRef.current?.showModal(); - }; - const retrieveBskyUsers = React.useCallback( async (usersData: CrawledUserInfo[]) => { for (const userData of usersData) { @@ -151,7 +146,6 @@ export const useRetrieveBskyUsers = () => { }); setLoading(true); await setUsers([]); - showModal(); }, []); const restart = React.useCallback(() => { @@ -173,8 +167,6 @@ export const useRetrieveBskyUsers = () => { ); return { - modalRef, - showModal, initialize, users, loading,