summaryrefslogtreecommitdiff
path: root/src/remote/activitypub/kernel/announce/note.ts
diff options
context:
space:
mode:
authorMeiMei <30769358+mei23@users.noreply.github.com>2020-01-30 18:58:13 +0900
committerGitHub <noreply@github.com>2020-01-30 18:58:13 +0900
commit711aa564c1cf219f860e1e96ab4f7efb5e3d140e (patch)
tree6d758ece97a6428a8891b8188a0dee8f09f2dd3b /src/remote/activitypub/kernel/announce/note.ts
parentMake timeline widget flexible (#5788) (diff)
downloadmisskey-711aa564c1cf219f860e1e96ab4f7efb5e3d140e.tar.gz
misskey-711aa564c1cf219f860e1e96ab4f7efb5e3d140e.tar.bz2
misskey-711aa564c1cf219f860e1e96ab4f7efb5e3d140e.zip
AP audience (visibility) パースの修正 (#5783)
* Refactor audience * audienceのないAP Object 対応 * fix * Update src/remote/activitypub/audience.ts Co-Authored-By: Acid Chicken (硫酸鶏) <root@acid-chicken.com> * Update src/remote/activitypub/audience.ts Co-Authored-By: Acid Chicken (硫酸鶏) <root@acid-chicken.com> Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com> Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
Diffstat (limited to 'src/remote/activitypub/kernel/announce/note.ts')
-rw-r--r--src/remote/activitypub/kernel/announce/note.ts38
1 files changed, 6 insertions, 32 deletions
diff --git a/src/remote/activitypub/kernel/announce/note.ts b/src/remote/activitypub/kernel/announce/note.ts
index f22ed77d45..765180742a 100644
--- a/src/remote/activitypub/kernel/announce/note.ts
+++ b/src/remote/activitypub/kernel/announce/note.ts
@@ -1,13 +1,13 @@
import Resolver from '../../resolver';
import post from '../../../../services/note/create';
-import { IRemoteUser, User } from '../../../../models/entities/user';
-import { IAnnounce, getApId, getApIds } from '../../type';
+import { IRemoteUser } from '../../../../models/entities/user';
+import { IAnnounce, getApId } from '../../type';
import { fetchNote, resolveNote } from '../../models/note';
-import { resolvePerson } from '../../models/person';
import { apLogger } from '../../logger';
import { extractDbHost } from '../../../../misc/convert-host';
import { fetchMeta } from '../../../../misc/fetch-meta';
import { getApLock } from '../../../../misc/app-lock';
+import { parseAudience } from '../../audience';
const logger = apLogger;
@@ -51,42 +51,16 @@ export default async function(resolver: Resolver, actor: IRemoteUser, activity:
logger.info(`Creating the (Re)Note: ${uri}`);
- //#region Visibility
- const to = getApIds(activity.to);
- const cc = getApIds(activity.cc);
-
- const visibility = getVisibility(to, cc, actor);
-
- let visibleUsers: User[] = [];
- if (visibility == 'specified') {
- visibleUsers = await Promise.all(to.map(uri => resolvePerson(uri)));
- }
- //#endergion
+ const activityAudience = await parseAudience(actor, activity.to, activity.cc);
await post(actor, {
createdAt: activity.published ? new Date(activity.published) : null,
renote,
- visibility,
- visibleUsers,
+ visibility: activityAudience.visibility,
+ visibleUsers: activityAudience.visibleUsers,
uri
});
} finally {
unlock();
}
}
-
-type visibility = 'public' | 'home' | 'followers' | 'specified';
-
-function getVisibility(to: string[], cc: string[], actor: IRemoteUser): visibility {
- const PUBLIC = 'https://www.w3.org/ns/activitystreams#Public';
-
- 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';
- }
-}