1
0
mirror of https://github.com/oceanprotocol/market.git synced 2024-06-17 01:43:23 +02:00
market/src/components/@shared/DirectMessages/DmButton.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

78 lines
2.1 KiB
TypeScript

import React, { useEffect, useState } from 'react'
import Button from '@shared/atoms/Button'
import styles from './DmButton.module.css'
import { useWeb3 } from '@context/Web3'
import { useOrbis } from '@context/DirectMessages'
export default function DmButton({
accountId,
text = 'Send Message'
}: {
accountId: string
text?: string
}) {
const { accountId: ownAccountId, connect } = useWeb3()
const {
checkOrbisConnection,
getConversationByDid,
setConversationId,
setOpenConversations,
createConversation,
getDid
} = useOrbis()
const [userDid, setUserDid] = useState<string | undefined>()
const [isCreatingConversation, setIsCreatingConversation] = useState(false)
const handleActivation = async () => {
const resConnect = await connect()
if (resConnect) {
await checkOrbisConnection({
address: resConnect,
autoConnect: true,
lit: true
})
}
}
useEffect(() => {
const getUserDid = async () => {
const did = await getDid(accountId)
setUserDid(did)
}
if (accountId) {
getUserDid()
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [accountId])
if (accountId !== ownAccountId && userDid) {
return (
<Button
style="text"
size="small"
disabled={isCreatingConversation}
onClick={async () => {
if (!ownAccountId) {
handleActivation()
} else {
setIsCreatingConversation(true)
const conversation = await getConversationByDid(userDid)
if (conversation) {
setConversationId(conversation.stream_id)
} else {
const newConversationId = await createConversation([userDid])
console.log(newConversationId)
setConversationId(newConversationId)
}
setOpenConversations(true)
setIsCreatingConversation(false)
}
}}
>
{isCreatingConversation ? 'Loading...' : text}
</Button>
)
}
}