import { ConfirmButton } from "@dashboard/components/ConfirmButton";
import { IMessage } from "@dashboard/components/messages";
import {
useGiftCardBulkActivateMutation,
useGiftCardBulkDeactivateMutation,
} from "@dashboard/graphql";
import useNotifier from "@dashboard/hooks/useNotifier";
import { getByIds } from "@dashboard/orders/components/OrderReturnPage/utils";
import React from "react";
import { useIntl } from "react-intl";
import { bulkEnableDisableSectionMessages as messages } from "../messages";
import { useGiftCardList } from "../providers/GiftCardListProvider";
import { GIFT_CARD_LIST_QUERY } from "../queries";
export const GiftCardListBulkActions: React.FC = () => {
const intl = useIntl();
const notify = useNotifier();
const { selectedRowIds, clearRowSelection, giftCards } = useGiftCardList();
const hasAnyEnabledCardsSelected = giftCards
.filter(getByIds(selectedRowIds))
.some(({ isActive }) => isActive);
const areAllSelectedCardsActive = giftCards
.filter(getByIds(selectedRowIds))
.every(({ isActive }) => isActive);
const hasAnyDisabledCardsSelected = giftCards
.filter(getByIds(selectedRowIds))
.some(({ isActive }) => !isActive);
const areAllSelectedCardsDisabled = giftCards
.filter(getByIds(selectedRowIds))
.every(({ isActive }) => !isActive);
const [activateGiftCards, activateGiftCardsOpts] =
useGiftCardBulkActivateMutation({
onCompleted: data => {
const notifierData: IMessage = !!data?.giftCardBulkActivate?.errors
?.length
? {
status: "error",
text: intl.formatMessage(messages.errorActivateAlertText, {
count: data?.giftCardBulkActivate?.count,
}),
}
: {
status: "success",
text: intl.formatMessage(messages.successActivateAlertText, {
count: data?.giftCardBulkActivate?.count,
}),
};
notify(notifierData);
if (!data?.giftCardBulkActivate?.errors?.length) {
clearRowSelection();
}
},
refetchQueries: [GIFT_CARD_LIST_QUERY],
});
const [deactivateGiftCards, deactivateGiftCardsOpts] =
useGiftCardBulkDeactivateMutation({
onCompleted: data => {
const notifierData: IMessage = !!data?.giftCardBulkDeactivate?.errors
?.length
? {
status: "error",
text: intl.formatMessage(messages.errorDeactivateAlertText, {
count: data?.giftCardBulkDeactivate?.count,
}),
}
: {
status: "success",
text: intl.formatMessage(messages.successDeactivateAlertText, {
count: data?.giftCardBulkDeactivate?.count,
}),
};
notify(notifierData);
if (!data?.giftCardBulkDeactivate?.errors?.length) {
clearRowSelection();
}
},
refetchQueries: [GIFT_CARD_LIST_QUERY],
});
const handleActivateGiftCards = async () => {
await activateGiftCards({ variables: { ids: selectedRowIds } });
clearRowSelection();
};
const handleDeactivateGiftCards = async () => {
await deactivateGiftCards({ variables: { ids: selectedRowIds } });
clearRowSelection();
};
const isSelectionMixed =
hasAnyEnabledCardsSelected && hasAnyDisabledCardsSelected;
return (
<>
{(areAllSelectedCardsDisabled || isSelectionMixed) && (
{intl.formatMessage(messages.enableLabel)}
)}
{(areAllSelectedCardsActive || isSelectionMixed) && (
{intl.formatMessage(messages.disableLabel)}
)}
>
);
};