summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-04-05 23:19:47 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-04-05 23:19:47 +0900
commit30bd467b7143502b5aacc86de7e724ac4aa9c6c3 (patch)
tree99c48717e29824c523dfa4100238888a8f261178 /src
parentwip (diff)
downloadmisskey-30bd467b7143502b5aacc86de7e724ac4aa9c6c3.tar.gz
misskey-30bd467b7143502b5aacc86de7e724ac4aa9c6c3.tar.bz2
misskey-30bd467b7143502b5aacc86de7e724ac4aa9c6c3.zip
wip
Diffstat (limited to 'src')
-rw-r--r--src/api/post/create.ts40
-rw-r--r--src/remote/activitypub/act/create.ts6
2 files changed, 24 insertions, 22 deletions
diff --git a/src/api/post/create.ts b/src/api/post/create.ts
index dbeb87ae86..7b7fceda2a 100644
--- a/src/api/post/create.ts
+++ b/src/api/post/create.ts
@@ -31,7 +31,7 @@ export default async (user: IUser, content: {
visibility?: string;
uri?: string;
app?: IApp;
-}) => new Promise<IPost>(async (res, rej) => {
+}, silent = false) => new Promise<IPost>(async (res, rej) => {
if (content.createdAt == null) content.createdAt = new Date();
if (content.visibility == null) content.visibility = 'public';
@@ -120,26 +120,28 @@ export default async (user: IUser, content: {
_id: false
});
- const note = await renderNote(user, post);
- const content = renderCreate(note);
- content['@context'] = context;
+ if (!silent) {
+ const note = await renderNote(user, post);
+ const content = renderCreate(note);
+ content['@context'] = context;
- Promise.all(followers.map(({ follower }) => {
- if (isLocalUser(follower)) {
- // Publish event to followers stream
- stream(follower._id, 'post', postObj);
- } else {
- // フォロワーがリモートユーザーかつ投稿者がローカルユーザーなら投稿を配信
- if (isLocalUser(user)) {
- createHttp({
- type: 'deliver',
- user,
- content,
- to: follower.account.inbox
- }).save();
+ Promise.all(followers.map(({ follower }) => {
+ if (isLocalUser(follower)) {
+ // Publish event to followers stream
+ stream(follower._id, 'post', postObj);
+ } else {
+ // フォロワーがリモートユーザーかつ投稿者がローカルユーザーなら投稿を配信
+ if (isLocalUser(user)) {
+ createHttp({
+ type: 'deliver',
+ user,
+ content,
+ to: follower.account.inbox
+ }).save();
+ }
}
- }
- }));
+ }));
+ }
}
// チャンネルへの投稿
diff --git a/src/remote/activitypub/act/create.ts b/src/remote/activitypub/act/create.ts
index 9669348d58..fe58f58f87 100644
--- a/src/remote/activitypub/act/create.ts
+++ b/src/remote/activitypub/act/create.ts
@@ -58,7 +58,7 @@ async function createImage(resolver: Resolver, actor: IRemoteUser, image) {
return await uploadFromUrl(image.url, actor);
}
-async function createNote(resolver: Resolver, actor: IRemoteUser, note) {
+async function createNote(resolver: Resolver, actor: IRemoteUser, note, silent = false) {
if (
('attributedTo' in note && actor.account.uri !== note.attributedTo) ||
typeof note.id !== 'string'
@@ -86,7 +86,7 @@ async function createNote(resolver: Resolver, actor: IRemoteUser, note) {
const inReplyTo = await resolver.resolve(note.inReplyTo) as any;
const actor = await resolvePerson(inReplyTo.attributedTo);
if (isRemoteUser(actor)) {
- reply = await createNote(resolver, actor, inReplyTo);
+ reply = await createNote(resolver, actor, inReplyTo, true);
}
}
}
@@ -102,5 +102,5 @@ async function createNote(resolver: Resolver, actor: IRemoteUser, note) {
viaMobile: false,
geo: undefined,
uri: note.id
- });
+ }, silent);
}