chore: reorganize controllers for clarity

This commit is contained in:
Julian Lam
2023-06-21 17:16:37 -04:00
parent a10df9873b
commit 2e89900886
3 changed files with 36 additions and 29 deletions

View File

@@ -10,16 +10,16 @@ const categories = require('../../categories');
const plugins = require('../../plugins'); const plugins = require('../../plugins');
const privileges = require('../../privileges'); const privileges = require('../../privileges');
const accountHelpers = require('./helpers'); const accountHelpers = require('./helpers');
const { getActor } = require('../../activitypub');
const helpers = require('../helpers'); const helpers = require('../helpers');
const slugify = require('../../slugify');
const utils = require('../../utils'); const utils = require('../../utils');
const activitypubController = require('../activitypub');
const profileController = module.exports; const profileController = module.exports;
profileController.get = async function (req, res, next) { profileController.get = async function (req, res, next) {
if (res.locals.uid === -2) { if (res.locals.uid === -2) {
return profileController.getFederated(req, res, next); return activitypubController.profiles.get(req, res, next);
} }
const lowercaseSlug = req.params.userslug.toLowerCase(); const lowercaseSlug = req.params.userslug.toLowerCase();
@@ -64,31 +64,6 @@ profileController.get = async function (req, res, next) {
res.render('account/profile', userData); 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) { async function incrementProfileViews(req, userData) {
if (req.uid >= 1) { if (req.uid >= 1) {
req.session.uids_viewed = req.session.uids_viewed || {}; req.session.uids_viewed = req.session.uids_viewed || {};

View File

@@ -3,10 +3,12 @@
const nconf = require('nconf'); const nconf = require('nconf');
const user = require('../user'); const user = require('../user');
const activitypub = require('../activitypub'); const activitypub = require('../../activitypub');
const Controller = module.exports; const Controller = module.exports;
Controller.profiles = require('./profiles');
Controller.getActor = async (req, res) => { Controller.getActor = async (req, res) => {
// todo: view:users priv gate // todo: view:users priv gate
const { userslug } = req.params; const { userslug } = req.params;

View File

@@ -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);
};