Merge branch 'develop' into tslint-to-eslint
This commit is contained in:
		
						commit
						ce751db240
					
				
					 4 changed files with 62 additions and 1 deletions
				
			
		|  | @ -7,6 +7,12 @@ | |||
| 
 | ||||
| --> | ||||
| 
 | ||||
| ## 12.90.1 (2021/09/05) | ||||
| 
 | ||||
| ### Bugfixes | ||||
| - Dockerfileを修正 | ||||
| - ノート翻訳時に公開範囲が考慮されていない問題を修正 | ||||
| 
 | ||||
| ## 12.90.0 (2021/09/04) | ||||
| 
 | ||||
| ### Improvements | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| { | ||||
| 	"name": "misskey", | ||||
| 	"author": "syuilo <syuilotan@yahoo.co.jp>", | ||||
| 	"version": "12.90.0", | ||||
| 	"version": "12.90.1", | ||||
| 	"codename": "indigo", | ||||
| 	"repository": { | ||||
| 		"type": "git", | ||||
|  |  | |||
|  | @ -18,7 +18,57 @@ export class NoteRepository extends Repository<Note> { | |||
| 		return x.trim().length <= 100; | ||||
| 	} | ||||
| 
 | ||||
| 	public async isVisibleForMe(note: Note, meId: User['id'] | null): Promise<boolean> { | ||||
| 		// visibility が specified かつ自分が指定されていなかったら非表示
 | ||||
| 		if (note.visibility === 'specified') { | ||||
| 			if (meId == null) { | ||||
| 				return false; | ||||
| 			} else if (meId === note.userId) { | ||||
| 				return true; | ||||
| 			} else { | ||||
| 				// 指定されているかどうか
 | ||||
| 				const specified = note.visibleUserIds.some((id: any) => meId === id); | ||||
| 
 | ||||
| 				if (specified) { | ||||
| 					return true; | ||||
| 				} else { | ||||
| 					return false; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		// visibility が followers かつ自分が投稿者のフォロワーでなかったら非表示
 | ||||
| 		if (note.visibility === 'followers') { | ||||
| 			if (meId == null) { | ||||
| 				return false; | ||||
| 			} else if (meId === note.userId) { | ||||
| 				return true; | ||||
| 			} else if (note.reply && (meId === note.reply.userId)) { | ||||
| 				// 自分の投稿に対するリプライ
 | ||||
| 				return true; | ||||
| 			} else if (note.mentions && note.mentions.some(id => meId === id)) { | ||||
| 				// 自分へのメンション
 | ||||
| 				return true; | ||||
| 			} else { | ||||
| 				// フォロワーかどうか
 | ||||
| 				const following = await Followings.findOne({ | ||||
| 					followeeId: note.userId, | ||||
| 					followerId: meId | ||||
| 				}); | ||||
| 
 | ||||
| 				if (following == null) { | ||||
| 					return false; | ||||
| 				} else { | ||||
| 					return true; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		return true; | ||||
| 	} | ||||
| 
 | ||||
| 	private async hideNote(packedNote: PackedNote, meId: User['id'] | null) { | ||||
| 		// TODO: isVisibleForMe を使うようにしても良さそう(型違うけど)
 | ||||
| 		let hide = false; | ||||
| 
 | ||||
| 		// visibility が specified かつ自分が指定されていなかったら非表示
 | ||||
|  |  | |||
|  | @ -8,6 +8,7 @@ import config from '@/config/index'; | |||
| import { getAgentByUrl } from '@/misc/fetch'; | ||||
| import { URLSearchParams } from 'url'; | ||||
| import { fetchMeta } from '@/misc/fetch-meta'; | ||||
| import { Notes } from '@/models'; | ||||
| 
 | ||||
| export const meta = { | ||||
| 	tags: ['notes'], | ||||
|  | @ -43,6 +44,10 @@ export default define(meta, async (ps, user) => { | |||
| 		throw e; | ||||
| 	}); | ||||
| 
 | ||||
| 	if (!(await Notes.isVisibleForMe(note, user ? user.id : null))) { | ||||
| 		return 204; // TODO: 良い感じのエラー返す
 | ||||
| 	} | ||||
| 
 | ||||
| 	if (note.text == null) { | ||||
| 		return 204; | ||||
| 	} | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue