update
This commit is contained in:
@@ -3,3 +3,6 @@
|
||||
# Neshan (نشان) map API key — get one from https://platform.neshan.org
|
||||
# Used by components/MapSection.jsx for the static map image.
|
||||
NEXT_PUBLIC_NESHAN_API_KEY=
|
||||
|
||||
|
||||
NEXT_PUBLIC_API_BASE_URL=https://your-real-backend.com
|
||||
Generated
+12
-8
@@ -2,14 +2,10 @@
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="bb7b50a5-be9c-4cd7-a05b-979f0e91b173" name="Changes" comment="update">
|
||||
<change afterPath="$PROJECT_DIR$/lib/axios.js" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.env.local.example" beforeDir="false" afterPath="$PROJECT_DIR$/.env.local.example" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/page.jsx" beforeDir="false" afterPath="$PROJECT_DIR$/app/page.jsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/components/HeroSection.jsx" beforeDir="false" afterPath="$PROJECT_DIR$/components/HeroSection.jsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/data/content.js" beforeDir="false" afterPath="$PROJECT_DIR$/data/content.js" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/public/images/machine-slide-0.png" beforeDir="false" afterPath="$PROJECT_DIR$/public/images/machine-slide-0.png" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/public/images/machine-slide-2.png" beforeDir="false" afterPath="$PROJECT_DIR$/public/images/machine-slide-2.png" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/public/images/machine-slide-222.png" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/public/video/company-intro-placeholder.mp4" beforeDir="false" afterPath="$PROJECT_DIR$/public/video/company-intro-placeholder.mp4" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
@@ -92,7 +88,7 @@
|
||||
<workItem from="1785583517424" duration="145000" />
|
||||
<workItem from="1785645096071" duration="26000" />
|
||||
<workItem from="1785646314677" duration="16621000" />
|
||||
<workItem from="1785730130350" duration="7877000" />
|
||||
<workItem from="1785730130350" duration="8979000" />
|
||||
</task>
|
||||
<task id="LOCAL-00001" summary="update">
|
||||
<option name="closed" value="true" />
|
||||
@@ -174,7 +170,15 @@
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1785735982915</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="11" />
|
||||
<task id="LOCAL-00011" summary="update">
|
||||
<option name="closed" value="true" />
|
||||
<created>1785744250045</created>
|
||||
<option name="number" value="00011" />
|
||||
<option name="presentableId" value="LOCAL-00011" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1785744250045</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="12" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
|
||||
@@ -18,7 +18,9 @@ export default function HomePage() {
|
||||
return (
|
||||
<main className="relative bg-page">
|
||||
<Header/>
|
||||
|
||||
<CartDrawer/>
|
||||
|
||||
<ChatWidget/>
|
||||
|
||||
<HeroSection/>
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
import axios from 'axios';
|
||||
|
||||
|
||||
const api = axios.create({
|
||||
baseURL: process.env.NEXT_PUBLIC_API_BASE_URL || 'https://api.example.com',
|
||||
timeout: 15000,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
api.interceptors.request.use(
|
||||
(config) => {
|
||||
const token =
|
||||
typeof window !== 'undefined' ? window.localStorage.getItem('rm-auth-token') : null;
|
||||
|
||||
if (token) {
|
||||
config.headers.Authorization = `Bearer ${token}`;
|
||||
}
|
||||
|
||||
// console.log('[API request]', config.method?.toUpperCase(), config.url);
|
||||
|
||||
return config;
|
||||
|
||||
|
||||
},
|
||||
(error) => Promise.reject(error)
|
||||
);
|
||||
|
||||
|
||||
api.interceptors.response.use(
|
||||
(response) => response,
|
||||
|
||||
(error) => {
|
||||
if (error.response) {
|
||||
|
||||
const status = error.response.status;
|
||||
|
||||
if (status === 401) {
|
||||
// window.localStorage.removeItem('rm-auth-token');
|
||||
// window.location.href = '/login';
|
||||
}
|
||||
|
||||
if (status >= 500) {
|
||||
// message.error('خطایی در سرور رخ داد. لطفاً بعداً تلاش کنید.');
|
||||
}
|
||||
} else if (error.request) {
|
||||
// درخواست ارسال شد ولی هیچ جوابی نیومد (قطعی اینترنت، سرور خاموش و ...)
|
||||
// TODO: message.error('اتصال با سرور برقرار نشد.');
|
||||
}
|
||||
|
||||
|
||||
return Promise.reject(error);
|
||||
|
||||
}
|
||||
);
|
||||
|
||||
export default api;
|
||||
Reference in New Issue
Block a user