diff options
| author | MeiMei <30769358+mei23@users.noreply.github.com> | 2018-11-17 03:25:48 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2018-11-17 03:25:48 +0900 |
| commit | 0bf54b3ff6899f4eb5e2bb42c6466094c8f0b8c4 (patch) | |
| tree | 4f19682385b6371dee4eaa1c9d733877f72ed56c /src/remote/activitypub/kernel | |
| parent | Hide unused login method (#3285) (diff) | |
| download | sharkey-0bf54b3ff6899f4eb5e2bb42c6466094c8f0b8c4.tar.gz sharkey-0bf54b3ff6899f4eb5e2bb42c6466094c8f0b8c4.tar.bz2 sharkey-0bf54b3ff6899f4eb5e2bb42c6466094c8f0b8c4.zip | |
Renote visibility (#3290)
Diffstat (limited to 'src/remote/activitypub/kernel')
| -rw-r--r-- | src/remote/activitypub/kernel/announce/note.ts | 33 |
1 files changed, 23 insertions, 10 deletions
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'; + } +} |