import { useCallback, useMemo } from "react"; import { Button, ButtonGroup, ButtonProps, IconName, Intent, Menu } from "@blueprintjs/core"; import { Popover2 } from "@blueprintjs/popover2"; import ActionsMenu from "./ActionsMenu"; import MergeAsOptions from "./MergeAsOptions"; import { useModifyTags } from "@clients/zotero"; import { makeSuggestionFor } from "./utils"; import { CustomClasses } from "../../../constants"; import { ZLibrary, ZTagEntry, ZTagSuggestionAuto, ZTagSuggestionManual } from "Types/transforms"; type AutoMergeProps = { library: ZLibrary, suggestion: ZTagSuggestionAuto }; function AutoMerge({ library, suggestion }: AutoMergeProps){ const { recommend, use } = suggestion; const { mutate, status } = useModifyTags(); const triggerMerge = useCallback(() => { mutate({ into: recommend, library, tags: [...use.roam, ...use.zotero] }); }, [library, mutate, recommend, use]); const buttonProps = useMemo>(() => { if(status == "error"){ return { disabled: true, icon: "warning" as IconName, intent: Intent.DANGER }; } else if(status == "success"){ return { disabled: true, icon: "tick" as IconName, intent: Intent.SUCCESS, text: "Merged" }; } else { return { icon: "many-to-one" as IconName }; } }, [status]); return