Merge pull request #492 from shocknet/bug/gun-stability

Gun stability fixes
This commit is contained in:
CapDog 2021-11-04 09:31:38 -04:00 committed by GitHub
commit 9a3de9e348
2 changed files with 36 additions and 28 deletions

View file

@ -392,15 +392,11 @@ const authenticate = async (alias, pass, __user) => {
} }
} }
const logoff = () => {
user.leave()
}
const instantiateGun = () => { const instantiateGun = () => {
const Config = require('../config') const Config = require('../config')
if (user) { // if (user) {
user.leave() // user.leave()
} // }
// @ts-ignore // @ts-ignore
user = null user = null
if (gun) { if (gun) {
@ -523,7 +519,7 @@ const register = async (alias, pass) => {
module.exports = { module.exports = {
authenticate, authenticate,
logoff, instantiateGun,
isAuthenticated, isAuthenticated,
isAuthenticating, isAuthenticating,
isRegistering, isRegistering,

View file

@ -506,7 +506,7 @@ module.exports = async (
await recreateLnServices() await recreateLnServices()
if (GunDB.isAuthenticated()) { if (GunDB.isAuthenticated()) {
GunDB.logoff() GunDB.instantiateGun()
} }
const publicKey = await GunDB.authenticate(alias, password) const publicKey = await GunDB.authenticate(alias, password)
@ -2296,27 +2296,39 @@ module.exports = async (
: publicKey : publicKey
? gun.user(publicKey) ? gun.user(publicKey)
: gun : gun
keys.forEach(key => (node = node.get(key)))
logger.info(`fetching: ${keys}`) logger.info(`fetching: ${keys}`)
return new Promise((res, rej) => { keys.forEach(key => (node = node.get(key)))
const listener = data => {
logger.info(`got res for: ${keys}`)
logger.info(data || 'falsey data (does not get logged)')
if (publicKeyForDecryption) {
GunWriteRPC.deepDecryptIfNeeded(
data,
publicKeyForDecryption,
epubForDecryption
)
.then(res)
.catch(rej)
} else {
res(data)
}
}
if (type === 'once') node.once(listener) if (!publicKeyForDecryption || !epubForDecryption) {
if (type === 'load') node.load(listener) logger.warn('[GUN] Missing public key for decryption!', {
publicKeyForDecryption,
epubForDecryption
})
}
return new Promise((res, rej) => {
try {
const listener = data => {
logger.info(`got res for: ${keys}`)
logger.info(data || 'falsey data (does not get logged)')
if (publicKeyForDecryption) {
GunWriteRPC.deepDecryptIfNeeded(
data,
publicKeyForDecryption,
epubForDecryption
)
.then(res)
.catch(rej)
} else {
res(data)
}
}
if (type === 'once') node.once(listener)
if (type === 'load') node.load(listener)
} catch (err) {
logger.error('Gun Fetch Error:', err)
}
}) })
}) })
} }