From 84e439316ba2fd93d9526d9caa8bee4ba34fcea7 Mon Sep 17 00:00:00 2001 From: Daniel Lugo Date: Fri, 17 Jul 2020 18:39:50 -0400 Subject: [PATCH 1/2] handle undefined --- services/gunDB/contact-api/getters/user.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/services/gunDB/contact-api/getters/user.js b/services/gunDB/contact-api/getters/user.js index 8f1d9cf2..fb8054e1 100644 --- a/services/gunDB/contact-api/getters/user.js +++ b/services/gunDB/contact-api/getters/user.js @@ -49,14 +49,14 @@ const getAnUser = async publicKey => { /** @type {Common.SchemaTypes.User} */ const u = { - avatar: oldProfile.avatar, + avatar: oldProfile.avatar || null, // @ts-ignore - bio, - displayName: oldProfile.displayName, + bio: bio || null, + displayName: oldProfile.displayName || null, // @ts-ignore - lastSeenApp, + lastSeenApp: lastSeenApp || 0, // @ts-ignore - lastSeenNode, + lastSeenNode: lastSeenNode || 0, // @ts-ignore publicKey } From 1aace2600d78ca25d5c322136be237c9fa863002 Mon Sep 17 00:00:00 2001 From: Daniel Lugo Date: Fri, 17 Jul 2020 18:40:36 -0400 Subject: [PATCH 2/2] own user profile endpoint --- src/routes.js | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/routes.js b/src/routes.js index 032cf5c3..22e163e7 100644 --- a/src/routes.js +++ b/src/routes.js @@ -2006,6 +2006,54 @@ module.exports = async ( ap.get(`/api/gun/feed`, apiGunFeedGet) + /** + * @type {RequestHandler<{}>} + */ + const apiGunMeGet = async (_, res) => { + try { + return res.status(200).json(await GunGetters.getMyUser()) + } catch (err) { + logger.error(err) + return res.status(500).json({ + errorMessage: err.message + }) + } + } + + + /** + * @type {RequestHandler<{}>} + */ + const apiGunMePut = async (req, res) => { + try { + const { avatar, bio , displayName} = /** @type {Partial>} */ (req.body) + + if (avatar) { + await GunActions.setAvatar(avatar, require('../services/gunDB/Mediator').getUser()) + } + + if (bio) { + await GunActions.setBio(bio, require('../services/gunDB/Mediator').getUser()) + } + + if (displayName) { + await GunActions.setDisplayName(displayName, require('../services/gunDB/Mediator').getUser()) + } + + return res.status(200).json({ + ok: true + }) + } catch (err) { + logger.error(err) + return res.status(500).json({ + errorMessage: err.message + }) + } + } + + ap.get(`/api/gun/me`, apiGunMeGet) + ap.put(`/api/gun/me`, apiGunMePut) + /** * Return app so that it can be used by express. */