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 (
<>