refactor: move profile mocking logic to discrete method in main activitypub lib

This commit is contained in:
Julian Lam
2024-01-04 14:04:34 -05:00
parent 759d69e06c
commit 8d4fd9c0f8
2 changed files with 37 additions and 31 deletions

View File

@@ -52,6 +52,41 @@ ActivityPub.getActor = async (input) => {
return actor;
};
ActivityPub.mockProfile = async (callerUid, actor) => {
// Accepts an actor object; the output of getActor()
const uid = actor.id;
const { preferredUsername, published, icon, image, name, summary, hostname } = actor;
const isFollowing = await db.isSortedSetMember(`followingRemote:${callerUid}`, uid);
let picture;
if (icon) {
picture = typeof icon === 'string' ? icon : icon.url;
}
const iconBackgrounds = await user.getIconBackgrounds();
let bgColor = Array.prototype.reduce.call(preferredUsername, (cur, next) => cur + next.charCodeAt(), 0);
bgColor = iconBackgrounds[bgColor % iconBackgrounds.length];
const payload = {
uid,
username: `${preferredUsername}@${hostname}`,
userslug: `${preferredUsername}@${hostname}`,
fullname: name,
joindate: new Date(published).getTime(),
picture,
'icon:text': (preferredUsername[0] || '').toUpperCase(),
'icon:bgColor': bgColor,
uploadedpicture: undefined,
'cover:url': !image || typeof image === 'string' ? image : image.url,
'cover:position': '50% 50%',
aboutme: summary,
aboutmeParsed: summary,
isFollowing,
};
return payload;
};
ActivityPub.resolveInboxes = async ids => await Promise.all(ids.map(async (id) => {
const actor = await ActivityPub.getActor(id);
return actor.inbox;