The backend now answers 503 with code MAINTENANCE_MODE while maintenance is on. Without this change a visitor got a red error toast over a broken page client-side, and a silently empty page server-side, because fetchReq discards the status and returns null on any failure. - lib/maintenance.js detects the state by BOTH status 503 and the error code; a bare 503 can come from a reverse proxy and is not maintenance - The axios interceptor checks it before the 401 branch, so a maintenance response never triggers the refresh-token path or logs the user out - fetchReq redirects to /maintenance, with a silentMaintenance opt-out used by getStateInfo: that one runs inside generateMetadata and while rendering the maintenance page itself, where a redirect is either ineffective or loops - redirect() works by throwing, so the try/catch blocks in the doctors, clinics and specialties pages now rethrow NEXT_REDIRECT instead of swallowing it - clinicApi.js handles 503 too; it previously rendered maintenance as a clinic with zero doctors - The page reuses the existing 404 design and is marked noindex Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
24 lines
754 B
JavaScript
24 lines
754 B
JavaScript
import Layout from "@/components/layout/StLayout";
|
|
import MaintenancePage from "@/components/maintenance";
|
|
|
|
// وضعیت تعمیرات هر لحظه ممکن است عوض شود؛ این صفحه هرگز نباید کش شود.
|
|
export const dynamic = "force-dynamic";
|
|
|
|
export async function generateMetadata() {
|
|
return {
|
|
title: "در حال بهروزرسانی سیستم",
|
|
description: "سامانه موقتاً برای انجام عملیات فنی در دسترس نیست.",
|
|
robots: { index: false, follow: false },
|
|
};
|
|
}
|
|
|
|
function Maintenance() {
|
|
return (
|
|
<Layout title="در حال بهروزرسانی سیستم" disableFooter={true}>
|
|
<MaintenancePage />
|
|
</Layout>
|
|
);
|
|
}
|
|
|
|
export default Maintenance;
|