60 lines
2.7 KiB
TypeScript
60 lines
2.7 KiB
TypeScript
/**
|
|
* Copyright (c) 2023-present Plane Software, Inc. and contributors
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
* See the LICENSE file for details.
|
|
*/
|
|
|
|
export type TMaintenanceReason = "starting" | "offline" | "unavailable";
|
|
|
|
type TMaintenanceMessageProps = {
|
|
autoRetry?: boolean;
|
|
reason?: TMaintenanceReason;
|
|
statusCode?: number;
|
|
};
|
|
|
|
export function MaintenanceMessage(props: TMaintenanceMessageProps) {
|
|
const { autoRetry = false, reason = "unavailable", statusCode } = props;
|
|
const linkMap = [
|
|
{
|
|
key: "mail_to",
|
|
label: "Служба поддержки",
|
|
value: "https://nodedc.dctouch.ru/",
|
|
},
|
|
];
|
|
|
|
const title =
|
|
reason === "starting"
|
|
? "Сервисы NODE.DC запускаются."
|
|
: reason === "offline"
|
|
? "Нет связи с сервером NODE.DC."
|
|
: "NODE.DC временно недоступен.";
|
|
|
|
const description =
|
|
reason === "starting"
|
|
? "Сервер ещё не готов после обновления или перезапуска. NODE.DC подключится автоматически сразу после завершения запуска. Перезагружать страницу не нужно."
|
|
: reason === "offline"
|
|
? "Не удалось связаться с сервером. NODE.DC проверяет подключение автоматически и продолжит работу после восстановления связи."
|
|
: autoRetry
|
|
? "Сервер временно не может обработать запрос. NODE.DC повторяет подключение автоматически и продолжит работу после восстановления."
|
|
: "Сервер вернул ошибку, которую нельзя исправить автоматическим повтором. Попробуйте ещё раз или обратитесь в службу поддержки.";
|
|
|
|
return (
|
|
<>
|
|
<div className="flex flex-col gap-2.5">
|
|
<h1 className="text-left text-18 font-semibold text-primary">🚧 {title}</h1>
|
|
<span className="text-left text-14 font-medium text-secondary">{description}</span>
|
|
{statusCode && <span className="text-left text-12 text-tertiary">Код ответа сервера: {statusCode}</span>}
|
|
</div>
|
|
<div className="mt-1 flex items-center justify-start gap-6">
|
|
{linkMap.map((link) => (
|
|
<div key={link.key}>
|
|
<a href={link.value} target="_blank" rel="noopener noreferrer" className="nodedc-error-link text-13">
|
|
{link.label}
|
|
</a>
|
|
</div>
|
|
))}
|
|
</div>
|
|
</>
|
|
);
|
|
}
|