mirror of
https://github.com/netbirdio/netbird.git
synced 2026-10-23 22:09:09 +02:00
update session expire dialog to account for hours, days etc.
This commit is contained in:
@@ -20,12 +20,24 @@ import { formatErrorMessage } from "@/lib/errors.ts";
|
|||||||
|
|
||||||
const DEFAULT_SECONDS = 360;
|
const DEFAULT_SECONDS = 360;
|
||||||
const WINDOW_WIDTH = 360;
|
const WINDOW_WIDTH = 360;
|
||||||
|
// Below this, the situation is genuinely "soon" and the title/description
|
||||||
|
// uses the urgent wording. Above it (e.g. opened with hours remaining), the
|
||||||
|
// "later" variant drops the urgency cue so it doesn't read absurdly.
|
||||||
|
const SOON_THRESHOLD_SECONDS = 60 * 60;
|
||||||
|
|
||||||
function formatMMSS(seconds: number): string {
|
// Renders the countdown with only the units that matter: mm:ss under an
|
||||||
|
// hour, hh:mm:ss under a day, dd:hh:mm:ss otherwise. Two-digit zero pad
|
||||||
|
// throughout so columns don't jump as digits roll over.
|
||||||
|
function formatRemaining(seconds: number): string {
|
||||||
const s = Math.max(0, seconds | 0);
|
const s = Math.max(0, seconds | 0);
|
||||||
const m = Math.floor(s / 60);
|
const days = Math.floor(s / 86400);
|
||||||
const r = s % 60;
|
const hours = Math.floor((s % 86400) / 3600);
|
||||||
return `${String(m).padStart(2, "0")}:${String(r).padStart(2, "0")}`;
|
const minutes = Math.floor((s % 3600) / 60);
|
||||||
|
const secs = s % 60;
|
||||||
|
const pad = (n: number) => String(n).padStart(2, "0");
|
||||||
|
if (days > 0) return `${pad(days)}:${pad(hours)}:${pad(minutes)}:${pad(secs)}`;
|
||||||
|
if (hours > 0) return `${pad(hours)}:${pad(minutes)}:${pad(secs)}`;
|
||||||
|
return `${pad(minutes)}:${pad(secs)}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function SessionAboutToExpireDialog() {
|
export default function SessionAboutToExpireDialog() {
|
||||||
@@ -42,6 +54,7 @@ export default function SessionAboutToExpireDialog() {
|
|||||||
const [remaining, setRemaining] = useState(initialSeconds);
|
const [remaining, setRemaining] = useState(initialSeconds);
|
||||||
const [busy, setBusy] = useState(false);
|
const [busy, setBusy] = useState(false);
|
||||||
const expired = remaining <= 0;
|
const expired = remaining <= 0;
|
||||||
|
const soon = remaining <= SOON_THRESHOLD_SECONDS;
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setRemaining(initialSeconds);
|
setRemaining(initialSeconds);
|
||||||
@@ -127,10 +140,14 @@ export default function SessionAboutToExpireDialog() {
|
|||||||
<DialogHeading>
|
<DialogHeading>
|
||||||
{expired
|
{expired
|
||||||
? t("sessionAboutToExpire.expired")
|
? t("sessionAboutToExpire.expired")
|
||||||
: t("sessionAboutToExpire.title")}
|
: soon
|
||||||
|
? t("sessionAboutToExpire.title")
|
||||||
|
: t("sessionAboutToExpire.titleLater")}
|
||||||
</DialogHeading>
|
</DialogHeading>
|
||||||
<DialogDescription>
|
<DialogDescription>
|
||||||
{t("sessionAboutToExpire.description")}
|
{soon
|
||||||
|
? t("sessionAboutToExpire.description")
|
||||||
|
: t("sessionAboutToExpire.descriptionLater")}
|
||||||
</DialogDescription>
|
</DialogDescription>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -140,7 +157,7 @@ export default function SessionAboutToExpireDialog() {
|
|||||||
}
|
}
|
||||||
aria-live={"polite"}
|
aria-live={"polite"}
|
||||||
>
|
>
|
||||||
{formatMMSS(remaining)}
|
{formatRemaining(remaining)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<DialogActions>
|
<DialogActions>
|
||||||
|
|||||||
@@ -320,7 +320,9 @@
|
|||||||
"sessionExpired.signIn": "Anmelden",
|
"sessionExpired.signIn": "Anmelden",
|
||||||
|
|
||||||
"sessionAboutToExpire.title": "Sitzung läuft bald ab",
|
"sessionAboutToExpire.title": "Sitzung läuft bald ab",
|
||||||
|
"sessionAboutToExpire.titleLater": "Sitzung läuft ab",
|
||||||
"sessionAboutToExpire.description": "Ihre NetBird-Sitzung läuft in Kürze ab. Bleiben Sie verbunden, damit Ihre Geräte online bleiben.",
|
"sessionAboutToExpire.description": "Ihre NetBird-Sitzung läuft in Kürze ab. Bleiben Sie verbunden, damit Ihre Geräte online bleiben.",
|
||||||
|
"sessionAboutToExpire.descriptionLater": "Ihre NetBird-Sitzung läuft ab. Verlängern Sie jetzt, damit Ihre Geräte online bleiben.",
|
||||||
"sessionAboutToExpire.stay": "Verbunden bleiben",
|
"sessionAboutToExpire.stay": "Verbunden bleiben",
|
||||||
"sessionAboutToExpire.logout": "Abmelden",
|
"sessionAboutToExpire.logout": "Abmelden",
|
||||||
"sessionAboutToExpire.expired": "Sitzung abgelaufen",
|
"sessionAboutToExpire.expired": "Sitzung abgelaufen",
|
||||||
|
|||||||
@@ -337,7 +337,9 @@
|
|||||||
"sessionExpired.signIn": "Sign in",
|
"sessionExpired.signIn": "Sign in",
|
||||||
|
|
||||||
"sessionAboutToExpire.title": "Session expiring soon",
|
"sessionAboutToExpire.title": "Session expiring soon",
|
||||||
|
"sessionAboutToExpire.titleLater": "Session will expire",
|
||||||
"sessionAboutToExpire.description": "Your NetBird session will expire shortly. Stay connected to keep your devices online.",
|
"sessionAboutToExpire.description": "Your NetBird session will expire shortly. Stay connected to keep your devices online.",
|
||||||
|
"sessionAboutToExpire.descriptionLater": "Your NetBird session will expire. Extend now to keep your devices online.",
|
||||||
"sessionAboutToExpire.stay": "Stay connected",
|
"sessionAboutToExpire.stay": "Stay connected",
|
||||||
"sessionAboutToExpire.logout": "Logout",
|
"sessionAboutToExpire.logout": "Logout",
|
||||||
"sessionAboutToExpire.expired": "Session expired",
|
"sessionAboutToExpire.expired": "Session expired",
|
||||||
|
|||||||
@@ -320,7 +320,9 @@
|
|||||||
"sessionExpired.signIn": "Bejelentkezés",
|
"sessionExpired.signIn": "Bejelentkezés",
|
||||||
|
|
||||||
"sessionAboutToExpire.title": "A munkamenet hamarosan lejár",
|
"sessionAboutToExpire.title": "A munkamenet hamarosan lejár",
|
||||||
|
"sessionAboutToExpire.titleLater": "A munkamenet lejár",
|
||||||
"sessionAboutToExpire.description": "A NetBird munkamenete hamarosan lejár. Maradjon csatlakoztatva, hogy az eszközei elérhetők maradjanak.",
|
"sessionAboutToExpire.description": "A NetBird munkamenete hamarosan lejár. Maradjon csatlakoztatva, hogy az eszközei elérhetők maradjanak.",
|
||||||
|
"sessionAboutToExpire.descriptionLater": "A NetBird munkamenete lejár. Hosszabbítsa meg most, hogy az eszközei elérhetők maradjanak.",
|
||||||
"sessionAboutToExpire.stay": "Maradjon csatlakoztatva",
|
"sessionAboutToExpire.stay": "Maradjon csatlakoztatva",
|
||||||
"sessionAboutToExpire.logout": "Kijelentkezés",
|
"sessionAboutToExpire.logout": "Kijelentkezés",
|
||||||
"sessionAboutToExpire.expired": "Munkamenet lejárt",
|
"sessionAboutToExpire.expired": "Munkamenet lejárt",
|
||||||
|
|||||||
Reference in New Issue
Block a user