From 45ba4bde8bbb4ba32501be81ff7d4b9402421128 Mon Sep 17 00:00:00 2001 From: slwk0 Date: Thu, 16 Jan 2025 21:54:26 +0100 Subject: [PATCH] =?UTF-8?q?improved=20perfomance=20of=20LastActiveTime.tsx?= =?UTF-8?q?,=20added=20=F0=9F=90=A2icon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/assets/turtle.webp | Bin 0 -> 52242 bytes .../components/chat/chatArea/MessagesArea.tsx | 2 +- .../chat/leftSidebar/ContactItem.tsx | 118 ++++++++++++++ .../chat/leftSidebar/ContactsList.tsx | 150 +++--------------- .../chat/leftSidebar/LastActiveTime.tsx | 32 +++- client/src/pages/Login.tsx | 2 +- client/src/pages/Signup.tsx | 2 +- client/turtle.webp/image.webp | Bin 0 -> 52242 bytes 8 files changed, 164 insertions(+), 142 deletions(-) create mode 100644 client/assets/turtle.webp create mode 100644 client/src/components/chat/leftSidebar/ContactItem.tsx create mode 100644 client/turtle.webp/image.webp diff --git a/client/assets/turtle.webp b/client/assets/turtle.webp new file mode 100644 index 0000000000000000000000000000000000000000..25a14dede1acf49a4e5e73dac2a225259770e9e6 GIT binary patch literal 52242 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 void; + onSelect: (contact: ContactsProps) => void; + }) => ( +
  • onSelect(contact)} + > +
    +
    +
    + {contact.username} + {contact.type === 'group' && ( + Group icon + )} +

    + {contact.read ? '' : '•'} +

    +
    + + {contact.type === 'group' ? ( + + + + + + + + Leave Group? + + + Are you sure you want to leave this group? + + + + Cancel + { + e.stopPropagation(); + onRemove(contact.id, contact.conversation_id); + }} + className="bg-red-600 hover:bg-red-500" + > + Leave Group + + + + + ) : ( + + )} +
    + +
    +
    + {(contact.last_message ?? '').length > 0 ? ( + (contact.last_message ?? '').length > 15 ? ( +
    + {contact.last_message?.substring(0, 15)} + +
    + ) : ( + contact.last_message + ) + ) : contact.last_message_time ? ( +
    + attachment +
    + ) : null} +
    + +
    +
    +
  • + ), +); + +export default ContactItem; diff --git a/client/src/components/chat/leftSidebar/ContactsList.tsx b/client/src/components/chat/leftSidebar/ContactsList.tsx index bb1f3df..a7f8540 100644 --- a/client/src/components/chat/leftSidebar/ContactsList.tsx +++ b/client/src/components/chat/leftSidebar/ContactsList.tsx @@ -1,22 +1,9 @@ import { useEffect } from 'react'; import { socket } from '@/socket/socket.ts'; -import GroupIcon from '../../../../assets/group.svg'; -import { - AlertDialog, - AlertDialogAction, - AlertDialogCancel, - AlertDialogContent, - AlertDialogDescription, - AlertDialogFooter, - AlertDialogHeader, - AlertDialogTitle, - AlertDialogTrigger, -} from '@/components/ui/alert-dialog.tsx'; -import { Ellipsis, Paperclip } from 'lucide-react'; -import LastActiveTime from '@/components/chat/leftSidebar/LastActiveTime.tsx'; import { ContactsProps } from '@/types/types.ts'; import { useChat } from '@/context/chat/useChat.ts'; import { axiosClient } from '@/utils/axiosClient.ts'; +import ContactItem from '@/components/chat/leftSidebar/ContactItem.tsx'; function ContactsList() { const { @@ -27,6 +14,7 @@ function ContactsList() { setMessages, setErrorMessage, } = useChat(); + useEffect(() => { fetchContacts().catch((e) => console.error('Failed to fetch contacts: ', e), @@ -53,17 +41,14 @@ function ContactsList() { console.log('Get contacts list response: ', response.data); const fetchedContacts: ContactsProps[] = response.data; - const updatedContacts = fetchedContacts.map((contact) => { - if ( + const updatedContacts = fetchedContacts.map((contact) => ({ + ...contact, + read: !( contact.last_message_id && contact.last_read_message_id && contact.last_message_id !== contact.last_read_message_id - ) { - return { ...contact, read: false }; - } else { - return { ...contact, read: true }; - } - }); + ), + })); setContactsList(updatedContacts); }; @@ -76,7 +61,7 @@ function ContactsList() { 'delete contact', conversation_id, (response: { status: string; message: string }) => { - if (response.status == 'ok') { + if (response.status === 'ok') { console.log('(socket) response: ', response); setCurrentContact(null); localStorage.removeItem('contact'); @@ -96,122 +81,23 @@ function ContactsList() { } const sortedContacts = [...contactsList].sort((a, b) => { - // First, sort by read status (unread first) - if (a.read !== b.read) { - return a.read ? 1 : -1; - } - - // If both are read or both are unread, sort by last_message_time (if available) - if (a.last_message_time !== null && b.last_message_time !== null) { + if (a.read !== b.read) return a.read ? 1 : -1; + if (a.last_message_time && b.last_message_time) { return -a.last_message_time.localeCompare(b.last_message_time); } - - // If one or both last_message_time are null, sort by last_active_time - if (a.last_message_time === null || b.last_message_time === null) { - return -a.last_active.localeCompare(b.last_active); - } - - // Default case (should not be reached) - return 0; + return -a.last_active.localeCompare(b.last_active); }); - const ContactItem = ({ contact }: { contact: ContactsProps }) => ( -
  • { - initializeContact(contact); - }} - > -
    -
    -
    - {contact.username} - {contact.type === 'group' && ( - Group icon - )} -

    - {contact.read ? '' : '•'} -

    -
    - - {contact.type === 'group' ? ( - - - - - - - - Leave Group? - - - Are you sure you want to leave this group? - - - - Cancel - { - e.stopPropagation(); - removeContact(contact.id, contact.conversation_id); - }} - className="bg-red-600 hover:bg-red-500" - > - Leave Group - - - - - ) : ( - - )} -
    - -
    -
    - {(contact.last_message ?? '').length > 0 ? ( - (contact.last_message ?? '').length > 15 ? ( -
    - {contact.last_message?.substring(0, 15)} - -
    - ) : ( - contact.last_message - ) - ) : contact.last_message_time ? ( -
    - attachment -
    - ) : null} -
    - -
    -
    -
  • - ); - return ( -
    +
      {sortedContacts.map((contact: ContactsProps) => ( - + ))}
    diff --git a/client/src/components/chat/leftSidebar/LastActiveTime.tsx b/client/src/components/chat/leftSidebar/LastActiveTime.tsx index 1d4489a..f6441de 100644 --- a/client/src/components/chat/leftSidebar/LastActiveTime.tsx +++ b/client/src/components/chat/leftSidebar/LastActiveTime.tsx @@ -1,6 +1,5 @@ -import { useState, useEffect } from 'react'; +import { useState, useEffect, useRef } from 'react'; import { differenceInSeconds, formatDistanceToNowStrict } from 'date-fns'; - import { ContactsProps } from '@/types/types.ts'; type LastActiveTimeProps = { @@ -9,30 +8,49 @@ type LastActiveTimeProps = { const LastActiveTime = ({ contact }: LastActiveTimeProps) => { const [timeAgo, setTimeAgo] = useState(''); + const previousTimeRef = useRef(''); + const previousDateRef = useRef(null); useEffect(() => { const updateTime = () => { if (!contact?.last_message_time) { return; } + + // If it's a new message time, store it + if (contact.last_message_time !== previousDateRef.current) { + previousDateRef.current = contact.last_message_time; + } + const lastActiveDate = new Date(contact.last_message_time); const secondsDiff = differenceInSeconds(new Date(), lastActiveDate); + let newTimeAgo; if (secondsDiff < 60) { - setTimeAgo('now'); - return; + newTimeAgo = 'now'; + } else { + newTimeAgo = formatDistanceToNowStrict(lastActiveDate); } - setTimeAgo(formatDistanceToNowStrict(lastActiveDate)); + // Only update state if the formatted time has actually changed + if (newTimeAgo !== previousTimeRef.current) { + previousTimeRef.current = newTimeAgo; + setTimeAgo(newTimeAgo); + } }; - updateTime(); + updateTime(); const intervalId = setInterval(updateTime, 60000); return () => clearInterval(intervalId); }, [contact?.last_message_time]); - return {timeAgo}; + // Use a CSS transition for smooth updates + return ( + + {timeAgo} + + ); }; export default LastActiveTime; diff --git a/client/src/pages/Login.tsx b/client/src/pages/Login.tsx index 21a1248..d4adf6a 100644 --- a/client/src/pages/Login.tsx +++ b/client/src/pages/Login.tsx @@ -1,5 +1,5 @@ import { useForm, SubmitHandler } from 'react-hook-form'; -import icon from '../../assets/icon.png'; +import icon from '../../assets/turtle.webp'; import { Link, useNavigate } from 'react-router-dom'; import { useContext, useState } from 'react'; import LoadingWheel from '../components/chat/LoadingWheel.tsx'; diff --git a/client/src/pages/Signup.tsx b/client/src/pages/Signup.tsx index 5d19749..1539bbc 100644 --- a/client/src/pages/Signup.tsx +++ b/client/src/pages/Signup.tsx @@ -1,4 +1,4 @@ -import icon from '../../assets/icon.png'; +import icon from '../../assets/turtle.webp'; import { useForm, SubmitHandler } from 'react-hook-form'; import { Link, useNavigate } from 'react-router-dom'; import { useContext, useState } from 'react'; diff --git a/client/turtle.webp/image.webp b/client/turtle.webp/image.webp new file mode 100644 index 0000000000000000000000000000000000000000..25a14dede1acf49a4e5e73dac2a225259770e9e6 GIT binary patch literal 52242 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