[Server] Fix #2745

This commit is contained in:
syuilo 2019-01-21 00:32:54 +09:00
parent e559417cab
commit 977a4373c5
No known key found for this signature in database
GPG key ID: BDC4C49D06AB9D69
3 changed files with 19 additions and 7 deletions

View file

@ -14,6 +14,7 @@ unreleased
* ハッシュタグ判定の強化 * ハッシュタグ判定の強化
* ストーク機能の廃止 * ストーク機能の廃止
* ソーシャルタイムラインにフォロワー限定投稿が含まれていない問題を修正 * ソーシャルタイムラインにフォロワー限定投稿が含まれていない問題を修正
* リストタイムラインでフォロワー限定投稿が含まれていない問題を修正
* ストリームで投稿が流れてきたとき、返信先が「この投稿は非公開です」となる問題を修正 * ストリームで投稿が流れてきたとき、返信先が「この投稿は非公開です」となる問題を修正
* 関係のない返信がタイムラインに流れる問題を修正 * 関係のない返信がタイムラインに流れる問題を修正
* 常にメディアを閲覧注意として投稿するオプションが機能していなかった問題を修正 * 常にメディアを閲覧注意として投稿するオプションが機能していなかった問題を修正

View file

@ -4,6 +4,7 @@ import Mute from '../../../../models/mute';
import { packMany } from '../../../../models/note'; import { packMany } from '../../../../models/note';
import UserList from '../../../../models/user-list'; import UserList from '../../../../models/user-list';
import define from '../../define'; import define from '../../define';
import { getFriends } from '../../common/get-friends';
export const meta = { export const meta = {
desc: { desc: {
@ -101,7 +102,7 @@ export const meta = {
}; };
export default define(meta, (ps, user) => new Promise(async (res, rej) => { export default define(meta, (ps, user) => new Promise(async (res, rej) => {
const [list, mutedUserIds] = await Promise.all([ const [list, followings, mutedUserIds] = await Promise.all([
// リストを取得 // リストを取得
// Fetch the list // Fetch the list
UserList.findOne({ UserList.findOne({
@ -109,6 +110,10 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
userId: user._id userId: user._id
}), }),
// フォローを取得
// Fetch following
getFriends(user._id, true, false),
// ミュートしているユーザーを取得 // ミュートしているユーザーを取得
Mute.find({ Mute.find({
muterId: user._id muterId: user._id
@ -146,16 +151,17 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
}] }]
})); }));
const visibleQuery = user == null ? [{ const visibleQuery = [{
visibility: { $in: [ 'public', 'home' ] } visibility: { $in: ['public', 'home'] }
}] : [{
visibility: { $in: [ 'public', 'home' ] }
}, { }, {
// myself (for specified/private) // myself (for specified/private)
userId: user._id userId: user._id
}, { }, {
// to me (for specified) // to me (for specified)
visibleUserIds: { $in: [ user._id ] } visibleUserIds: { $in: [user._id] }
}, {
visibility: 'followers',
userId: { $in: followings.map(f => f.id) }
}]; }];
const query = { const query = {

View file

@ -1,5 +1,6 @@
import autobind from 'autobind-decorator'; import autobind from 'autobind-decorator';
import Channel from '../channel'; import Channel from '../channel';
import { pack } from '../../../../models/note';
export default class extends Channel { export default class extends Channel {
public readonly chName = 'userList'; public readonly chName = 'userList';
@ -11,7 +12,11 @@ export default class extends Channel {
const listId = params.listId as string; const listId = params.listId as string;
// Subscribe stream // Subscribe stream
this.subscriber.on(`userListStream:${listId}`, data => { this.subscriber.on(`userListStream:${listId}`, async data => {
// 再パック
if (data.type == 'note') data.body = await pack(data.body.id, this.user, {
detail: true
});
this.send(data); this.send(data);
}); });
} }