-
+
{ desc }
diff --git a/components/Production.js b/components/Production.js
index 9bcb503..3b32b46 100755
--- a/components/Production.js
+++ b/components/Production.js
@@ -1,20 +1,11 @@
import Image from 'next/image'
+import { getPublicContent } from '@/lib/content'
import { equipmentImages } from '@/lib/localImages'
-async function getData(id) {
- const res = await fetch(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/public/content/index/${id}`)
-
- if (!res.ok) {
- throw new Error('Failed to fetch data')
- }
-
- return res.json()
-}
-
export default async function Production({ lang }){
- const data = await getData(lang === 'fa' ? 1 : 2);
+ const data = await getPublicContent(lang);
// Add safety checks for data structure
if (!data || typeof data !== 'object') {
@@ -64,14 +55,14 @@ export default async function Production({ lang }){
-
+
{ data.equipment3Title?.[0]?.body || '' }
{ data.equipment3Desc?.[0]?.body || '' }
-
+
{ data.equipment3Title?.[1]?.body || '' }
{ data.equipment3Desc?.[1]?.body || '' }
@@ -82,14 +73,14 @@ export default async function Production({ lang }){
{ data.equipment3Title?.[2]?.body || '' }
{ data.equipment3Desc?.[2]?.body || '' }
-
+
{ data.equipment3Title?.[3]?.body || '' }
{ data.equipment3Desc?.[3]?.body || '' }
-
+
diff --git a/components/Products.js b/components/Products.js
index 3d7ca74..62385b0 100755
--- a/components/Products.js
+++ b/components/Products.js
@@ -1,20 +1,11 @@
import Image from 'next/image'
import productbg from '../public/productbg.webp'
import ProductCard from '@/components/ProductCard'
+import { getPublicContent } from '@/lib/content'
import { productImages } from '@/lib/localImages'
-async function getData(id) {
- const res = await fetch(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/public/content/index/${id}`)
-
- if (!res.ok) {
- throw new Error('Failed to fetch data')
- }
-
- return res.json()
-}
-
export default async function Products({ lang }){
- const data = await getData(lang === 'fa' ? 1 : 2);
+ const data = await getPublicContent(lang);
// Add safety checks for data structure
if (!data || typeof data !== 'object') {
@@ -33,7 +24,7 @@ export default async function Products({ lang }){
{
productImages.map((image, index) => (
-
+
))
}
diff --git a/lib/content.js b/lib/content.js
new file mode 100644
index 0000000..0e4ac21
--- /dev/null
+++ b/lib/content.js
@@ -0,0 +1,23 @@
+export async function getPublicContent(lang) {
+ const id = lang === 'fa' ? 1 : 2
+ const baseUrl = process.env.NEXT_PUBLIC_API_BASE_URL
+
+ if (!baseUrl) {
+ console.error('NEXT_PUBLIC_API_BASE_URL is not set')
+ return {}
+ }
+
+ try {
+ const res = await fetch(`${baseUrl}/api/public/content/index/${id}`)
+
+ if (!res.ok) {
+ console.error(`Failed to fetch public content: ${res.status}`)
+ return {}
+ }
+
+ return res.json()
+ } catch (error) {
+ console.error('Failed to fetch public content', error)
+ return {}
+ }
+}
diff --git a/lib/localImages.js b/lib/localImages.js
index 7de9a9d..6126274 100644
--- a/lib/localImages.js
+++ b/lib/localImages.js
@@ -1,20 +1,33 @@
+import aboutMagnesiumRock from '@/public/images/about-magnesium-rock.jpg'
+import aboutProduction from '@/public/images/about-production.jpg'
+import equipmentCastingMachine from '@/public/images/equipment-casting-machine.jpg'
+import equipmentElectrothermLine from '@/public/images/equipment-electrotherm-line.jpg'
+import equipmentFurnace from '@/public/images/equipment-furnace.jpg'
+import equipmentPressMachine from '@/public/images/equipment-press-machine.jpg'
+import productAnodeBars from '@/public/images/product-anode-bars.jpg'
+import productCncParts from '@/public/images/product-cnc-parts.jpg'
+import productIngotStack from '@/public/images/product-ingot-stack.jpg'
+import productMachinedAnodes from '@/public/images/product-machined-anodes.jpg'
+import productPlates from '@/public/images/product-plates.jpg'
+import productSacrificialAnodes from '@/public/images/product-sacrificial-anodes.jpg'
+
export const aboutImages = {
- primary: "/images/about-production.jpg",
- secondary: "/images/about-magnesium-rock.jpg",
+ primary: aboutProduction,
+ secondary: aboutMagnesiumRock,
}
export const productImages = [
- "/images/product-ingot-stack.jpg",
- "/images/product-plates.jpg",
- "/images/product-anode-bars.jpg",
- "/images/product-cnc-parts.jpg",
- "/images/product-machined-anodes.jpg",
- "/images/product-sacrificial-anodes.jpg",
+ productIngotStack,
+ productPlates,
+ productAnodeBars,
+ productCncParts,
+ productMachinedAnodes,
+ productSacrificialAnodes,
]
export const equipmentImages = [
- "/images/equipment-furnace.jpg",
- "/images/equipment-electrotherm-line.jpg",
- "/images/equipment-casting-machine.jpg",
- "/images/equipment-press-machine.jpg",
+ equipmentFurnace,
+ equipmentElectrothermLine,
+ equipmentCastingMachine,
+ equipmentPressMachine,
]
diff --git a/middleware.js b/middleware.js
index fbb1e41..b60ade9 100755
--- a/middleware.js
+++ b/middleware.js
@@ -2,23 +2,25 @@ import { match } from '@formatjs/intl-localematcher'
import Negotiator from 'negotiator'
// Get the preferred locale, similar to the above or using a library
-let locales = ['en', 'fa']
-function getLocale(request) {
- let headers = { 'accept-language': 'en-US,en;q=0.5' }
- let languages = new Negotiator({ headers }).languages()
- let defaultLocale = 'en-US';
- let domains= [
- {
- domain: "rahavardmgp.ir",
- defaultLocale: 'fa'
- },
- {
- domain: "rahavardmgp.com",
- defaultLocale: 'en'
- }
- ]
-
- return match(languages, locales, defaultLocale, domains) // -> 'en-US'
+const locales = ['en', 'fa']
+
+function getLocale(request) {
+ const hostname = request.headers.get('host')?.split(':')[0]
+
+ if (hostname === 'rahavardmgp.ir' || hostname === 'www.rahavardmgp.ir') {
+ return 'fa'
+ }
+
+ if (hostname === 'rahavardmgp.com' || hostname === 'www.rahavardmgp.com') {
+ return 'en'
+ }
+
+ const headers = {
+ 'accept-language': request.headers.get('accept-language') || 'fa'
+ }
+ const languages = new Negotiator({ headers }).languages()
+
+ return match(languages, locales, 'fa')
}
export function middleware(request) {