summaryrefslogtreecommitdiff
path: root/src/remote/activitypub/kernel
diff options
context:
space:
mode:
authorMeiMei <30769358+mei23@users.noreply.github.com>2018-11-17 03:25:48 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2018-11-17 03:25:48 +0900
commit0bf54b3ff6899f4eb5e2bb42c6466094c8f0b8c4 (patch)
tree4f19682385b6371dee4eaa1c9d733877f72ed56c /src/remote/activitypub/kernel
parentHide unused login method (#3285) (diff)
downloadsharkey-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.ts33
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';
+ }
+}