schon/storefront/app/composables/feedbacks/useFeedbacks.ts
Alexandr SaVBaD Waltz 398e11d748 fix(storefront): rename useBrands to useFeedbacks for correct composable naming
Aligned composable name with its purpose by renaming `useBrands` to `useFeedbacks`. This resolves the naming inconsistency and improves code readability and maintainability.
2026-03-02 13:57:20 +03:00

87 lines
2.1 KiB
TypeScript

import { GET_FEEDBACKS } from '@graphql/queries/standalone/feedbacks';
import type {IFeedback, IFeedbacksResponse} from '@types';
interface IFeedbackArgs {
feedbackAfter?: string;
feedbackOrderBy?: string;
feedbackUuid?: string;
productUuid?: string;
userUuid?: string;
}
interface IFeedbackVars {
feedbackFirst: number;
feedbackAfter?: string;
feedbackOrderBy?: string;
feedbackUuid?: string;
productUuid?: string;
userUuid?: string;
}
export function useFeedbacks(args: IFeedbackArgs = {}) {
const variables = reactive<IFeedbackVars>({
feedbackFirst: 3,
feedbackAfter: args.feedbackAfter,
feedbackOrderBy: args.feedbackOrderBy,
feedbackUuid: args.feedbackUuid,
productUuid: args.productUuid,
userUuid: args.userUuid,
});
const pending = ref(false);
const feedbacks = ref<IFeedback[]>([]);
const pageInfo = ref<{
hasNextPage: boolean;
endCursor: string;
}>({
hasNextPage: false,
endCursor: '',
});
const error = ref<string | null>(null);
const getFeedbacks = async (): Promise<void> => {
pending.value = true;
const queryVariables = {
feedbackFirst: variables.first,
feedbackAfter: variables.feedbackAfter || undefined,
feedbackOrderBy: variables.feedbackOrderBy || undefined,
feedbackUuid: variables.feedbackUuid || undefined,
productUuid: variables.productUuid || undefined,
userUuid: variables.userUuid || undefined,
};
const { data, error: mistake } = await useAsyncQuery<IFeedbacksResponse>(GET_FEEDBACKS, queryVariables);
if (data.value?.feedbacks?.edges) {
pageInfo.value = data.value?.brands.pageInfo;
if (variables.feedbackAfter) {
feedbacks.value = [
...feedbacks.value,
...data.value.feedbacks.edges,
];
} else {
feedbacks.value = data.value?.feedbacks.edges;
}
}
if (mistake.value) {
error.value = mistake.value;
}
pending.value = false;
};
watch(error, (e) => {
if (e) console.error('useFeedbacks error:', e);
});
return {
pending,
feedbacks,
pageInfo,
variables,
getFeedbacks,
};
}