mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-03 12:36:02 +01:00
refactor: move profile mocking logic to discrete method in main activitypub lib
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user