import { useBskyUserManager } from "~lib/hooks/useBskyUserManager"; import "./style.css"; import { ToastContainer, toast } from "react-toastify"; import useConfirm from "~lib/components/ConfirmDialog"; import Sidebar from "~lib/components/Sidebar"; import "react-toastify/dist/ReactToastify.css"; import type { ProfileView } from "@atproto/api/dist/client/types/app/bsky/actor/defs"; import { AnimatePresence, motion } from "framer-motion"; import React from "react"; import ReSearchModal from "~components/ReSearchModal"; import DetectedUserListItem from "~lib/components/DetectedUserListItem"; import DonationCard from "~lib/components/DonationCard"; const Option = () => { const { users, filteredUsers, matchTypeFilter, changeMatchTypeFilter, handleClickAction, actionMode, matchTypeStats, importList, followAll, blockAll, reSearch, reSearchResults, changeDetectedUser, clearReSearchResults, deleteUser, } = useBskyUserManager(); const { confirm: followAllConfirm, ConfirmationDialog: FollowAllConfirmationDialog, } = useConfirm({ title: chrome.i18n.getMessage("follow_all_confirmation_title"), message: chrome.i18n.getMessage("follow_all_confirmation_message"), cancelText: chrome.i18n.getMessage("confirmation_cancel"), okText: chrome.i18n.getMessage("confirmation_ok"), }); const { confirm: importListConfirm, ConfirmationDialog: ImportListConfirmationDialog, } = useConfirm({ title: chrome.i18n.getMessage("import_list_confirmation_title"), message: chrome.i18n.getMessage("import_list_confirmation_message"), cancelText: chrome.i18n.getMessage("confirmation_cancel"), okText: chrome.i18n.getMessage("confirmation_ok"), }); const handleFollowAll = async () => { if (!(await followAllConfirm())) { return; } toast.promise(followAll, { pending: chrome.i18n.getMessage("toast_pending"), success: { render({ data }) { return ( {chrome.i18n.getMessage("toast_follow_all_success", [ data.toString(), ])} ); }, }, }); }; const handleBlockAll = async () => { if (!(await followAllConfirm())) { return; } toast.promise(blockAll, { pending: chrome.i18n.getMessage("toast_pending"), success: { render({ data }) { return ( {chrome.i18n.getMessage("toast_block_all_success", [ data.toString(), ])} ); }, }, }); }; const handleImportList = async () => { if (!(await importListConfirm())) { return; } toast.promise(importList, { pending: chrome.i18n.getMessage("toast_pending"), success: { render({ data }) { return ( <> {chrome.i18n.getMessage("toast_import_list_success")}
{chrome.i18n.getMessage("toast_import_list_success_view_list")} ); }, }, error: { render({ data }) { return chrome.i18n.getMessage("toast_import_list_error", [ data as string, ]); }, }, }); }; const [showReSearchModal, setShowReSearchModal] = React.useState(false); const handleReSearch = async (user: { sourceDid: string; accountName: string; displayName: string; }) => { reSearch({ sourceDid: user.sourceDid, accountName: user.accountName, displayName: user.displayName, }); setShowReSearchModal(true); }; const handleClickReSearchResult = ({ sourceDid, user, }: { sourceDid: string; user: ProfileView; }) => { changeDetectedUser(sourceDid, user); setShowReSearchModal(false); clearReSearchResults(); }; const handleCloseReSearchModal = () => { setShowReSearchModal(false); clearReSearchResults(); }; return ( <>

{chrome.i18n.getMessage("source")}

{chrome.i18n.getMessage("detected")}

{filteredUsers.map((user) => ( ))}
); }; export default Option;