mirror of
https://github.com/amark/gun.git
synced 2025-06-12 09:06:52 +00:00
SEA.recall and .alive for async so User done
This commit is contained in:
parent
2902b3df97
commit
351623a487
48
sea.js
48
sea.js
@ -547,7 +547,7 @@
|
||||
}).filter((props) => !!props))
|
||||
|
||||
if (!key) {
|
||||
throw new { err: err || 'Public key does not exist!' }
|
||||
throw { err: err || 'Public key does not exist!' }
|
||||
}
|
||||
|
||||
// now we have AES decrypted the private key,
|
||||
@ -760,31 +760,21 @@
|
||||
},
|
||||
// If authentication is to be remembered over reloads or browser closing,
|
||||
// set validity time in minutes.
|
||||
recall(setvalidity, cb, options) {
|
||||
async recall(setvalidity, options) {
|
||||
const root = this.back(-1)
|
||||
|
||||
let validity
|
||||
let callback
|
||||
let opts
|
||||
|
||||
if (!options && typeof cb !== 'function' && !Gun.val.is(cb)) {
|
||||
opts = cb
|
||||
if (!Gun.val.is(setvalidity)) {
|
||||
opts = setvalidity
|
||||
validity = _initial_authsettings.validity
|
||||
} else {
|
||||
callback = cb
|
||||
opts = options
|
||||
validity = setvalidity * 60 // minutes to seconds
|
||||
}
|
||||
if (!callback) {
|
||||
if (typeof setvalidity === 'function') {
|
||||
callback = setvalidity
|
||||
validity = _initial_authsettings.validity
|
||||
} else if (!Gun.val.is(setvalidity)) {
|
||||
opts = setvalidity
|
||||
validity = _initial_authsettings.validity
|
||||
} else {
|
||||
validity = setvalidity * 60 // minutes to seconds
|
||||
}
|
||||
}
|
||||
|
||||
var doIt = function(resolve, reject){
|
||||
// TODO: for some reasong authrecall doesn't work with await here...
|
||||
return await new Promise((resolve, reject) => {
|
||||
// opts = { hook: function({ iat, exp, alias, proof }) }
|
||||
// iat == Date.now() when issued, exp == seconds to expire from iat
|
||||
// How this works:
|
||||
@ -801,21 +791,19 @@
|
||||
Gun.log(err)
|
||||
resolve({ err: (e && e.err) || err })
|
||||
})
|
||||
}
|
||||
if (callback) { doIt(callback, callback) } else { return new Promise(doIt) }
|
||||
})
|
||||
},
|
||||
alive(cb) {
|
||||
async alive() {
|
||||
const root = this.back(-1)
|
||||
const doIt = (resolve, reject) => {
|
||||
try {
|
||||
// All is good. Should we do something more with actual recalled data?
|
||||
authrecall(root).then(() => resolve(root._.user._))
|
||||
.catch((e) => {
|
||||
const err = 'No session!'
|
||||
Gun.log(err)
|
||||
reject({ err })
|
||||
})
|
||||
await authrecall(root)
|
||||
return root._.user._
|
||||
} catch (e) {
|
||||
const err = 'No session!'
|
||||
Gun.log(err)
|
||||
throw { err }
|
||||
}
|
||||
if (cb) { doIt(cb, cb) } else { return new Promise(doIt) }
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -914,7 +914,7 @@ Gun().user && describe('Gun', function(){
|
||||
expect(props.err).to.not.be(undefined);
|
||||
expect(props.err).to.not.be('');
|
||||
expect(props.err.toLowerCase()
|
||||
.indexOf('no session')).not.to.be(-1);
|
||||
.indexOf('failed to decrypt')).not.to.be(-1);
|
||||
done();
|
||||
}).catch(done);
|
||||
}).catch(done);
|
||||
|
Loading…
x
Reference in New Issue
Block a user