Show user fields (#3590)

This commit is contained in:
MeiMei
2018-12-11 20:18:12 +09:00
committed by syuilo
parent 1d1a373ca8
commit 638d81b66e
7 changed files with 132 additions and 1 deletions

View File

@ -17,6 +17,7 @@ import registerInstance from '../../../services/register-instance';
import Instance from '../../../models/instance';
import getDriveFileUrl from '../../../misc/get-drive-file-url';
import { IEmoji } from '../../../models/emoji';
import { ITag } from './tag';
const log = debug('misskey:activitypub');
@ -135,6 +136,10 @@ export async function createPerson(uri: string, resolver?: Resolver): Promise<IU
const host = toUnicode(new URL(object.id).hostname.toLowerCase());
const fields = await extractFields(person.attachment).catch(e => {
console.log(`cat not extract fields: ${e}`);
});
const isBot = object.type == 'Service';
// Create user
@ -164,6 +169,7 @@ export async function createPerson(uri: string, resolver?: Resolver): Promise<IU
endpoints: person.endpoints,
uri: person.id,
url: person.url,
fields,
isBot: isBot,
isCat: (person as any).isCat === true
}) as IRemoteUser;
@ -325,6 +331,10 @@ export async function updatePerson(uri: string, resolver?: Resolver, hint?: obje
const emojiNames = emojis.map(emoji => emoji.name);
const fields = await extractFields(person.attachment).catch(e => {
console.log(`cat not extract fields: ${e}`);
});
// Update user
await User.update({ _id: exist._id }, {
$set: {
@ -346,6 +356,7 @@ export async function updatePerson(uri: string, resolver?: Resolver, hint?: obje
name: person.name,
url: person.url,
endpoints: person.endpoints,
fields,
isBot: object.type == 'Service',
isCat: (person as any).isCat === true,
isLocked: person.manuallyApprovesFollowers,
@ -382,6 +393,18 @@ export async function resolvePerson(uri: string, verifier?: string, resolver?: R
return await createPerson(uri, resolver);
}
export async function extractFields(attachments: ITag[]) {
if (!attachments) return [];
return attachments.filter(a => a.type === 'PropertyValue' && a.name && a.value)
.map(a => {
return {
name: a.name,
value: htmlToMFM(a.value)
};
});
}
export async function updateFeatured(userId: mongo.ObjectID) {
const user = await User.findOne({ _id: userId });
if (!isRemoteUser(user)) return;

View File

@ -7,6 +7,7 @@ export type ITag = {
id: string;
type: string;
name?: string;
value?: string;
updated?: Date;
icon?: IIcon;
};