import { useMutation, useQueryClient } from 'react-query';

import useHuSnackbar from '@material-hu/components/design-system/Snackbar';

import { deleteLibraryCover } from 'src/services/libraryService';
import { KnowledgeLibraryArticle } from 'src/types/library';
import { RequestError, RequestSuccess } from 'src/types/services';
import { useLokaliseTranslation } from 'src/utils/i18n';
import { logEvent, LogEvents } from 'src/utils/logging';

import { librariesKeys } from '../queries';

export type SuccessResponse = RequestSuccess<typeof deleteLibraryCover>;
export type ErrorResponse = RequestError;
export type Values = {};

export const useRemoveCoverPicture = (library: KnowledgeLibraryArticle) => {
  const { t } = useLokaliseTranslation('general');
  const { enqueueSnackbar } = useHuSnackbar();
  const queryClient = useQueryClient();

  return useMutation<SuccessResponse, ErrorResponse, Values>(
    () => deleteLibraryCover(library.id),
    {
      onSuccess: () => {
        logEvent(LogEvents.WIDGET_LIBRARY_UPDATE, {
          widgetId: library.id,
          parentId: library.parentId,
          name: library.title,
        });

        enqueueSnackbar({
          title: t('cover_picture.delete.success'),
          variant: 'success',
        });
        queryClient.invalidateQueries(librariesKeys.library(library.id));
      },
    },
  );
};

export default useRemoveCoverPicture;
