mirror of
https://github.com/ForFarmTeam/ForFarm.git
synced 2025-12-19 22:14:08 +01:00
149 lines
4.8 KiB
TypeScript
149 lines
4.8 KiB
TypeScript
import axiosInstance from "./config";
|
|
import type { Blog } from "@/types";
|
|
|
|
// Dummy blog data used as a fallback.
|
|
const dummyBlogs: Blog[] = [
|
|
{
|
|
id: 1,
|
|
title: "Sustainable Farming Practices for Modern Agriculture",
|
|
description:
|
|
"Learn about eco-friendly farming techniques that can increase yield while preserving the environment.",
|
|
date: "2023-05-15",
|
|
author: "Emma Johnson",
|
|
topic: "Sustainability",
|
|
image: "/placeholder.svg?height=400&width=600",
|
|
readTime: "5 min read",
|
|
featured: true,
|
|
content: `<p>Sustainable farming is not just a trend; it's a necessary evolution in agricultural practices. […]</p>`,
|
|
tableOfContents: [
|
|
{ id: "importance", title: "The Importance of Sustainable Agriculture", level: 1 },
|
|
{ id: "crop-rotation", title: "Crop Rotation and Diversification", level: 1 },
|
|
{ id: "ipm", title: "Integrated Pest Management (IPM)", level: 1 },
|
|
{ id: "water-conservation", title: "Water Conservation Techniques", level: 1 },
|
|
{ id: "soil-health", title: "Soil Health Management", level: 1 },
|
|
{ id: "renewable-energy", title: "Renewable Energy Integration", level: 1 },
|
|
{ id: "conclusion", title: "Conclusion", level: 1 },
|
|
],
|
|
relatedArticles: [
|
|
{
|
|
id: 2,
|
|
title: "Optimizing Fertilizer Usage for Maximum Crop Yield",
|
|
topic: "Fertilizers",
|
|
image: "/placeholder.svg?height=200&width=300",
|
|
description: "",
|
|
date: "",
|
|
author: "",
|
|
readTime: "",
|
|
featured: false,
|
|
},
|
|
{
|
|
id: 4,
|
|
title: "Water Conservation Techniques for Drought-Prone Areas",
|
|
topic: "Sustainability",
|
|
image: "/placeholder.svg?height=200&width=300",
|
|
description: "",
|
|
date: "",
|
|
author: "",
|
|
readTime: "",
|
|
featured: false,
|
|
},
|
|
{
|
|
id: 5,
|
|
title: "Organic Pest Control Methods That Actually Work",
|
|
topic: "Organic",
|
|
image: "/placeholder.svg?height=200&width=300",
|
|
description: "",
|
|
date: "",
|
|
author: "",
|
|
readTime: "",
|
|
featured: false,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
id: 2,
|
|
title: "Optimizing Fertilizer Usage for Maximum Crop Yield",
|
|
description: "Discover the perfect balance of fertilizers to maximize your harvest without wasting resources.",
|
|
date: "2023-06-02",
|
|
author: "Michael Chen",
|
|
topic: "Fertilizers",
|
|
image: "/placeholder.svg?height=400&width=600",
|
|
readTime: "7 min read",
|
|
featured: false,
|
|
},
|
|
{
|
|
id: 3,
|
|
title: "Seasonal Planting Guide: What to Grow and When",
|
|
description:
|
|
"A comprehensive guide to help you plan your planting schedule throughout the year for optimal results.",
|
|
date: "2023-06-18",
|
|
author: "Sarah Williams",
|
|
topic: "Plantation",
|
|
image: "/placeholder.svg?height=400&width=600",
|
|
readTime: "8 min read",
|
|
featured: false,
|
|
},
|
|
{
|
|
id: 4,
|
|
title: "Water Conservation Techniques for Drought-Prone Areas",
|
|
description: "Essential strategies to maintain your crops during water shortages and drought conditions.",
|
|
date: "2023-07-05",
|
|
author: "David Rodriguez",
|
|
topic: "Sustainability",
|
|
image: "/placeholder.svg?height=400&width=600",
|
|
readTime: "6 min read",
|
|
featured: false,
|
|
},
|
|
{
|
|
id: 5,
|
|
title: "Organic Pest Control Methods That Actually Work",
|
|
description: "Natural and effective ways to keep pests at bay without resorting to harmful chemicals.",
|
|
date: "2023-07-22",
|
|
author: "Lisa Thompson",
|
|
topic: "Organic",
|
|
image: "/placeholder.svg?height=400&width=600",
|
|
readTime: "9 min read",
|
|
featured: false,
|
|
},
|
|
{
|
|
id: 6,
|
|
title: "The Future of Smart Farming: IoT and Agriculture",
|
|
description: "How Internet of Things technology is revolutionizing the way we monitor and manage farms.",
|
|
date: "2023-08-10",
|
|
author: "James Wilson",
|
|
topic: "Technology",
|
|
image: "/placeholder.svg?height=400&width=600",
|
|
readTime: "10 min read",
|
|
featured: true,
|
|
},
|
|
];
|
|
|
|
/**
|
|
* Fetches a list of blog posts.
|
|
* Simulates a network delay and returns dummy data when the API endpoint is unavailable.
|
|
*/
|
|
export async function fetchBlogs(): Promise<Blog[]> {
|
|
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
try {
|
|
const response = await axiosInstance.get<Blog[]>("/api/blogs");
|
|
return response.data;
|
|
} catch (error) {
|
|
return dummyBlogs;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Fetches a single blog post by its id.
|
|
* Returns the API result if available; otherwise falls back to dummy data.
|
|
*/
|
|
export async function fetchBlogById(id: string): Promise<Blog | null> {
|
|
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
try {
|
|
const response = await axiosInstance.get<Blog>(`/api/blogs/${id}`);
|
|
return response.data;
|
|
} catch (error) {
|
|
const blog = dummyBlogs.find((blog) => blog.id === Number(id));
|
|
return blog || null;
|
|
}
|
|
}
|