This commit is contained in:
hamid zarghami
2026-02-23 09:54:47 +03:30
parent 86e9b5678b
commit fd43a86e1b
2 changed files with 14 additions and 76 deletions
+3 -64
View File
@@ -1,78 +1,17 @@
import { useQuery } from "@tanstack/react-query";
// import * as api from "../service/LearningService";
import {
staticLearningsData,
staticLearningDetailData,
} from "../data/staticData";
import * as api from "../service/LearningService";
export const useGetLearnings = (search: string, limit?: number) => {
return useQuery({
queryKey: ["learnings", search, limit],
// queryFn: () => api.getLearnings(search, limit),
queryFn: () => {
// شبیه‌سازی delay سرور
return new Promise((resolve) => {
setTimeout(() => {
let filteredData = staticLearningsData;
// فیلتر کردن بر اساس جستجو
if (search) {
filteredData = {
data: {
learnings: staticLearningsData.data.learnings.filter(
(item) =>
item.title.toLowerCase().includes(search.toLowerCase()) ||
item.description
.toLowerCase()
.includes(search.toLowerCase()) ||
item.category.name
.toLowerCase()
.includes(search.toLowerCase())
),
},
};
}
// محدود کردن تعداد نتایج
if (limit) {
filteredData = {
data: {
learnings: filteredData.data.learnings.slice(0, limit),
},
};
}
resolve(filteredData);
}, 500);
});
},
queryFn: () => api.getLearnings(search, limit),
});
};
export const useGetLearningDetail = (id: string) => {
return useQuery({
queryKey: ["learning", id],
// queryFn: () => api.getLearningDetail(id),
queryFn: () => {
// شبیه‌سازی delay سرور
return new Promise((resolve) => {
setTimeout(() => {
// پیدا کردن آموزش بر اساس ID
const learning = staticLearningsData.data.learnings.find(
(item) => item.id === id
);
if (learning) {
resolve({
data: {
learning: learning,
},
});
} else {
resolve(staticLearningDetailData);
}
}, 300);
});
},
queryFn: () => api.getLearningDetail(id),
enabled: !!id,
});
};
+11 -12
View File
@@ -1,14 +1,13 @@
// import axios from "../../../config/axios";
import axios from "../../../config/axios";
// Service calls کامنت شده - در حال حاضر از دیتای استاتیک استفاده می‌شود
// export const getLearnings = async (search: string, limit?: number) => {
// const { data } = await axios.get(
// `/learnings?q=${search}&limit=${limit ? limit : 20}`
// );
// return data;
// };
export const getLearnings = async (search: string, limit?: number) => {
const { data } = await axios.get(
`/public/learnings?q=${search}&limit=${limit ? limit : 20}`,
);
return data;
};
// export const getLearningDetail = async (id: string) => {
// const { data } = await axios.get(`/learnings/${id}`);
// return data;
// };
export const getLearningDetail = async (id: string) => {
const { data } = await axios.get(`/public/learnings/${id}`);
return data;
};