bio
This commit is contained in:
parent
0030b62ba3
commit
865e553319
6 changed files with 123 additions and 4 deletions
|
|
@ -299,6 +299,7 @@ class Mediator {
|
||||||
socket.on(Action.SEND_PAYMENT, this.sendPayment)
|
socket.on(Action.SEND_PAYMENT, this.sendPayment)
|
||||||
socket.on(Action.SET_AVATAR, this.setAvatar)
|
socket.on(Action.SET_AVATAR, this.setAvatar)
|
||||||
socket.on(Action.SET_DISPLAY_NAME, this.setDisplayName)
|
socket.on(Action.SET_DISPLAY_NAME, this.setDisplayName)
|
||||||
|
socket.on(Action.SET_BIO, this.setBio)
|
||||||
|
|
||||||
socket.on(Event.ON_AVATAR, this.onAvatar)
|
socket.on(Event.ON_AVATAR, this.onAvatar)
|
||||||
socket.on(Event.ON_BLACKLIST, this.onBlacklist)
|
socket.on(Event.ON_BLACKLIST, this.onBlacklist)
|
||||||
|
|
@ -307,6 +308,7 @@ class Mediator {
|
||||||
socket.on(Event.ON_HANDSHAKE_ADDRESS, this.onHandshakeAddress)
|
socket.on(Event.ON_HANDSHAKE_ADDRESS, this.onHandshakeAddress)
|
||||||
socket.on(Event.ON_RECEIVED_REQUESTS, this.onReceivedRequests)
|
socket.on(Event.ON_RECEIVED_REQUESTS, this.onReceivedRequests)
|
||||||
socket.on(Event.ON_SENT_REQUESTS, this.onSentRequests)
|
socket.on(Event.ON_SENT_REQUESTS, this.onSentRequests)
|
||||||
|
socket.on(Event.ON_BIO, this.onBio)
|
||||||
|
|
||||||
socket.on(IS_GUN_AUTH, this.isGunAuth)
|
socket.on(IS_GUN_AUTH, this.isGunAuth)
|
||||||
}
|
}
|
||||||
|
|
@ -889,6 +891,58 @@ class Mediator {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Readonly<{ token: string }>} body
|
||||||
|
*/
|
||||||
|
onBio = async body => {
|
||||||
|
try {
|
||||||
|
const { token } = body
|
||||||
|
|
||||||
|
await throwOnInvalidToken(token)
|
||||||
|
|
||||||
|
API.Events.onBio(bio => {
|
||||||
|
this.socket.emit(Event.ON_BIO, {
|
||||||
|
msg: bio,
|
||||||
|
ok: true,
|
||||||
|
origBody: body
|
||||||
|
})
|
||||||
|
}, user)
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err)
|
||||||
|
this.socket.emit(Event.ON_BIO, {
|
||||||
|
ok: false,
|
||||||
|
msg: err.message,
|
||||||
|
origBody: body
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Readonly<{ bio: string|null , token: string }>} body
|
||||||
|
*/
|
||||||
|
setBio = async body => {
|
||||||
|
try {
|
||||||
|
const { bio, token } = body
|
||||||
|
|
||||||
|
await throwOnInvalidToken(token)
|
||||||
|
|
||||||
|
await API.Actions.setBio(bio, user)
|
||||||
|
|
||||||
|
this.socket.emit(Action.SET_BIO, {
|
||||||
|
ok: true,
|
||||||
|
msg: null,
|
||||||
|
origBody: body
|
||||||
|
})
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err)
|
||||||
|
this.socket.emit(Action.SET_BIO, {
|
||||||
|
ok: false,
|
||||||
|
msg: err.message,
|
||||||
|
origBody: body
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,8 @@ const Actions = {
|
||||||
SEND_MESSAGE: "SEND_MESSAGE",
|
SEND_MESSAGE: "SEND_MESSAGE",
|
||||||
SEND_PAYMENT: "SEND_PAYMENT",
|
SEND_PAYMENT: "SEND_PAYMENT",
|
||||||
SET_AVATAR: "SET_AVATAR",
|
SET_AVATAR: "SET_AVATAR",
|
||||||
SET_DISPLAY_NAME: "SET_DISPLAY_NAME"
|
SET_DISPLAY_NAME: "SET_DISPLAY_NAME",
|
||||||
|
SET_BIO: "SET_BIO"
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = Actions;
|
module.exports = Actions;
|
||||||
|
|
|
||||||
|
|
@ -989,6 +989,39 @@ const generateOrderAddress = user =>
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string|null} bio
|
||||||
|
* @param {UserGUNNode} user
|
||||||
|
* @throws {TypeError} Rejects if avatar is not an string or an empty string.
|
||||||
|
* @returns {Promise<void>}
|
||||||
|
*/
|
||||||
|
const setBio = (bio, user) =>
|
||||||
|
new Promise((resolve, reject) => {
|
||||||
|
if (!user.is) {
|
||||||
|
throw new Error(ErrorCode.NOT_AUTH)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof bio === 'string' && bio.length === 0) {
|
||||||
|
throw new TypeError(
|
||||||
|
"'bio' must be an string and have length greater than one or be null"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof bio !== 'string' && bio !== null) {
|
||||||
|
throw new TypeError(
|
||||||
|
"'bio' must be an string and have length greater than one or be null"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
user.get(Key.BIO).put(bio, ack => {
|
||||||
|
if (ack.err) {
|
||||||
|
reject(new Error(ack.err))
|
||||||
|
} else {
|
||||||
|
resolve()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
INITIAL_MSG,
|
INITIAL_MSG,
|
||||||
__createOutgoingFeed,
|
__createOutgoingFeed,
|
||||||
|
|
@ -1003,5 +1036,6 @@ module.exports = {
|
||||||
setAvatar,
|
setAvatar,
|
||||||
setDisplayName,
|
setDisplayName,
|
||||||
sendPayment,
|
sendPayment,
|
||||||
generateOrderAddress
|
generateOrderAddress,
|
||||||
|
setBio
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1204,6 +1204,32 @@ const onSimplerSentRequests = async (cb, gun, user, SEA) => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @type {string|null} */
|
||||||
|
let currentBio = null
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {(bio: string|null) => void} cb
|
||||||
|
* @param {UserGUNNode} user Pass only for testing purposes.
|
||||||
|
* @throws {Error} If user hasn't been auth.
|
||||||
|
* @returns {void}
|
||||||
|
*/
|
||||||
|
const onBio = (cb, user) => {
|
||||||
|
if (!user.is) {
|
||||||
|
throw new Error(ErrorCode.NOT_AUTH)
|
||||||
|
}
|
||||||
|
|
||||||
|
const callb = debounce(cb, DEBOUNCE_WAIT_TIME)
|
||||||
|
// Initial value if avvatar is undefined in gun
|
||||||
|
callb(currentBio)
|
||||||
|
|
||||||
|
user.get(Key.BIO).on(bio => {
|
||||||
|
if (typeof bio === 'string' || bio === null) {
|
||||||
|
currentBio = bio
|
||||||
|
callb(bio)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
__onSentRequestToUser,
|
__onSentRequestToUser,
|
||||||
__onUserToIncoming,
|
__onUserToIncoming,
|
||||||
|
|
@ -1215,5 +1241,6 @@ module.exports = {
|
||||||
onOutgoing,
|
onOutgoing,
|
||||||
onChats,
|
onChats,
|
||||||
onSimplerReceivedRequests,
|
onSimplerReceivedRequests,
|
||||||
onSimplerSentRequests
|
onSimplerSentRequests,
|
||||||
|
onBio
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,3 +30,5 @@ exports.CURRENT_ORDER_ADDRESS = 'currentOrderAddress'
|
||||||
exports.ORDER_NODES = 'orderNodes'
|
exports.ORDER_NODES = 'orderNodes'
|
||||||
|
|
||||||
exports.ORDER_TO_RESPONSE = 'orderToResponse'
|
exports.ORDER_TO_RESPONSE = 'orderToResponse'
|
||||||
|
|
||||||
|
exports.BIO = 'bio'
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,8 @@ const Events = {
|
||||||
ON_DISPLAY_NAME: "ON_DISPLAY_NAME",
|
ON_DISPLAY_NAME: "ON_DISPLAY_NAME",
|
||||||
ON_HANDSHAKE_ADDRESS: "ON_HANDSHAKE_ADDRESS",
|
ON_HANDSHAKE_ADDRESS: "ON_HANDSHAKE_ADDRESS",
|
||||||
ON_RECEIVED_REQUESTS: "ON_RECEIVED_REQUESTS",
|
ON_RECEIVED_REQUESTS: "ON_RECEIVED_REQUESTS",
|
||||||
ON_SENT_REQUESTS: "ON_SENT_REQUESTS"
|
ON_SENT_REQUESTS: "ON_SENT_REQUESTS",
|
||||||
|
ON_BIO: "ON_BIO"
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = Events;
|
module.exports = Events;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue