From 0bf54b3ff6899f4eb5e2bb42c6466094c8f0b8c4 Mon Sep 17 00:00:00 2001 From: MeiMei <30769358+mei23@users.noreply.github.com> Date: Sat, 17 Nov 2018 03:25:48 +0900 Subject: Renote visibility (#3290) --- src/remote/activitypub/kernel/announce/note.ts | 33 ++++++++++++++++++-------- 1 file changed, 23 insertions(+), 10 deletions(-) (limited to 'src/remote/activitypub/kernel') diff --git a/src/remote/activitypub/kernel/announce/note.ts b/src/remote/activitypub/kernel/announce/note.ts index 60f2b9baa0..19ea6306e3 100644 --- a/src/remote/activitypub/kernel/announce/note.ts +++ b/src/remote/activitypub/kernel/announce/note.ts @@ -35,17 +35,11 @@ export default async function(resolver: Resolver, actor: IRemoteUser, activity: log(`Creating the (Re)Note: ${uri}`); //#region Visibility - let visibility = 'public'; + const visibility = getVisibility(activity.to, activity.cc, actor); + let visibleUsers: IUser[] = []; - if (!note.to.includes('https://www.w3.org/ns/activitystreams#Public')) { - if (note.cc.includes('https://www.w3.org/ns/activitystreams#Public')) { - visibility = 'home'; - } else if (note.to.includes(`${actor.uri}/followers`)) { // TODO: person.followerと照合するべき? - visibility = 'followers'; - } else { - visibility = 'specified'; - visibleUsers = await Promise.all(note.to.map(uri => resolvePerson(uri))); - } + if (visibility == 'specified') { + visibleUsers = await Promise.all(note.to.map(uri => resolvePerson(uri))); } //#endergion @@ -57,3 +51,22 @@ export default async function(resolver: Resolver, actor: IRemoteUser, activity: uri }); } + +type visibility = 'public' | 'home' | 'followers' | 'specified' | 'private'; + +function getVisibility(to: string[], cc: string[], actor: IRemoteUser): visibility { + const PUBLIC = 'https://www.w3.org/ns/activitystreams#Public'; + + to = to || []; + cc = cc || []; + + if (to.includes(PUBLIC)) { + return 'public'; + } else if (cc.includes(PUBLIC)) { + return 'home'; + } else if (to.includes(`${actor.uri}/followers`)) { + return 'followers'; + } else { + return 'specified'; + } +} -- cgit v1.2.3-freya