added price filter, changed mobile filter ui
This commit is contained in:
@@ -72,7 +72,7 @@ const customBaseQuery = async (args, api, extraOptions) => {
|
||||
"Content-Type": "application/json",
|
||||
"Api-Token": import.meta.env.VITE_API_TOKEN || "hello-mf-s",
|
||||
},
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
const data = await guestTokenResponse.json();
|
||||
@@ -120,5 +120,6 @@ const customBaseQuery = async (args, api, extraOptions) => {
|
||||
export const baseApi = createApi({
|
||||
reducerPath: "api",
|
||||
baseQuery: customBaseQuery,
|
||||
tagTypes: ["Favorites", "cartItems", "Orders"],
|
||||
endpoints: () => ({}),
|
||||
});
|
||||
|
||||
@@ -25,20 +25,20 @@ export const brandsApi = baseApi.injectEndpoints({
|
||||
query: (brandId) => `/brands/${brandId}`,
|
||||
transformResponse: (response) => response.data || response,
|
||||
}),
|
||||
|
||||
|
||||
getBrandProducts: builder.query({
|
||||
query: (params) => {
|
||||
if (typeof params === 'string' || typeof params === 'number') {
|
||||
return `/brands/${params}/products`;
|
||||
}
|
||||
|
||||
|
||||
const { id, page = 1, limit } = params;
|
||||
let url = `/brands/${id}/products?page=${page}`;
|
||||
|
||||
|
||||
if (limit) {
|
||||
url += `&limit=${limit}`;
|
||||
}
|
||||
|
||||
|
||||
return url;
|
||||
},
|
||||
transformResponse: (response) => ({
|
||||
|
||||
@@ -1,29 +1,36 @@
|
||||
// hooks/useCart.js - YENİ DOSYA
|
||||
import { useMemo } from 'react';
|
||||
import { useGetCartQuery } from './cartApi';
|
||||
// hooks/useCart.js
|
||||
import { useMemo } from "react";
|
||||
import { useGetCartQuery } from "./cartApi";
|
||||
|
||||
export const useCart = () => {
|
||||
const { data: cartData, ...rest } = useGetCartQuery(undefined, {
|
||||
const queryResult = useGetCartQuery(undefined, {
|
||||
pollingInterval: 0,
|
||||
refetchOnMountOrArgChange: false,
|
||||
refetchOnMountOrArgChange: false, // Cache'den kullan, gereksiz GET'i engelle
|
||||
refetchOnFocus: false,
|
||||
refetchOnReconnect: false,
|
||||
});
|
||||
|
||||
const { data: response = {} } = queryResult;
|
||||
const cartData = response.data || {};
|
||||
|
||||
const cartItems = useMemo(() => {
|
||||
if (!cartData?.data || typeof cartData.data !== 'object') return [];
|
||||
return Object.values(cartData.data).flat();
|
||||
if (!cartData || typeof cartData !== "object") return [];
|
||||
return Object.values(cartData).flat();
|
||||
}, [cartData]);
|
||||
|
||||
const cartCount = useMemo(() => {
|
||||
return cartItems.reduce((total, item) => {
|
||||
return total + (parseInt(item.product_quantity, 10) || 0);
|
||||
const qty = parseInt(item.product_quantity, 10) || 0;
|
||||
return total + qty;
|
||||
}, 0);
|
||||
}, [cartItems]);
|
||||
|
||||
const getCartItem = (productId) => {
|
||||
if (!productId) return null;
|
||||
const pid = String(productId);
|
||||
return cartItems.find(
|
||||
item => item.product?.id === productId || item.product_id === productId
|
||||
(item) =>
|
||||
String(item.product?.id) === pid || String(item.product_id) === pid,
|
||||
);
|
||||
};
|
||||
|
||||
@@ -32,6 +39,6 @@ export const useCart = () => {
|
||||
cartItems,
|
||||
cartCount,
|
||||
getCartItem,
|
||||
...rest
|
||||
...queryResult,
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,55 +1,12 @@
|
||||
import { configureStore } from "@reduxjs/toolkit";
|
||||
import { baseApi } from "./api/baseApi";
|
||||
import { categoriesApi } from "./api/categories";
|
||||
import { searchApi } from "./api/searchApi";
|
||||
import { cartApi } from "./api/cartApi";
|
||||
import { brandsApi } from "./api/brandsApi";
|
||||
import { collectionsApi } from "./api/collectionsApi";
|
||||
import { favoritesApi } from "./api/favoritesApi";
|
||||
import { legalPagesApi } from "./api/legalPagesApi";
|
||||
import { locationApi } from "./api/locationApi";
|
||||
import { orderApi } from "./api/orderApi";
|
||||
import { mediaApi } from "./api/bannersApi";
|
||||
import { reviewsApi } from "./api/reviewApi";
|
||||
import { profileApi } from "./api/myProfileApi";
|
||||
import { contactApi } from "./api/contactUs";
|
||||
import { filtersApi } from "./api/filtersApi";
|
||||
|
||||
const store = configureStore({
|
||||
reducer: {
|
||||
[baseApi.reducerPath]: baseApi.reducer,
|
||||
[categoriesApi.reducerPath]: categoriesApi.reducer,
|
||||
[searchApi.reducerPath]: searchApi.reducer,
|
||||
[cartApi.reducerPath]: cartApi.reducer,
|
||||
[brandsApi.reducerPath]: brandsApi.reducer,
|
||||
[collectionsApi.reducerPath]: collectionsApi.reducer,
|
||||
[favoritesApi.reducerPath]: favoritesApi.reducer,
|
||||
[legalPagesApi.reducerPath]: legalPagesApi.reducer,
|
||||
[locationApi.reducerPath]: locationApi.reducer,
|
||||
[orderApi.reducerPath]: orderApi.reducer,
|
||||
[mediaApi.reducerPath]: mediaApi.reducer,
|
||||
[reviewsApi.reducerPath]: reviewsApi.reducer,
|
||||
[profileApi.reducerPath]: profileApi.reducer,
|
||||
[contactApi.reducerPath]: contactApi.reducer,
|
||||
[filtersApi.reducerPath]: filtersApi.reducer,
|
||||
},
|
||||
middleware: (getDefaultMiddleware) =>
|
||||
getDefaultMiddleware().concat(
|
||||
baseApi.middleware,
|
||||
categoriesApi.middleware,
|
||||
searchApi.middleware,
|
||||
brandsApi.middleware,
|
||||
collectionsApi.middleware,
|
||||
favoritesApi.middleware,
|
||||
legalPagesApi.middleware,
|
||||
locationApi.middleware,
|
||||
orderApi.middleware,
|
||||
reviewsApi.middleware,
|
||||
mediaApi.middleware,
|
||||
profileApi.middleware,
|
||||
contactApi.middleware,
|
||||
filtersApi.middleware
|
||||
),
|
||||
getDefaultMiddleware().concat(baseApi.middleware),
|
||||
});
|
||||
|
||||
export default store;
|
||||
|
||||
Reference in New Issue
Block a user