1
0
mirror of https://github.com/oceanprotocol/market.git synced 2024-06-26 03:06:49 +02:00
market/src/components/@shared/DirectMessages/ListItem.tsx

67 lines
2.0 KiB
TypeScript
Raw Normal View History

Encrypted Direct Messaging module (#1870) * add orbis context * new changes * Add orbis floating chat * adding orbis function * load orbis conversations * update message button in profile * minor fix conversation styles * update orbis version * adding details conditional * updating post comment function * Update send message button style * Fix send message button css * udpate orbis * update posts and floating function * Add chatbox emoji * Add Emoji Picker Theme * useDarkMode emoji fix * remove next dynamic on emoji picker * show conversation title from participant * update callbackMessage. * Update Emoji Picker * Add Emoji Picker to Postbox * rename FloatingChat to DirectMessages * create some global orbis components * update package-lock.json * change any type * change Blockie to Avatar component * fix type errors * fix infinite loop when no comment found * Hide send message button on ownAccount profile * Delete unused component * minor changes * update orbis comment and DM components * fix load older messages on DM scroll * fixed orbis createPost * update optional wallet signs * add return value on connect * add padding bottom to compensate DM component * add conditional connect and sign button * update direct message component * update get notifications logic * rerun npm install * rerun npm install * temporary push * rerun npm install * add new custom hooks * run npm install * update flow on address changed * update custom DID string * remove lit auth signatures on resetStates() * add hasLit condition on getMessages * add removeCeramicSession function * useLocalStorage to store notifications * minor bug fix * update styles for conversation details * use getEnsName util * update create conversation flow * rerun npm install * update typescript * update orbis sdk version * temporary push * revisions * update orbis version * update notifs count and conversation creation flow * update orbis types * add toast after copy address * add message decryption refresh button * rerun npm install * remove comment from asset page * test push * remove lit-auth-signature on wallet changed * update orbis SDK to v0.4.14 * update copy * update Orbis SDK to v0.4.17 * update copy * create new DM button component and add to asset * add send button and remove emojiPicker * Revert "Merge branch 'main' into orbis" This reverts commit 3cdaf54827cff997ad8af6459f4d56cd49c66862, reversing changes made to 02f2acb774855716e0f5bd4d3046d463c3e6c395. * Revert "Revert "Merge branch 'main' into orbis"" This reverts commit a5a32b1534fdd0758ec4a399e4e0c259cfdb22f8. * update new conversation flow * update intro message * minor fix typo * remove unused package and fixed outdated versions * remove comment component and restructured folders * update orbis-sdk * small cleanup * direct message button style updates --------- Co-authored-by: Nuary Pradipta <nuary.pradipta@gmail.com> Co-authored-by: Dollar Bull <ramadhanakhri@gmail.com> Co-authored-by: Bogdan Fazakas <bogdan.fazakas@gmail.com>
2023-04-05 08:22:57 +02:00
import React, { useState, useEffect } from 'react'
import { useCancelToken } from '@hooks/useCancelToken'
import { useOrbis } from '@context/DirectMessages'
import { IConversationWithAdditionalData } from '@context/DirectMessages/_types'
import { didToAddress } from './_utils'
import Avatar from '@shared/atoms/Avatar'
import Time from '@shared/atoms/Time'
import styles from './ListItem.module.css'
export default function ConversationItem({
conversation,
setConversationId
}: {
conversation: IConversationWithAdditionalData
setConversationId: (value: string) => void
}) {
const { account, getConversationTitle } = useOrbis()
const newCancelToken = useCancelToken()
const [name, setName] = useState<string>(null)
const [address, setAddress] = useState(null)
useEffect(() => {
const getProfile = async () => {
const did = conversation.recipients.find((o) => o !== account.did)
const _address = didToAddress(did)
setAddress(_address)
const _name = await getConversationTitle(conversation?.stream_id)
setName(_name)
}
if (conversation && account) {
getProfile()
}
}, [conversation, account, newCancelToken, getConversationTitle])
return (
<div
className={styles.conversation}
onClick={() => setConversationId(conversation.stream_id)}
>
<div className={styles.accountAvatarSet}>
<Avatar accountId={address} className={styles.accountAvatar} />
{conversation.notifications_count > 0 && (
<div className={styles.notificationCount}>
{conversation.notifications_count}
</div>
)}
</div>
<div className={styles.accountInfo}>
<div className={styles.accountName}>{name}</div>
<span className={styles.lastMessageDate}>
<Time
date={conversation.last_message_timestamp.toString()}
isUnix={true}
relative={false}
displayFormat="Pp"
/>
</span>
</div>
</div>
)
}