From 2e8990088699ae248540f280fa8968793a5bd75e Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 21 Jun 2023 17:16:37 -0400 Subject: [PATCH] chore: reorganize controllers for clarity --- src/controllers/accounts/profile.js | 31 ++----------------- .../{activitypub.js => activitypub/index.js} | 4 ++- src/controllers/activitypub/profiles.js | 30 ++++++++++++++++++ 3 files changed, 36 insertions(+), 29 deletions(-) rename src/controllers/{activitypub.js => activitypub/index.js} (96%) create mode 100644 src/controllers/activitypub/profiles.js diff --git a/src/controllers/accounts/profile.js b/src/controllers/accounts/profile.js index 7932ad78fa..ecad0d9b9c 100644 --- a/src/controllers/accounts/profile.js +++ b/src/controllers/accounts/profile.js @@ -10,16 +10,16 @@ const categories = require('../../categories'); const plugins = require('../../plugins'); const privileges = require('../../privileges'); const accountHelpers = require('./helpers'); -const { getActor } = require('../../activitypub'); const helpers = require('../helpers'); -const slugify = require('../../slugify'); const utils = require('../../utils'); +const activitypubController = require('../activitypub'); + const profileController = module.exports; profileController.get = async function (req, res, next) { if (res.locals.uid === -2) { - return profileController.getFederated(req, res, next); + return activitypubController.profiles.get(req, res, next); } const lowercaseSlug = req.params.userslug.toLowerCase(); @@ -64,31 +64,6 @@ profileController.get = async function (req, res, next) { res.render('account/profile', userData); }; -profileController.getFederated = async function (req, res, next) { - const { userslug: uid } = req.params; - const actor = await getActor(uid); - if (!actor) { - return next(); - } - - const { preferredUsername, published, icon, image, name, summary, hostname } = actor; - const payload = { - uid, - username: `${preferredUsername}@${hostname}`, - userslug: `${preferredUsername}@${hostname}`, - fullname: name, - joindate: new Date(published).getTime(), - picture: typeof icon === 'string' ? icon : icon.url, - uploadedpicture: typeof icon === 'string' ? icon : icon.url, - 'cover:url': typeof image === 'string' ? image : image.url, - 'cover:position': '50% 50%', - aboutme: summary, - aboutmeParsed: summary, - }; - - res.render('account/profile', payload); -}; - async function incrementProfileViews(req, userData) { if (req.uid >= 1) { req.session.uids_viewed = req.session.uids_viewed || {}; diff --git a/src/controllers/activitypub.js b/src/controllers/activitypub/index.js similarity index 96% rename from src/controllers/activitypub.js rename to src/controllers/activitypub/index.js index 460d227208..21e4264499 100644 --- a/src/controllers/activitypub.js +++ b/src/controllers/activitypub/index.js @@ -3,10 +3,12 @@ const nconf = require('nconf'); const user = require('../user'); -const activitypub = require('../activitypub'); +const activitypub = require('../../activitypub'); const Controller = module.exports; +Controller.profiles = require('./profiles'); + Controller.getActor = async (req, res) => { // todo: view:users priv gate const { userslug } = req.params; diff --git a/src/controllers/activitypub/profiles.js b/src/controllers/activitypub/profiles.js new file mode 100644 index 0000000000..5f0e484645 --- /dev/null +++ b/src/controllers/activitypub/profiles.js @@ -0,0 +1,30 @@ +'use strict'; + +const { getActor } = require('../../activitypub'); + +const controller = module.exports; + +controller.get = async function (req, res, next) { + const { userslug: uid } = req.params; + const actor = await getActor(uid); + if (!actor) { + return next(); + } + + const { preferredUsername, published, icon, image, name, summary, hostname } = actor; + const payload = { + uid, + username: `${preferredUsername}@${hostname}`, + userslug: `${preferredUsername}@${hostname}`, + fullname: name, + joindate: new Date(published).getTime(), + picture: typeof icon === 'string' ? icon : icon.url, + uploadedpicture: typeof icon === 'string' ? icon : icon.url, + 'cover:url': typeof image === 'string' ? image : image.url, + 'cover:position': '50% 50%', + aboutme: summary, + aboutmeParsed: summary, + }; + + res.render('account/profile', payload); +};