diff --git a/src/screens/AskScreen.tsx b/src/screens/AskScreen.tsx index 56a27ac..b26fc43 100644 --- a/src/screens/AskScreen.tsx +++ b/src/screens/AskScreen.tsx @@ -212,6 +212,42 @@ function Bubble({ role, children, extra }: { role: 'user' | 'assistant'; childre ); } +/** + * منتظرِ جوابِ دستیار. سرویسِ مدل کلِ جواب را نگه می‌دارد و یک‌جا می‌فرستد؛ جوابِ + * کامل با شکل در ۲۰۲۶-۰۹-۲۹ حدودِ ۳۰ ثانیه طول کشید. پیامِ ثابت در آن مدت شبیهِ + * گیر کردن بود، پس متن با زمان جلو می‌رود. زمان‌ها تقریبی‌اند و به مرحله‌ی واقعیِ + * سرور وصل نیستند. + */ +const THINKING_STEPS: [number, string][] = [ + [0, 'پی داره تو کتابت می‌گرده'], + [4, 'پی داره حلش می‌کنه'], + [15, 'داره قدم‌ها رو مرتب می‌نویسه'], + [28, 'جوابِ کامل یه کم طول می‌کشه، الان می‌رسه'], +]; + +function Thinking() { + const [seconds, setSeconds] = useState(0); + useEffect(() => { + const started = Date.now(); + const timer = setInterval(() => setSeconds((Date.now() - started) / 1000), 1000); + return () => clearInterval(timer); + }, []); + const text = [...THINKING_STEPS].reverse().find(([at]) => seconds >= at)![1]; + return ( +
+ + + +
+ {text} + {[0, 1, 2].map((i) => ( + + ))} +
+
+ ); +} + function Message({ message, last, busy, onRetry, onFollowUp, }: { @@ -225,21 +261,7 @@ function Message({ if (message.role === 'user') return ; - if (!message.text) { - return ( -
- - - -
- پی داره فکر می‌کنه - {[0, 1, 2].map((i) => ( - - ))} -
-
- ); - } + if (!message.text) return ; async function rate(helpful: boolean) { if (!message.messageId || message.feedback) return;