[Server] Fix #2745

This commit is contained in:
syuilo 2019-01-21 00:32:54 +09:00
parent 3fdaca5f43
commit f1edbc9cad
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 UserList from '../../../../models/user-list';
import define from '../../define';
import { getFriends } from '../../common/get-friends';
export const meta = {
desc: {
@ -101,7 +102,7 @@ export const meta = {
};
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
UserList.findOne({
@ -109,6 +110,10 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
userId: user._id
}),
// フォローを取得
// Fetch following
getFriends(user._id, true, false),
// ミュートしているユーザーを取得
Mute.find({
muterId: user._id
@ -146,9 +151,7 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
}]
}));
const visibleQuery = user == null ? [{
visibility: { $in: [ 'public', 'home' ] }
}] : [{
const visibleQuery = [{
visibility: { $in: ['public', 'home'] }
}, {
// myself (for specified/private)
@ -156,6 +159,9 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
}, {
// to me (for specified)
visibleUserIds: { $in: [user._id] }
}, {
visibility: 'followers',
userId: { $in: followings.map(f => f.id) }
}];
const query = {

View File

@ -1,5 +1,6 @@
import autobind from 'autobind-decorator';
import Channel from '../channel';
import { pack } from '../../../../models/note';
export default class extends Channel {
public readonly chName = 'userList';
@ -11,7 +12,11 @@ export default class extends Channel {
const listId = params.listId as string;
// 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);
});
}