Merge pull request #21 from shocknet/seed-backup-event
Seed backup event
This commit is contained in:
commit
b0b8eb521c
3 changed files with 63 additions and 2 deletions
|
|
@ -309,6 +309,7 @@ class Mediator {
|
|||
socket.on(Event.ON_RECEIVED_REQUESTS, this.onReceivedRequests)
|
||||
socket.on(Event.ON_SENT_REQUESTS, this.onSentRequests)
|
||||
socket.on(Event.ON_BIO, this.onBio)
|
||||
socket.on(Event.ON_SEED_BACKUP, this.onSeedBackup)
|
||||
|
||||
socket.on(IS_GUN_AUTH, this.isGunAuth)
|
||||
}
|
||||
|
|
@ -943,6 +944,36 @@ class Mediator {
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Readonly<{ token: string }>} body
|
||||
*/
|
||||
onSeedBackup = async body => {
|
||||
try {
|
||||
const { token } = body
|
||||
|
||||
await throwOnInvalidToken(token)
|
||||
|
||||
await API.Events.onSeedBackup(
|
||||
seedBackup => {
|
||||
this.socket.emit(Event.ON_SEED_BACKUP, {
|
||||
ok: true,
|
||||
msg: seedBackup,
|
||||
origBody: body
|
||||
})
|
||||
},
|
||||
user,
|
||||
mySEA
|
||||
)
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
this.socket.emit(Event.ON_SEED_BACKUP, {
|
||||
ok: false,
|
||||
msg: err.message,
|
||||
origBody: body
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1230,6 +1230,34 @@ const onBio = (cb, user) => {
|
|||
})
|
||||
}
|
||||
|
||||
/** @type {string|null} */
|
||||
let currentSeedBackup = null
|
||||
|
||||
/**
|
||||
* @param {(seedBackup: string|null) => void} cb
|
||||
* @param {UserGUNNode} user
|
||||
* @param {ISEA} SEA
|
||||
* @throws {Error} If user hasn't been auth.
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
const onSeedBackup = async (cb, user, SEA) => {
|
||||
if (!user.is) {
|
||||
throw new Error(ErrorCode.NOT_AUTH)
|
||||
}
|
||||
|
||||
const mySecret = await SEA.secret(user._.sea.epub, user._.sea)
|
||||
|
||||
const callb = debounce(cb, DEBOUNCE_WAIT_TIME)
|
||||
callb(currentSeedBackup)
|
||||
|
||||
user.get(Key.SEED_BACKUP).on(async seedBackup => {
|
||||
if (typeof seedBackup === 'string') {
|
||||
currentSeedBackup = await SEA.decrypt(seedBackup, mySecret)
|
||||
callb(currentSeedBackup)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
__onSentRequestToUser,
|
||||
__onUserToIncoming,
|
||||
|
|
@ -1242,5 +1270,6 @@ module.exports = {
|
|||
onChats,
|
||||
onSimplerReceivedRequests,
|
||||
onSimplerSentRequests,
|
||||
onBio
|
||||
onBio,
|
||||
onSeedBackup
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,8 @@ const Events = {
|
|||
ON_HANDSHAKE_ADDRESS: "ON_HANDSHAKE_ADDRESS",
|
||||
ON_RECEIVED_REQUESTS: "ON_RECEIVED_REQUESTS",
|
||||
ON_SENT_REQUESTS: "ON_SENT_REQUESTS",
|
||||
ON_BIO: "ON_BIO"
|
||||
ON_BIO: "ON_BIO",
|
||||
ON_SEED_BACKUP: "ON_SEED_BACKUP",
|
||||
};
|
||||
|
||||
module.exports = Events;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue