FeedToastWrapper.tsx 786 B

12345678910111213141516171819202122232425262728
  1. 'use client';
  2. import { useCallback, useEffect, useState } from 'react';
  3. import { useRouter } from 'next/navigation';
  4. import { useSignalRContext } from '@/contexts/signalrProvider';
  5. import FeedToast from './FeedToast';
  6. export default function FeedToastWrapper() {
  7. const router = useRouter();
  8. const { lastFeedPost, clearLastFeedPost } = useSignalRContext();
  9. const [pendingCount, setPendingCount] = useState(0);
  10. useEffect(() => {
  11. if (!lastFeedPost) {
  12. return;
  13. }
  14. setPendingCount((c) => c + 1);
  15. clearLastFeedPost();
  16. }, [lastFeedPost, clearLastFeedPost]);
  17. const handleClick = useCallback(() => {
  18. setPendingCount(0);
  19. router.refresh();
  20. window.scrollTo({ top: 0, behavior: 'smooth' });
  21. }, [router]);
  22. return <FeedToast count={pendingCount} onClick={handleClick} />;
  23. }