| | 'use client'; |
| |
|
| | import Image from 'next/image'; |
| | import { useRouter } from 'next/navigation'; |
| | import { useState, useEffect } from 'react'; |
| |
|
| | export default function RecentChats() { |
| | const router = useRouter(); |
| | const [me, setMe] = useState(''); |
| | const [allChats, setAllChats] = useState([]); |
| | useEffect(() => { |
| | |
| | const storedMe = localStorage.getItem('me'); |
| | if (storedMe) { |
| | setMe(storedMe); |
| | } |
| |
|
| | |
| | const allKeys = Object.keys(localStorage); |
| | const chats = allKeys.filter((key) => key !== 'me' && key !== 's_tkn' && key !== 'a_l' && key !== 'u_id' && key !== 'ally-supports-cache').map((key) => { |
| | return { |
| | username: key, |
| | chatData: JSON.parse(localStorage.getItem(key)), |
| | }; |
| | }); |
| |
|
| | setAllChats(chats); |
| | }, []); |
| |
|
| | const handleUserSelect = (username) => { |
| | router.push(`/u/${username}`); |
| | }; |
| |
|
| | return ( |
| | <div> |
| | <h1 style={{ color: '#fff', marginBottom: '10px' }}>Chats</h1> |
| | {allChats.length === 0 ? ( |
| | <div className='pulse-and-fade' style={{ color: '#7d7d7d', fontSize: '16px', marginBottom: '20px' }}> |
| | <p>{me ? 'This looks empty. Open sidebar to go to the find page to look for someone to chat.' : 'Log in to start chatting!'}</p> |
| | </div> |
| | ) : ( |
| | <ul style={{ listStyleType: 'none', padding: 0 }}> |
| | {allChats.map((chat, index) => ( |
| | <li |
| | key={index} |
| | style={{ |
| | color: '#fff', |
| | cursor: 'pointer', |
| | marginBottom: '15px', |
| | display: 'flex', |
| | alignItems: 'center', |
| | }} |
| | onClick={() => handleUserSelect(chat.username)} |
| | > |
| | <div |
| | style={{ |
| | width: '40px', |
| | height: '40px', |
| | position: 'relative', |
| | marginRight: '10px', |
| | }} |
| | > |
| | <Image |
| | src={`https://ui-avatars.com/api/?background=random&name=${encodeURIComponent( |
| | chat.username |
| | )}`} |
| | alt={`${chat.username}'s avatar`} |
| | layout="fill" |
| | objectFit="cover" |
| | style={{ borderRadius: '50%' }} |
| | /> |
| | </div> |
| | <span style={{ textDecoration: 'none', color: '#fff', fontSize: '16px' }}> |
| | {chat.username} {chat.username === me ? '(Me)' : ''} |
| | </span> |
| | </li> |
| | ))} |
| | </ul> |
| | )} |
| | </div> |
| | ); |
| | } |
| |
|