import { MANAGE_FEEDBACK } from '@graphql/mutations/feedbacks'; import type { IFeedbackActionResponse } from '@types'; interface IFeedbackActionArguments { action: string; orderProductUuid: string; comment?: string; rating?: number; } export function useFeedbackAction() { const { t } = useI18n(); const { $notify } = useNuxtApp(); const userStore = useUserStore(); const isAuthenticated = computed(() => userStore.isAuthenticated); const { mutate, loading, error } = useMutation(MANAGE_FEEDBACK); async function manageFeedback(args: IFeedbackActionArguments) { if (isAuthenticated.value) { const variables: Record = { action: args.action, orderProductUuid: args.orderProductUuid, }; if (args.comment) { variables.comment = args.comment; } if (args.rating) { variables.rating = args.rating; } const result = await mutate(variables); if (result?.data?.feedback) { $notify({ message: t('popup.success.addFeedback'), type: 'success', }); } } else { $notify({ message: t('popup.errors.loginFirst'), type: 'error', }); } } watch(error, (err) => { if (!err) return; console.error('useFeedbackAction error:', err); let message = t('popup.errors.defaultError'); if (isGraphQLError(err)) { message = err.graphQLErrors?.[0]?.message || message; } else { message = err.message; } $notify({ message, type: 'error', title: t('popup.errors.main'), }); }); return { loading, manageFeedback, }; }