improved sent requests

This commit is contained in:
Daniel Lugo 2020-02-13 16:25:13 -04:00
parent 21210694d5
commit b9abcb06cc

View file

@ -1,4 +1,6 @@
/** @format */ /** @format */
const debounce = require('lodash/debounce')
const Streams = require('../streams') const Streams = require('../streams')
/** /**
* @typedef {import('../SimpleGUN').UserGUNNode} UserGUNNode * @typedef {import('../SimpleGUN').UserGUNNode} UserGUNNode
@ -27,14 +29,14 @@ let currentReqs = []
const getCurrentSentReqs = () => currentReqs const getCurrentSentReqs = () => currentReqs
const react = () => { const react = debounce(() => {
/** @type {SimpleSentRequest[]} */ /** @type {SimpleSentRequest[]} */
const finalSentReqs = [] const newReqs = []
const pubToHAddr = Streams.getAddresses() const pubToHAddr = Streams.getAddresses()
const storedReqs = Streams.getStoredReqs() const storedReqs = Streams.getStoredReqs()
const pubToLastSentReqID = Streams.getSentReqIDs() const pubToLastSentReqID = Streams.getSentReqIDs()
const pubToIncoming = Streams.getPubToIncoming() const pubToFeed = Streams.getPubToFeed()
const pubToAvatar = Streams.getPubToAvatar() const pubToAvatar = Streams.getPubToAvatar()
const pubToDN = Streams.getPubToDn() const pubToDN = Streams.getPubToDn()
@ -48,7 +50,7 @@ const react = () => {
const lastReqID = pubToLastSentReqID[recipientPub] const lastReqID = pubToLastSentReqID[recipientPub]
const isStale = typeof lastReqID !== 'undefined' && lastReqID !== sentReqID const isStale = typeof lastReqID !== 'undefined' && lastReqID !== sentReqID
const isConnected = typeof pubToIncoming[recipientPub] !== 'undefined' const isConnected = Array.isArray(pubToFeed[recipientPub])
if (isStale || isConnected) { if (isStale || isConnected) {
// eslint-disable-next-line no-continue // eslint-disable-next-line no-continue
@ -59,7 +61,6 @@ const react = () => {
// eslint-disable-next-line no-empty-function // eslint-disable-next-line no-empty-function
Streams.onAddresses(() => {}, recipientPub)() Streams.onAddresses(() => {}, recipientPub)()
} }
if (typeof pubToAvatar[recipientPub] === 'undefined') { if (typeof pubToAvatar[recipientPub] === 'undefined') {
// eslint-disable-next-line no-empty-function // eslint-disable-next-line no-empty-function
Streams.onAvatar(() => {}, recipientPub)() Streams.onAvatar(() => {}, recipientPub)()
@ -69,7 +70,7 @@ const react = () => {
Streams.onDisplayName(() => {}, recipientPub)() Streams.onDisplayName(() => {}, recipientPub)()
} }
finalSentReqs.push({ newReqs.push({
id: sentReqID, id: sentReqID,
recipientAvatar: pubToAvatar[recipientPub] || null, recipientAvatar: pubToAvatar[recipientPub] || null,
recipientChangedRequestAddress: recipientChangedRequestAddress:
@ -79,10 +80,11 @@ const react = () => {
timestamp timestamp
}) })
} }
currentReqs = finalSentReqs
currentReqs = newReqs
listeners.forEach(l => l(currentReqs)) listeners.forEach(l => l(currentReqs))
} }, 750)
let subbed = false let subbed = false
@ -94,20 +96,19 @@ let subbed = false
*/ */
const onSentReqs = cb => { const onSentReqs = cb => {
listeners.add(cb) listeners.add(cb)
cb(currentReqs)
if (!subbed) { if (!subbed) {
Streams.onAddresses(react) Streams.onAddresses(react)
Streams.onStoredReqs(react) Streams.onStoredReqs(react)
Streams.onLastSentReqIDs(react) Streams.onLastSentReqIDs(react)
Streams.onIncoming(react) Streams.onPubToFeed(react)
Streams.onAvatar(react) Streams.onAvatar(react)
Streams.onDisplayName(react) Streams.onDisplayName(react)
subbed = true subbed = true
} }
cb(currentReqs)
return () => { return () => {
listeners.delete(cb) listeners.delete(cb)
} }