1
0
mirror of https://github.com/oceanprotocol/market.git synced 2024-06-16 17:33:26 +02:00
market/src/components/@shared/DirectMessages/ListItem.tsx
Marco Elissa 8fd3eaf8de
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 3cdaf54827, reversing
changes made to 02f2acb774.

* Revert "Revert "Merge branch 'main' into orbis""

This reverts commit a5a32b1534.

* 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 09:22:57 +03:00

67 lines
2.0 KiB
TypeScript

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>
)
}