5180 fichiers 38.5 Mo 0 téléchargements 287 vues mis à jour il y a 6 heures ui
nitro-v36-with-renderer-v36 / src / components / guide-tool / views / GuardianCountdownView.tsx
GuardianCountdownView.tsx 1.3 Ko Télécharger le fichier
import { FC, useEffect, useState } from 'react';
import { NativeTextTree } from '../../../common/native-text/NativeTextTree';

interface GuardianCountdownViewProps {
    seconds: number;
    /** A new id restarts the countdown from `seconds`. */
    countdownId: number;
}

/** The two-digit countdown widget of the chat review windows (mm:ss, stops at zero). */
export const GuardianCountdownView: FC<GuardianCountdownViewProps> = ({ seconds, countdownId }) => {
    const [left, setLeft] = useState(seconds);

    useEffect(() => {
        setLeft(seconds);

        if (seconds <= 0) return;

        const startedAt = Date.now();
        const interval = window.setInterval(() => {
            const remaining = Math.max(0, seconds - Math.floor((Date.now() - startedAt) / 1000));

            setLeft(remaining);

            if (remaining <= 0) window.clearInterval(interval);
        }, 250);

        return () => window.clearInterval(interval);
    }, [seconds, countdownId]);

    if (seconds < 0) return null;

    const minutes = Math.floor(left / 60);
    const rest = left % 60;

    return (
        <NativeTextTree>
            <div className="octane-guardian-countdown" role="timer">
                {`${String(minutes).padStart(2, '0')}:${String(rest).padStart(2, '0')}`}
            </div>
        </NativeTextTree>
    );
};
15Sujets
1Dépôts
20Membres
2En ligne
Profile
Inscrit
Dernière visite
Messages
0
Votes positifs
0
Votes négatifs
0

Nous utilisons des cookies pour assurer le bon fonctionnement du site et améliorer votre expérience. en savoir plus

Autoriser