mirror of
https://github.com/Permissionless-Software-Foundation/bch-dex-taker-v2.git
synced 2026-09-22 09:12:00 -07:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9f7b11fbc4 | ||
|
|
9f6c0d3fc7 | ||
|
|
dfb0bca2ec | ||
|
|
efdfb7971b | ||
|
|
8c59bdf6d8 |
@@ -138,7 +138,7 @@ function InfoButton (props) {
|
||||
|
||||
</Container>
|
||||
</Modal.Body>
|
||||
<Modal.Footer style={{ justifyContent: 'center'}}>
|
||||
<Modal.Footer style={{ justifyContent: 'center' }}>
|
||||
{!loading && <Button style={{ width: '135px' }} onClick={updateOffer}>Update</Button>}
|
||||
{loading && <Spinner />}
|
||||
</Modal.Footer>
|
||||
|
||||
@@ -12,6 +12,8 @@ import ChatSidebar from './chat-sidebar'
|
||||
import ChatMain from './chat-main'
|
||||
import config from '../../../config'
|
||||
|
||||
// Global variables and constants
|
||||
|
||||
function NostrChat (props) {
|
||||
const { appData } = props
|
||||
const { nostrQueries, bchWalletState, startChannelChat } = appData
|
||||
@@ -28,6 +30,8 @@ function NostrChat (props) {
|
||||
const [selectedChannel, setSelectedChannel] = useState(null)
|
||||
const [selectedChannelIsDm, setSelectedChannelIsDm] = useState(false)
|
||||
|
||||
const [deletedChats] = useState(appData.nostrQueries.deletedChats)
|
||||
|
||||
const profilesRef = useRef({})
|
||||
const dmChannelsRef = useRef([])
|
||||
|
||||
@@ -182,6 +186,9 @@ function NostrChat (props) {
|
||||
// fetch messages when channel selected and channel metadata are loaded
|
||||
if (!selectedChannel || !channelsLoaded || selectedChannelIsDm) return
|
||||
|
||||
// wait for deleted chats
|
||||
if (!deletedChats || !Array.isArray(deletedChats)) return
|
||||
|
||||
// Load messages for group channel
|
||||
const relays = nostrQueries.relays
|
||||
if (relays.length === 0) {
|
||||
@@ -204,7 +211,8 @@ function NostrChat (props) {
|
||||
pool.on('event', (relay, subId, ev) => {
|
||||
console.log('Group post retrieved from ', relay.url, ev.content)
|
||||
const onBlackList = nostrQueries.blackList.find((val) => { return val === ev.pubkey })
|
||||
if (!onBlackList)onMsgRead(ev)
|
||||
const isDeleted = deletedChats.find((val) => { return val.eventId === ev.id })
|
||||
if (!onBlackList && !isDeleted)onMsgRead(ev)
|
||||
})
|
||||
|
||||
return () => {
|
||||
@@ -212,7 +220,7 @@ function NostrChat (props) {
|
||||
console.log('Close existing pool for group channel')
|
||||
pool.close()
|
||||
}
|
||||
}, [onMsgRead, selectedChannel, selectedChannelIsDm, nostrQueries, channelsLoaded])
|
||||
}, [onMsgRead, selectedChannel, selectedChannelIsDm, nostrQueries, channelsLoaded, deletedChats])
|
||||
|
||||
// Handle nostr pool for dm channels
|
||||
useEffect(() => {
|
||||
|
||||
@@ -46,6 +46,7 @@ function useAppState () {
|
||||
const [hideSpinner, setHideSpinner] = useState(false)
|
||||
const [denyClose, setDenyClose] = useState(false)
|
||||
const [isSingleView, setIsSingleView] = useState(false)
|
||||
|
||||
// Background process state
|
||||
const [asyncBackGroundInitState, setAsyncBackGroundInitState] = useState({
|
||||
bchInitLoaded: false, slpInitLoaded: false, asyncBackgroundFinished: false
|
||||
|
||||
@@ -7,6 +7,9 @@ import * as nip19 from 'nostr-tools/nip19'
|
||||
import { nip04 } from 'nostr-tools'
|
||||
import { hexToBytes } from '@noble/hashes/utils' // already an installed dependency
|
||||
import axios from 'axios'
|
||||
import config from '../config'
|
||||
|
||||
const SERVER = `${config.dexServer}/`
|
||||
|
||||
export default class NostrQueries {
|
||||
constructor ({ relays }) {
|
||||
@@ -16,11 +19,16 @@ export default class NostrQueries {
|
||||
this.loadedChannelsInfo = {}
|
||||
this.blackList = []
|
||||
this.blackListFetched = false
|
||||
|
||||
this.deletedChats = []
|
||||
this.deletedPosts = []
|
||||
}
|
||||
|
||||
async start () {
|
||||
try {
|
||||
await this.getBlackList()
|
||||
await this.fetchDeletedChats()
|
||||
await this.fetchDeletedPosts()
|
||||
} catch (error) {
|
||||
console.error('NostrQueries.start() error : ', error.message)
|
||||
throw error
|
||||
@@ -182,7 +190,9 @@ export default class NostrQueries {
|
||||
|
||||
pool.on('event', (relay, subId, ev) => {
|
||||
console.log('post retrieved from ', relay.url, ev.sig)
|
||||
list = [...list, ev]
|
||||
const isDeleted = this.deletedPosts.find((val) => { return val.eventId === ev.id })
|
||||
|
||||
if (!isDeleted) list = [...list, ev]
|
||||
})
|
||||
pool.on('error', (relay) => {
|
||||
relay.close()
|
||||
@@ -506,4 +516,39 @@ export default class NostrQueries {
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
// Get all deleted chats
|
||||
async fetchDeletedChats () {
|
||||
try {
|
||||
const options = {
|
||||
method: 'GET',
|
||||
url: `${SERVER}nostr/deletedChat`
|
||||
}
|
||||
const result = await axios.request(options)
|
||||
const { deletedChats } = result.data
|
||||
this.deletedChats = deletedChats
|
||||
} catch (error) {
|
||||
console.error('Error fetchDeletedChats: ', error)
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
// Get all deleted posts
|
||||
async fetchDeletedPosts () {
|
||||
try {
|
||||
const options = {
|
||||
method: 'GET',
|
||||
url: `${SERVER}nostr/deletedPost`
|
||||
}
|
||||
const result = await axios.request(options)
|
||||
console.log('result', result)
|
||||
const { deletedPosts } = result.data
|
||||
console.log('deletedPosts', deletedPosts)
|
||||
|
||||
this.deletedPosts = deletedPosts
|
||||
} catch (error) {
|
||||
console.error('Error fetchDeletedPosts: ', error)
|
||||
throw error
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user