Files
edr-platform/apps/edr-freight-web/backoffice/src/hooks/useLogoSettings.ts
Hagernesh c4bf3c9479 feat(freight): add company logo setting applied to every generated document
New logo-settings module (mirrors stamp-settings): single uploaded logo,
stored via FilesService/MinIO, injected as a data URL into invoice/receipt,
contract, warehouse, train-scheduling, and payment-receipt PDFs. Adds a
matching backoffice settings page and settings:logo:view/manage permissions.

>
2026-08-13 10:54:23 +00:00

46 lines
1.3 KiB
TypeScript

import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { useTranslation } from "react-i18next";
import { toast } from "sonner";
import { logoSettingsService } from "@/services/logoSettings.service";
import { useErrorHandler } from "@/shared/hooks/useErrorHandler";
const QUERY_KEY = ["logoSettings"];
export const useLogoSettingsQuery = () =>
useQuery({
queryKey: QUERY_KEY,
queryFn: () => logoSettingsService.get(),
});
export const useSetLogo = () => {
const queryClient = useQueryClient();
const { t } = useTranslation();
const { handleError } = useErrorHandler(t);
return useMutation({
mutationFn: (logoImageBase64: string) =>
logoSettingsService.set(logoImageBase64),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: QUERY_KEY });
toast.success(t("logoSettings.updated", "Company logo updated"));
},
onError: handleError,
});
};
export const useClearLogo = () => {
const queryClient = useQueryClient();
const { t } = useTranslation();
const { handleError } = useErrorHandler(t);
return useMutation({
mutationFn: () => logoSettingsService.clear(),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: QUERY_KEY });
toast.success(t("logoSettings.cleared", "Company logo removed"));
},
onError: handleError,
});
};