RocketChat/Rocket.Chat

View on GitHub
packages/ui-client/src/hooks/useAutoSequence.ts

Summary

Maintainability
B
4 hrs
Test Coverage
import { useEffect, useState } from 'react';

export const useAutoSequence = <P>(sequence: readonly P[], delay = 700): P => {
    const [index, setIndex] = useState(0);

    useEffect(() => {
        const timer = setInterval(() => setIndex((index) => index + 1), delay);

        return (): void => {
            clearInterval(timer);
        };
    }, [delay]);

    return sequence[index % sequence.length];
};