1
0
mirror of https://github.com/oceanprotocol/market.git synced 2024-12-02 05:57:29 +01:00

update callbackMessage.

This commit is contained in:
Dollar Bull 2022-10-06 23:55:54 +07:00
parent b4479c8b79
commit a890beea4e
5 changed files with 51 additions and 19 deletions

View File

@ -8,9 +8,9 @@ import React, {
} from 'react'
import { sleep } from '@utils/index'
import { Orbis } from '@orbisclub/orbis-sdk'
import { useWeb3 } from './Web3'
import { accountTruncate } from '@utils/web3'
import { didToAddress } from '@utils/orbis'
import { useWeb3 } from './Web3'
const OrbisContext = createContext(null)

View File

@ -83,6 +83,7 @@ interface OrbisPostContentInterface {
mentions?: OrbisPostMentionsInterface[]
reply_to?: string
type?: string
encryptedMessage?: object
}
interface OrbisCreatorMetadataInterface {

View File

@ -6,18 +6,13 @@ import Input from '@shared/FormInput'
import { useOrbis } from '@context/Orbis'
// import dynamic from 'next/dynamic'
import Picker, { EmojiClickData, EmojiStyle, Theme } from 'emoji-picker-react'
import useDarkMode from '@oceanprotocol/use-dark-mode'
import { useMarketMetadata } from '@context/MarketMetadata'
// interface ChatToolbarProps {
// mode: boolean
// }
const ChatToolbar = () => {
const { appConfig } = useMarketMetadata()
const darkMode = useDarkMode(false, appConfig?.darkModeConfig)
const { orbis, conversationId, convOpen } = useOrbis()
export default function ChatToolbar({
callbackMessage
}: {
callbackMessage: (post: OrbisPostInterface) => void
}) {
const { orbis, conversationId, account, convOpen } = useOrbis()
const [content, setContent] = useState<string>('')
const [showPicker, setShowPicker] = useState(false)
@ -41,6 +36,21 @@ const ChatToolbar = () => {
}, [convOpen])
const sendMessage = async () => {
const _callbackMessage: OrbisPostInterface = {
creator: account.did,
creator_details: {
did: account.did,
profile: account.profile
},
stream_id: null,
content: {
body: content
},
timestamp: Date.now()
}
callbackMessage(_callbackMessage)
setContent('')
const res = await orbis.sendMessage({
conversation_id: conversationId,
body: content
@ -48,6 +58,7 @@ const ChatToolbar = () => {
if (res.status === 200) {
console.log('succes send message with,', res)
setContent('')
}
}
@ -61,7 +72,7 @@ const ChatToolbar = () => {
size="small"
placeholder="Type Message"
value={content}
onChange={(e: any) => setContent(e.target.value)}
onInput={(e) => setContent(e.target.value)}
/>
<button
className={styles.button}
@ -79,10 +90,10 @@ const ChatToolbar = () => {
{showPicker && (
<Picker
onEmojiClick={onEmojiClick}
theme={darkMode.value ? Theme.DARK : Theme.LIGHT}
theme={Theme.DARK}
emojiStyle={EmojiStyle.APPLE}
autoFocusSearch={false}
lazyLoadEmojis={false}
lazyLoadEmojis={true}
width={324}
height={400}
/>
@ -91,5 +102,3 @@ const ChatToolbar = () => {
</div>
)
}
export default ChatToolbar

View File

@ -17,6 +17,11 @@ function RenderDecryptedMessage({
useEffect(() => {
const decryptMessage = async (content: OrbisPostContentInterface) => {
if (!content?.encryptedMessage) {
setLoading(false)
setDecrypted(content.body)
return
}
setLoading(true)
const res = await orbis.decryptMessage(content)

View File

@ -20,7 +20,7 @@ export default function FloatingChat() {
conversationTitle
} = useOrbis()
const [messages, setMessages] = useState([])
const [messages, setMessages] = useState<OrbisPostInterface[]>([])
// const [conversationTitle, setConversationTitle] = useState(null)
const [unreads, setUnreads] = useState([])
@ -76,6 +76,23 @@ export default function FloatingChat() {
}
}
const callbackMessage = (nMessage: OrbisPostInterface) => {
if (nMessage.stream_id) {
const _nMessage = messages.findIndex((o) => {
return !o.stream_id
})
console.log(_nMessage)
if (_nMessage > -1) {
const _messages = [...messages]
_messages[_nMessage] = nMessage
setMessages(_messages)
}
} else {
const _messages = [...messages, nMessage]
setMessages(_messages)
}
}
useEffect(() => {
if (conversationId) {
getMessages(conversationId)
@ -152,7 +169,7 @@ export default function FloatingChat() {
</button>
</div>
<Conversation messages={messages} />
<ChatToolbar />
<ChatToolbar callbackMessage={callbackMessage} />
</div>
)}
</div>