diff --git a/src/components/Chat/ChatContainer.tsx b/src/components/Chat/ChatContainer.tsx index 399e5a4..2823b83 100644 --- a/src/components/Chat/ChatContainer.tsx +++ b/src/components/Chat/ChatContainer.tsx @@ -1,16 +1,14 @@ -import React, { useState } from "react"; -import InfiniteScroll from "react-infinite-scroller"; import { MainContainer, ChatContainer, MessageList, Message, MessageInput, - Avatar -} from "@chatscope/chat-ui-kit-react"; -import "@chatscope/chat-ui-kit-styles/dist/default/styles.min.css"; + Avatar, +} from '@chatscope/chat-ui-kit-react'; +import '@chatscope/chat-ui-kit-styles/dist/default/styles.min.css'; -export const ChatContainerComp = ({messages}) => { +export const ChatContainerComp = ({ messages }) => { // const [messages, setMessages] = useState([ // { id: 1, text: "Hello! How are you?", sender: "Joe"}, // { id: 2, text: "I'm good, thank you!", sender: "Me" } @@ -26,31 +24,31 @@ export const ChatContainerComp = ({messages}) => { // }; return ( -
+
- - {messages.map((msg) => ( - - {msg.direction === "incoming" && } - - ))} - - + + {messages.map((msg) => ( + + {msg.direction === 'incoming' && ( + + )} + + ))} + +
); }; - - diff --git a/src/components/Chat/ChatList.tsx b/src/components/Chat/ChatList.tsx index ef32e7e..e6353bb 100644 --- a/src/components/Chat/ChatList.tsx +++ b/src/components/Chat/ChatList.tsx @@ -1,23 +1,15 @@ -import React, { - useCallback, - useState, - useEffect, - useRef, - useMemo, -} from "react"; -import { useVirtualizer } from "@tanstack/react-virtual"; -import { MessageItem } from "./MessageItem"; -import { subscribeToEvent, unsubscribeFromEvent } from "../../utils/events"; -import { useInView } from "react-intersection-observer"; -import { Box, Typography } from "@mui/material"; -import { ChatOptions } from "./ChatOptions"; -import ErrorBoundary from "../../common/ErrorBoundary"; +import { useCallback, useState, useEffect, useRef, useMemo } from 'react'; +import { useVirtualizer } from '@tanstack/react-virtual'; +import { MessageItem } from './MessageItem'; +import { subscribeToEvent, unsubscribeFromEvent } from '../../utils/events'; +import { Box, Typography, useTheme } from '@mui/material'; +import { ChatOptions } from './ChatOptions'; +import ErrorBoundary from '../../common/ErrorBoundary'; export const ChatList = ({ initialMessages, myAddress, tempMessages, - chatId, onReply, onEdit, handleReaction, @@ -29,7 +21,7 @@ export const ChatList = ({ enableMentions, openQManager, hasSecretKey, - isPrivate + isPrivate, }) => { const parentRef = useRef(); const [messages, setMessages] = useState(initialMessages); @@ -42,33 +34,32 @@ export const ChatList = ({ // Initialize the virtualizer const rowVirtualizer = useVirtualizer({ count: messages.length, - getItemKey: (index) => messages[index]?.tempSignature || messages[index].signature, + getItemKey: (index) => + messages[index]?.tempSignature || messages[index].signature, getScrollElement: () => parentRef?.current, estimateSize: useCallback(() => 80, []), // Provide an estimated height of items, adjust this as needed overscan: 10, // Number of items to render outside the visible area to improve smoothness }); - const isAtBottom = useMemo(()=> { + const isAtBottom = useMemo(() => { if (parentRef.current && rowVirtualizer?.isScrolling !== undefined) { const { scrollTop, scrollHeight, clientHeight } = parentRef.current; - const atBottom = scrollTop + clientHeight >= scrollHeight - 10; // Adjust threshold as needed - return atBottom - } + const atBottom = scrollTop + clientHeight >= scrollHeight - 10; // Adjust threshold as needed + return atBottom; + } - return false - - }, [rowVirtualizer?.isScrolling]) + return false; + }, [rowVirtualizer?.isScrolling]); useEffect(() => { if (!parentRef.current || rowVirtualizer?.isScrolling === undefined) return; - if(isAtBottom){ + if (isAtBottom) { if (scrollingIntervalRef.current) { clearTimeout(scrollingIntervalRef.current); } setShowScrollDownButton(false); return; - } else - if (rowVirtualizer?.isScrolling) { + } else if (rowVirtualizer?.isScrolling) { if (scrollingIntervalRef.current) { clearTimeout(scrollingIntervalRef.current); } @@ -108,7 +99,13 @@ export const ChatList = ({ setTimeout(() => { const hasUnreadMessages = totalMessages.some( - (msg) => msg.unread && !msg?.chatReference && !msg?.isTemp && (!msg?.chatReference && msg?.timestamp > lastSeenUnreadMessageTimestamp.current || 0) + (msg) => + msg.unread && + !msg?.chatReference && + !msg?.isTemp && + ((!msg?.chatReference && + msg?.timestamp > lastSeenUnreadMessageTimestamp.current) || + 0) ); if (parentRef.current) { const { scrollTop, scrollHeight, clientHeight } = parentRef.current; @@ -136,9 +133,9 @@ export const ChatList = ({ const index = initialMsgs ? initialMsgs.length - 1 : messages.length - 1; if (rowVirtualizer) { if (divideIndex) { - rowVirtualizer.scrollToIndex(divideIndex, { align: "start" }); + rowVirtualizer.scrollToIndex(divideIndex, { align: 'start' }); } else { - rowVirtualizer.scrollToIndex(index, { align: "end" }); + rowVirtualizer.scrollToIndex(index, { align: 'end' }); } } handleMessageSeen(); @@ -152,7 +149,7 @@ export const ChatList = ({ })) ); setShowScrollButton(false); - lastSeenUnreadMessageTimestamp.current = Date.now() + lastSeenUnreadMessageTimestamp.current = Date.now(); }, []); const sentNewMessageGroupFunc = useCallback(() => { @@ -166,9 +163,9 @@ export const ChatList = ({ }, [messages]); useEffect(() => { - subscribeToEvent("sent-new-message-group", sentNewMessageGroupFunc); + subscribeToEvent('sent-new-message-group', sentNewMessageGroupFunc); return () => { - unsubscribeFromEvent("sent-new-message-group", sentNewMessageGroupFunc); + unsubscribeFromEvent('sent-new-message-group', sentNewMessageGroupFunc); }; }, [sentNewMessageGroupFunc]); @@ -181,21 +178,24 @@ export const ChatList = ({ const goToMessage = useCallback((idx) => { rowVirtualizer.scrollToIndex(idx); }, []); + + const theme = useTheme(); + return (
- {rowVirtualizer.getVirtualItems().map((virtualRow) => { const index = virtualRow.index; let message = messages[index] || null; // Safeguard against undefined @@ -231,7 +230,7 @@ export const ChatList = ({ let reply = null; let reactions = null; let isUpdating = false; - + try { // Safeguard for message existence if (message) { @@ -239,16 +238,19 @@ export const ChatList = ({ replyIndex = messages.findIndex( (msg) => msg?.signature === message?.repliedTo ); - + if (message?.repliedTo && replyIndex !== -1) { reply = { ...(messages[replyIndex] || {}) }; if (chatReferences?.[reply?.signature]?.edit) { - reply.decryptedData = chatReferences[reply?.signature]?.edit; - reply.text = chatReferences[reply?.signature]?.edit?.message; - reply.editTimestamp = chatReferences[reply?.signature]?.edit?.timestamp + reply.decryptedData = + chatReferences[reply?.signature]?.edit; + reply.text = + chatReferences[reply?.signature]?.edit?.message; + reply.editTimestamp = + chatReferences[reply?.signature]?.edit?.timestamp; } } - + // GroupDirectId logic if (message?.message && message?.groupDirectId) { replyIndex = messages.findIndex( @@ -264,24 +266,34 @@ export const ChatList = ({ status: message?.status, }; } - + // Check for reactions and edits if (chatReferences?.[message.signature]) { - reactions = chatReferences[message.signature]?.reactions || null; - - if (chatReferences[message.signature]?.edit?.message && message?.text) { - message.text = chatReferences[message.signature]?.edit?.message; - message.isEdit = true - message.editTimestamp = chatReferences[message.signature]?.edit?.timestamp + reactions = + chatReferences[message.signature]?.reactions || null; + + if ( + chatReferences[message.signature]?.edit?.message && + message?.text + ) { + message.text = + chatReferences[message.signature]?.edit?.message; + message.isEdit = true; + message.editTimestamp = + chatReferences[message.signature]?.edit?.timestamp; } - if (chatReferences[message.signature]?.edit?.messageText && message?.messageText) { - message.messageText = chatReferences[message.signature]?.edit?.messageText; - message.isEdit = true - message.editTimestamp = chatReferences[message.signature]?.edit?.timestamp + if ( + chatReferences[message.signature]?.edit?.messageText && + message?.messageText + ) { + message.messageText = + chatReferences[message.signature]?.edit?.messageText; + message.isEdit = true; + message.editTimestamp = + chatReferences[message.signature]?.edit?.timestamp; } - } - + // Check if message is updating if ( tempChatReferences?.some( @@ -292,34 +304,37 @@ export const ChatList = ({ } } } catch (error) { - console.error("Error processing message:", error, { index, message }); + console.error('Error processing message:', error, { + index, + message, + }); // Gracefully handle the error by providing fallback data message = null; reply = null; reactions = null; } - // Render fallback if message is null + // Render fallback if message is null if (!message) { - return ( -
- Error loading message. -
- ); - } + return ( +
+ Error loading message. +
+ ); + } return (
- Error loading content: Invalid Data } > - - + +
); })} -
@@ -377,17 +390,17 @@ export const ChatList = ({
{enableMentions && (hasSecretKey || isPrivate === false) && ( { return convert(htmlString, { wordwrap: false, // Disable word wrapping })?.toLowerCase(); }; + const cache = new CellMeasurerCache({ fixedWidth: true, defaultHeight: 50, }); -export const ChatOptions = ({ messages : untransformedMessages, goToMessage, members, myName, selectedGroup, openQManager, isPrivate }) => { - const [mode, setMode] = useState("default"); - const [searchValue, setSearchValue] = useState(""); +export const ChatOptions = ({ + messages: untransformedMessages, + goToMessage, + members, + myName, + selectedGroup, + openQManager, + isPrivate, +}) => { + const [mode, setMode] = useState('default'); + const [searchValue, setSearchValue] = useState(''); const [selectedMember, setSelectedMember] = useState(0); - + const theme = useTheme(); const parentRef = useRef(); const parentRefMentions = useRef(); - const [lastMentionTimestamp, setLastMentionTimestamp] = useState(null) - const [debouncedValue, setDebouncedValue] = useState(""); // Debounced value - const messages = useMemo(()=> { - return untransformedMessages?.map((item)=> { - if(item?.messageText){ - let transformedMessage = item?.messageText + const [lastMentionTimestamp, setLastMentionTimestamp] = useState(null); + const [debouncedValue, setDebouncedValue] = useState(''); // Debounced value + const messages = useMemo(() => { + return untransformedMessages?.map((item) => { + if (item?.messageText) { + let transformedMessage = item?.messageText; try { - transformedMessage = generateHTML(item?.messageText, [ - StarterKit, - Underline, - Highlight, - Mention - ]) - return { - ...item, - messageText: transformedMessage - } + transformedMessage = generateHTML(item?.messageText, [ + StarterKit, + Underline, + Highlight, + Mention, + ]); + return { + ...item, + messageText: transformedMessage, + }; } catch (error) { // error } - } else return item - }) - }, [untransformedMessages]) + } else return item; + }); + }, [untransformedMessages]); + const getTimestampMention = async () => { try { return new Promise((res, rej) => { - window.sendMessage("getTimestampMention") - .then((response) => { - if (!response?.error) { - if(response && selectedGroup && response[selectedGroup]){ - setLastMentionTimestamp(response[selectedGroup]) - - - - - - } - - res(response); - return; - } - rej(response.error); - }) - .catch((error) => { - rej(error.message || "An error occurred"); - }); - + window + .sendMessage('getTimestampMention') + .then((response) => { + if (!response?.error) { + if (response && selectedGroup && response[selectedGroup]) { + setLastMentionTimestamp(response[selectedGroup]); + } + res(response); + return; + } + rej(response.error); + }) + .catch((error) => { + rej(error.message || 'An error occurred'); + }); }); - } catch (error) {} + } catch (error) { + console.log(error); + } }; - useEffect(()=> { - if(mode === 'mentions' && selectedGroup){ - window.sendMessage("addTimestampMention", { - timestamp: Date.now(), - groupId: selectedGroup - }).then((res)=> { - getTimestampMention() - }).catch((error) => { - console.error("Failed to add timestamp:", error.message || "An error occurred"); + useEffect(() => { + if (mode === 'mentions' && selectedGroup) { + window + .sendMessage('addTimestampMention', { + timestamp: Date.now(), + groupId: selectedGroup, + }) + .then((res) => { + getTimestampMention(); + }) + .catch((error) => { + console.error( + 'Failed to add timestamp:', + error.message || 'An error occurred' + ); }); } - }, [mode, selectedGroup]) + }, [mode, selectedGroup]); - useEffect(()=> { - getTimestampMention() - }, []) + useEffect(() => { + getTimestampMention(); + }, []); // Debounce logic useEffect(() => { @@ -151,32 +159,39 @@ export const ChatOptions = ({ messages : untransformedMessages, goToMessage, mem .filter( (message) => message?.senderName === selectedMember && - extractTextFromHTML(isPrivate ? message?.messageText : message?.decryptedData?.message)?.includes( - debouncedValue.toLowerCase() - ) + extractTextFromHTML( + isPrivate ? message?.messageText : message?.decryptedData?.message + )?.includes(debouncedValue.toLowerCase()) ) ?.sort((a, b) => b?.timestamp - a?.timestamp); } return messages .filter((message) => - extractTextFromHTML(isPrivate === false ? message?.messageText : message?.decryptedData?.message)?.includes(debouncedValue.toLowerCase()) + extractTextFromHTML( + isPrivate === false + ? message?.messageText + : message?.decryptedData?.message + )?.includes(debouncedValue.toLowerCase()) ) ?.sort((a, b) => b?.timestamp - a?.timestamp); }, [debouncedValue, messages, selectedMember, isPrivate]); const mentionList = useMemo(() => { - if(!messages || messages.length === 0 || !myName) return [] - if(isPrivate === false){ + if (!messages || messages.length === 0 || !myName) return []; + if (isPrivate === false) { return messages - .filter((message) => - extractTextFromHTML(message?.messageText)?.includes(`@${myName?.toLowerCase()}`) - ) - ?.sort((a, b) => b?.timestamp - a?.timestamp); - + .filter((message) => + extractTextFromHTML(message?.messageText)?.includes( + `@${myName?.toLowerCase()}` + ) + ) + ?.sort((a, b) => b?.timestamp - a?.timestamp); } return messages .filter((message) => - extractTextFromHTML(message?.decryptedData?.message)?.includes(`@${myName?.toLowerCase()}`) + extractTextFromHTML(message?.decryptedData?.message)?.includes( + `@${myName?.toLowerCase()}` + ) ) ?.sort((a, b) => b?.timestamp - a?.timestamp); }, [messages, myName, isPrivate]); @@ -203,60 +218,54 @@ export const ChatOptions = ({ messages : untransformedMessages, goToMessage, mem overscan: 10, // Number of items to render outside the visible area to improve smoothness }); - - - if (mode === "mentions") { + if (mode === 'mentions') { return ( { - setMode("default"); + setMode('default'); }} sx={{ - cursor: "pointer", - color: "white", + cursor: 'pointer', + color: theme.palette.text.primary, }} /> - - - {mentionList?.length === 0 && ( No results @@ -264,72 +273,77 @@ export const ChatOptions = ({ messages : untransformedMessages, goToMessage, mem )}
- {rowVirtualizerMentions.getVirtualItems().map((virtualRow) => { - const index = virtualRow.index; - let message = mentionList[index]; - return ( -
- - -
- ); - })} + {rowVirtualizerMentions + .getVirtualItems() + .map((virtualRow) => { + const index = virtualRow.index; + let message = mentionList[index]; + return ( +
+ +
+ ); + })}
@@ -340,47 +354,46 @@ export const ChatOptions = ({ messages : untransformedMessages, goToMessage, mem ); } - if (mode === "search") { + if (mode === 'search') { return ( { - setMode("default"); + setMode('default'); }} sx={{ - cursor: "pointer", - color: "white", + cursor: 'pointer', + color: theme.palette.text.primary, }} /> @@ -392,8 +405,8 @@ export const ChatOptions = ({ messages : untransformedMessages, goToMessage, mem sx={{ ml: 1, flex: 1 }} placeholder="Search chat text" inputProps={{ - "aria-label": "Search for apps", - fontSize: "16px", + 'aria-label': 'Search for apps', + fontSize: '16px', fontWeight: 400, }} /> @@ -402,7 +415,7 @@ export const ChatOptions = ({ messages : untransformedMessages, goToMessage, mem {searchValue && ( { - setSearchValue(""); + setSearchValue(''); }} > @@ -411,52 +424,51 @@ export const ChatOptions = ({ messages : untransformedMessages, goToMessage, mem - - {!!selectedMember && ( - { - setSelectedMember(0); - }} sx={{ - cursor: "pointer", - color: "white", + alignItems: 'center', + display: 'flex', + justifyContent: 'space-between', + padding: '10px', }} - /> - )} - - - + > + + {!!selectedMember && ( + { + setSelectedMember(0); + }} + sx={{ + cursor: 'pointer', + color: theme.palette.text.primary, + }} + /> + )} + + {debouncedValue && searchedList?.length === 0 && ( No results @@ -464,79 +476,81 @@ export const ChatOptions = ({ messages : untransformedMessages, goToMessage, mem )}
{rowVirtualizer.getVirtualItems().map((virtualRow) => { const index = virtualRow.index; let message = searchedList[index]; return ( -
- - Error loading content: Invalid Data - - } - > - + + Error loading content: Invalid Data + + } + > +
- ); })}
@@ -551,46 +565,58 @@ export const ChatOptions = ({ messages : untransformedMessages, goToMessage, mem return ( - { - setMode("search") - }}> + { + setMode('search'); + }} + > SEARCH} + title={ + + SEARCH + + } placement="left" arrow - sx={{ fontSize: "24" }} + sx={{ fontSize: '24' }} slotProps={{ tooltip: { sx: { - color: "#ffffff", - backgroundColor: "#444444", + color: theme.palette.text.primary, + backgroundColor: theme.palette.background.default, }, }, arrow: { sx: { - color: "#444444", + color: theme.palette.text.secondary, }, }, }} @@ -598,157 +624,188 @@ export const ChatOptions = ({ messages : untransformedMessages, goToMessage, mem - { - setMode("default") - setSearchValue('') - setSelectedMember(0) - openQManager() - }}> + { + setMode('default'); + setSearchValue(''); + setSelectedMember(0); + openQManager(); + }} + > Q-MANAGER} + title={ + + Q-MANAGER + + } placement="left" arrow - sx={{ fontSize: "24" }} + sx={{ fontSize: '24' }} slotProps={{ tooltip: { sx: { - color: "#ffffff", - backgroundColor: "#444444", + color: theme.palette.text.primary, + backgroundColor: theme.palette.background.default, }, }, arrow: { sx: { - color: "#444444", + color: theme.palette.text.secondary, }, }, }} > - + - - { - setMode("mentions") - setSearchValue('') - setSelectedMember(0) - }}> - MENTIONED} - placement="left" - arrow - sx={{ fontSize: "24" }} - slotProps={{ - tooltip: { - sx: { - color: "#ffffff", - backgroundColor: "#444444", - }, - }, - arrow: { - sx: { - color: "#444444", - }, - }, + + { + setMode('mentions'); + setSearchValue(''); + setSelectedMember(0); }} > - 0 && (!lastMentionTimestamp || lastMentionTimestamp < mentionList[0]?.timestamp) ? 'var(--unread)' : 'white' - }} /> - - - + + MENTIONED + + } + placement="left" + arrow + sx={{ fontSize: '24' }} + slotProps={{ + tooltip: { + sx: { + color: theme.palette.text.primary, + backgroundColor: theme.palette.background.default, + }, + }, + arrow: { + sx: { + color: theme.palette.text.secondary, + }, + }, + }} + > + 0 && + (!lastMentionTimestamp || + lastMentionTimestamp < mentionList[0]?.timestamp) + ? 'var(--unread)' + : 'white', + }} + /> + + - - ); }; - -const ShowMessage = ({message, goToMessage, messages})=> { +const ShowMessage = ({ message, goToMessage, messages }) => { + const theme = useTheme(); return ( - - - - - {message?.senderName?.charAt(0)} - - - {message?.senderName} - - - - - {formatTimestamp(message.timestamp)} - { - const findMsgIndex = messages.findIndex( - (item) => - item?.signature === message?.signature - ); - if (findMsgIndex !== -1) { - goToMessage(findMsgIndex); - } - }} - > - {message?.messageText && ( - - )} - {message?.decryptedData?.message && ( -

" - } - /> - )} - -
-
- ) -} \ No newline at end of file + + + + + {message?.senderName?.charAt(0)} + + + {message?.senderName} + + + + + + + + {formatTimestamp(message.timestamp)} + + { + const findMsgIndex = messages.findIndex( + (item) => item?.signature === message?.signature + ); + if (findMsgIndex !== -1) { + goToMessage(findMsgIndex); + } + }} + > + {message?.messageText && ( + + )} + {message?.decryptedData?.message && ( +

'} + /> + )} +
+
+ ); +}; diff --git a/src/components/Group/AddGroup.tsx b/src/components/Group/AddGroup.tsx index aea8ae1..1e5962b 100644 --- a/src/components/Group/AddGroup.tsx +++ b/src/components/Group/AddGroup.tsx @@ -29,15 +29,14 @@ import { getFee } from '../../background'; import { MyContext, isMobile } from '../../App'; import { subscribeToEvent, unsubscribeFromEvent } from '../../utils/events'; -export const Label = styled('label')( - ({ theme }) => ` +export const Label = styled('label')` + display: block; font-family: 'IBM Plex Sans', sans-serif; font-size: 14px; - display: block; - margin-bottom: 4px; font-weight: 400; - ` -); + margin-bottom: 4px; +`; + const Transition = React.forwardRef(function Transition( props: TransitionProps & { children: React.ReactElement; diff --git a/src/components/Group/Group.tsx b/src/components/Group/Group.tsx index 6351f2b..afd3abc 100644 --- a/src/components/Group/Group.tsx +++ b/src/components/Group/Group.tsx @@ -7,6 +7,7 @@ import { ListItemAvatar, ListItemText, Typography, + useTheme, } from '@mui/material'; import React, { useCallback, @@ -477,22 +478,20 @@ export const Group = ({ } setIsOpenSideViewGroups((prev) => !prev); }; + useEffect(() => { timestampEnterDataRef.current = timestampEnterData; }, [timestampEnterData]); - useEffect(() => { isFocusedRef.current = isFocused; }, [isFocused]); useEffect(() => { groupSectionRef.current = groupSection; }, [groupSection]); - useEffect(() => { selectedGroupRef.current = selectedGroup; setSelectedGroupId(selectedGroup?.groupId); }, [selectedGroup]); - useEffect(() => { selectedDirectRef.current = selectedDirect; }, [selectedDirect]); @@ -852,6 +851,7 @@ export const Group = ({ Object.keys(groupsProperties) ) ) { + // TODO: empty block. Check it! } else { getGroupsProperties(myAddress); } @@ -976,6 +976,7 @@ export const Group = ({ console.log(error); } }; + useEffect(() => { if ( !initiatedGetMembers.current && @@ -1524,6 +1525,7 @@ export const Group = ({ setMobileViewMode('home'); } if (!isMobile) { + // TODO: empty block. Check it! } setDesktopViewMode('home'); @@ -1601,27 +1603,29 @@ export const Group = ({ } }; + const theme = useTheme(); + const renderDirects = () => { return (
{!isMobile && ( @@ -1664,8 +1668,8 @@ export const Group = ({ directChatHasUnread ? 'var(--unread)' : desktopSideView === 'directs' - ? 'white' - : 'rgba(250, 250, 250, 0.5)' + ? theme.palette.text.primary + : theme.palette.text.secondary } label="Messaging" selected={desktopSideView === 'directs'} @@ -1676,8 +1680,8 @@ export const Group = ({ directChatHasUnread ? 'var(--unread)' : desktopSideView === 'directs' - ? 'white' - : 'rgba(250, 250, 250, 0.5)' + ? theme.palette.text.primary + : theme.palette.text.secondary } /> @@ -1687,12 +1691,12 @@ export const Group = ({
{directs.map((direct: any) => ( @@ -1731,11 +1735,14 @@ export const Group = ({ width: '100%', flexDirection: 'column', cursor: 'pointer', - border: '1px #232428 solid', + borderColor: theme.palette.primary, + borderWidth: '1px', + borderStyle: 'solid', padding: '2px', borderRadius: '2px', background: - direct?.address === selectedDirect?.address && 'white', + direct?.address === selectedDirect?.address && + theme.palette.background.default, }} > @@ -1767,7 +1774,7 @@ export const Group = ({ style: { color: direct?.address === selectedDirect?.address && - 'black', + theme.palette.text.primary, textWrap: 'wrap', overflow: 'hidden', }, @@ -1776,7 +1783,7 @@ export const Group = ({ style: { color: direct?.address === selectedDirect?.address && - 'black', + theme.palette.text.primary, fontSize: '12px', }, }} @@ -1821,7 +1828,7 @@ export const Group = ({ > New Chat @@ -1840,7 +1847,7 @@ export const Group = ({ flexDirection: 'column', alignItems: 'flex-start', height: isMobile ? `calc(${rootHeight} - 45px)` : '100%', - background: !isMobile && 'var(--bg-primary)', + background: !isMobile && theme.palette.background.default, borderRadius: !isMobile && '0px 15px 15px 0px', }} > @@ -1864,8 +1871,8 @@ export const Group = ({ groupChatHasUnread || groupsAnnHasUnread ? 'var(--unread)' : desktopSideView === 'groups' - ? 'white' - : 'rgba(250, 250, 250, 0.5)' + ? theme.palette.text.primary + : theme.palette.text.secondary } label="Groups" selected={desktopSideView === 'groups'} @@ -1877,8 +1884,8 @@ export const Group = ({ groupChatHasUnread || groupsAnnHasUnread ? 'var(--unread)' : desktopSideView === 'groups' - ? 'white' - : 'rgba(250, 250, 250, 0.5)' + ? theme.palette.text.primary + : theme.palette.text.secondary } /> @@ -1894,8 +1901,8 @@ export const Group = ({ directChatHasUnread ? 'var(--unread)' : desktopSideView === 'directs' - ? 'white' - : 'rgba(250, 250, 250, 0.5)' + ? theme.palette.text.primary + : theme.palette.text.secondary } label="Messaging" selected={desktopSideView === 'directs'} @@ -1906,8 +1913,8 @@ export const Group = ({ directChatHasUnread ? 'var(--unread)' : desktopSideView === 'directs' - ? 'white' - : 'rgba(250, 250, 250, 0.5)' + ? theme.palette.text.primary + : theme.palette.text.secondary } /> @@ -1917,15 +1924,15 @@ export const Group = ({
{groups.map((group: any) => ( @@ -1967,14 +1974,17 @@ export const Group = ({ }} sx={{ display: 'flex', - width: '100%', - flexDirection: 'column', - cursor: 'pointer', - border: '1px #232428 solid', - padding: '2px', - borderRadius: '2px', background: - group?.groupId === selectedGroup?.groupId && 'white', + group?.groupId === selectedGroup?.groupId && + theme.palette.background.default, + borderColor: theme.palette.primary, + borderRadius: '2px', + borderStyle: 'solid', + borderWidth: '1px', + cursor: 'pointer', + flexDirection: 'column', + padding: '2px', + width: '100%', }} > {groupsProperties[group?.groupId]?.isOpen === false ? ( - // - // {group.groupName?.charAt(0)} - // )} {chatMode === 'groups' && ( @@ -2115,7 +2116,7 @@ export const Group = ({ > Group Mgmt @@ -2132,7 +2133,7 @@ export const Group = ({ > @@ -2149,7 +2150,7 @@ export const Group = ({ > New Chat @@ -2166,6 +2167,7 @@ export const Group = ({ myAddress={myAddress} setIsLoadingGroups={setIsLoadingGroups} /> + {!isMobile && @@ -2207,6 +2209,7 @@ export const Group = ({ desktopViewMode === 'chat' && desktopSideView !== 'directs' && renderGroups()} + {!isMobile && desktopViewMode === 'chat' && desktopSideView === 'directs' && @@ -2230,26 +2233,26 @@ export const Group = ({ {isMobile && ( @@ -2264,10 +2267,10 @@ export const Group = ({ { setSelectedDirect(null); - setNewChat(false); }} setMobileViewModeKeepOpen={setMobileViewModeKeepOpen} @@ -2319,18 +2319,18 @@ export const Group = ({ {desktopViewMode === 'chat' && !selectedGroup && ( No group selected @@ -2423,12 +2423,12 @@ export const Group = ({ !secretKeyPublishDate && (
{' '} @@ -2550,9 +2550,9 @@ export const Group = ({ { const [groupsWithJoinRequests, setGroupsWithJoinRequests] = React.useState( @@ -37,11 +32,14 @@ export const GroupInvites = ({ myAddress, setOpenAddGroup }) => { setGroupsWithJoinRequests(resMoreData); } catch (error) { + console.log(error); } finally { setLoading(false); } }; + const theme = useTheme(); + React.useEffect(() => { if (myAddress) { getJoinRequests(); @@ -51,57 +49,65 @@ export const GroupInvites = ({ myAddress, setOpenAddGroup }) => { return ( setIsExpanded((prev)=> !prev)} + onClick={() => setIsExpanded((prev) => !prev)} > - Group Invites {groupsWithJoinRequests?.length > 0 && ` (${groupsWithJoinRequests?.length})`} + Group Invites{' '} + {groupsWithJoinRequests?.length > 0 && + ` (${groupsWithJoinRequests?.length})`} - {isExpanded ? : ( - - )} + {isExpanded ? ( + + ) : ( + + )} + {loading && groupsWithJoinRequests.length === 0 && ( @@ -110,18 +116,18 @@ export const GroupInvites = ({ myAddress, setOpenAddGroup }) => { {!loading && groupsWithJoinRequests.length === 0 && ( Nothing to display @@ -130,11 +136,11 @@ export const GroupInvites = ({ myAddress, setOpenAddGroup }) => { )} @@ -142,13 +148,13 @@ export const GroupInvites = ({ myAddress, setOpenAddGroup }) => { return ( { setOpenAddGroup(true); setTimeout(() => { - executeEvent("openGroupInvitesRequest", {}); + executeEvent('openGroupInvitesRequest', {}); }, 300); }} disablePadding @@ -156,8 +162,8 @@ export const GroupInvites = ({ myAddress, setOpenAddGroup }) => { @@ -166,8 +172,8 @@ export const GroupInvites = ({ myAddress, setOpenAddGroup }) => {