Improve error handling of packaging functions
This commit is contained in:
		| @@ -127,6 +127,15 @@ export async function deleteDriveFile(driveFile: string | mongo.ObjectID | IDriv | ||||
| 	}); | ||||
| } | ||||
|  | ||||
| export const packMany = async ( | ||||
| 	files: any[], | ||||
| 	options?: { | ||||
| 		detail: boolean | ||||
| 	} | ||||
| ) => { | ||||
| 	return (await Promise.all(files.map(f => pack(f, options)))).filter(x => x != null); | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Pack a drive file for API response | ||||
|  */ | ||||
| @@ -155,7 +164,11 @@ export const pack = ( | ||||
| 		_file = deepcopy(file); | ||||
| 	} | ||||
|  | ||||
| 	if (!_file) return reject('invalid file arg.'); | ||||
| 	// (データベースの欠損などで)ファイルがデータベース上に見つからなかったとき | ||||
| 	if (_file == null) { | ||||
| 		console.warn(`in packaging driveFile: driveFile not found on database: ${_file}`); | ||||
| 		return null; | ||||
| 	} | ||||
|  | ||||
| 	// rendered target | ||||
| 	let _target: any = {}; | ||||
|   | ||||
| @@ -7,7 +7,7 @@ import { IUser, pack as packUser } from './user'; | ||||
| import { pack as packApp } from './app'; | ||||
| import PollVote, { deletePollVote } from './poll-vote'; | ||||
| import Reaction, { deleteNoteReaction } from './note-reaction'; | ||||
| import { pack as packFile, IDriveFile } from './drive-file'; | ||||
| import { packMany as packFileMany, IDriveFile } from './drive-file'; | ||||
| import NoteWatching, { deleteNoteWatching } from './note-watching'; | ||||
| import NoteReaction from './note-reaction'; | ||||
| import Favorite, { deleteFavorite } from './favorite'; | ||||
| @@ -309,9 +309,7 @@ export const pack = async ( | ||||
| 	} | ||||
|  | ||||
| 	// Populate files | ||||
| 	_note.files = Promise.all((_note.fileIds || []).map((fileId: mongo.ObjectID) => | ||||
| 		packFile(fileId) | ||||
| 	)); | ||||
| 	_note.files = packFileMany(_note.fileIds || []); | ||||
|  | ||||
| 	// 後方互換性のため | ||||
| 	_note.mediaIds = _note.fileIds; | ||||
| @@ -380,6 +378,12 @@ export const pack = async ( | ||||
| 	// resolve promises in _note object | ||||
| 	_note = await rap(_note); | ||||
|  | ||||
| 	// (データベースの欠損などで)ユーザーがデータベース上に見つからなかったとき | ||||
| 	if (_note.user == null) { | ||||
| 		console.warn(`in packaging note: note user not found on database: note(${_note.id})`); | ||||
| 		return null; | ||||
| 	} | ||||
|  | ||||
| 	if (_note.user.isCat && _note.text) { | ||||
| 		_note.text = _note.text.replace(/な/g, 'にゃ').replace(/ナ/g, 'ニャ').replace(/ナ/g, 'ニャ'); | ||||
| 	} | ||||
|   | ||||
| @@ -361,7 +361,7 @@ export const pack = ( | ||||
| 		_user = deepcopy(user); | ||||
| 	} | ||||
|  | ||||
| 	// ユーザーがデータベース上に見つからなかったとき | ||||
| 	// (データベースの欠損などで)ユーザーがデータベース上に見つからなかったとき | ||||
| 	if (_user == null) { | ||||
| 		console.warn(`user not found on database: ${user}`); | ||||
| 		return null; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 syuilo
					syuilo