avoid duplicate alias sign up
This commit is contained in:
parent
601ca0e831
commit
fee393ae83
1 changed files with 39 additions and 0 deletions
|
|
@ -1275,6 +1275,38 @@ const register = async (alias, pass) => {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// this import is done here to avoid circular dependency hell
|
||||||
|
const { timeout5 } = require('../contact-api/utils')
|
||||||
|
|
||||||
|
let userData = await timeout5(
|
||||||
|
new Promise(res => {
|
||||||
|
gun.get(`~@${alias}`).once(ud => res(ud))
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
|
if (userData) {
|
||||||
|
throw new Error(
|
||||||
|
'The given alias has been used before, use an unique alias instead.'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
await new Promise(res => setTimeout(res, 300))
|
||||||
|
|
||||||
|
userData = await timeout5(
|
||||||
|
new Promise(res => {
|
||||||
|
gun.get(`~@${alias}`).once(ud => res(ud), {
|
||||||
|
// https://github.com/amark/gun/pull/971#issue-438630761
|
||||||
|
wait: 1500
|
||||||
|
})
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
|
if (userData) {
|
||||||
|
throw new Error(
|
||||||
|
'The given alias has been used before, use an unique alias instead. (Caught at 2nd try)'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
_isRegistering = true
|
_isRegistering = true
|
||||||
|
|
||||||
/** @type {import('../contact-api/SimpleGUN').CreateAck} */
|
/** @type {import('../contact-api/SimpleGUN').CreateAck} */
|
||||||
|
|
@ -1282,6 +1314,13 @@ const register = async (alias, pass) => {
|
||||||
user.create(alias, pass, ack => res(ack))
|
user.create(alias, pass, ack => res(ack))
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// An empty ack object seems to be caused by a duplicate alias sign up
|
||||||
|
if ('{}' === JSON.stringify(ack)) {
|
||||||
|
throw new Error(
|
||||||
|
'The given alias has been used before, use an unique alias instead. (Empty ack)'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
_isRegistering = false
|
_isRegistering = false
|
||||||
|
|
||||||
if (typeof ack.err === 'string') {
|
if (typeof ack.err === 'string') {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue