File size: 1,030 Bytes
8a37e0a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import { useStore } from '@nanostores/react';
import { useEffect, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { $invocationProgressMessage } from 'services/events/stores';

export const useDeferredModelLoadingInvocationProgressMessage = () => {
  const { t } = useTranslation();
  const invocationProgressMessage = useStore($invocationProgressMessage);
  const [delayedMessage, setDelayedMessage] = useState<string | null>(null);

  useEffect(() => {
    if (!invocationProgressMessage) {
      setDelayedMessage(null);
      return;
    }

    if (invocationProgressMessage && !invocationProgressMessage.startsWith('Loading model')) {
      setDelayedMessage(null);
      return;
    }

    // Set a timeout to update delayedMessage after 5 seconds
    const timer = setTimeout(() => {
      setDelayedMessage(`${t('common.loadingModel')}...`);
    }, 5000);

    return () => clearTimeout(timer); // Cleanup on effect re-run
  }, [invocationProgressMessage, t]);

  return delayedMessage;
};