import { useCollections } from "@/entrypoints/sidepanel/contexts/CollectionsProvider"; import { track } from "@/features/analytics"; import useSettings, { SettingsValue } from "@/hooks/useSettings"; import { CollectionItem } from "@/models/CollectionModels"; import { closeTabsAsync } from "@/utils/closeTabsAsync"; import { createCollectionFromTabs } from "@/utils/createCollectionFromTabs"; import { getTabsToSaveAsync } from "@/utils/getTabsToSaveAsync"; import sendPartialSaveNotification from "@/utils/sendPartialSaveNotification"; import watchTabSelection from "@/utils/watchTabSelection"; import { Menu, MenuButtonProps, MenuItem, MenuList, MenuPopover, MenuTrigger, SplitButton } from "@fluentui/react-components"; import * as ic from "@fluentui/react-icons"; import { ReactElement } from "react"; export default function ActionButton(): ReactElement { const { addCollection } = useCollections(); const [defaultAction] = useSettings("defaultSaveAction"); const [selection, setSelection] = useState<"all" | "selected">("all"); const handleAction = async (primary: boolean) => { const [tabs, skipCount] = await getTabsToSaveAsync(); if (tabs.length < 1) { await sendPartialSaveNotification(); return; } const collection: CollectionItem = await createCollectionFromTabs(tabs); await addCollection(collection); if (skipCount > 0) await sendPartialSaveNotification(); const closeTabs: boolean = primary === (defaultAction === "set_aside"); if (closeTabs) await closeTabsAsync(tabs); track(closeTabs ? "set_aside" : "save"); }; useEffect(() => { return watchTabSelection(setSelection); }, []); if (defaultAction === null) return
; const primaryActionKey: ActionsKey = `${defaultAction}.${selection}`; const PrimaryIcon = actionIcons[primaryActionKey]; const secondaryActionKey: ActionsKey = `${defaultAction === "save" ? "set_aside" : "save"}.${selection}`; const SecondaryIcon = actionIcons[secondaryActionKey]; return ( ); } const actionIcons: Record