This commit is contained in:
		| @@ -29,6 +29,14 @@ export const meta = { | ||||
| 			desc: { | ||||
| 				ja: 'フォルダID' | ||||
| 			} | ||||
| 		}), | ||||
|  | ||||
| 		isSensitive: $.bool.optional.note({ | ||||
| 			default: false, | ||||
| 			desc: { | ||||
| 				ja: 'このメディアが「閲覧注意」(NSFW)かどうか', | ||||
| 				en: 'Whether this media is NSFW' | ||||
| 			} | ||||
| 		}) | ||||
| 	} | ||||
| }; | ||||
| @@ -68,7 +76,7 @@ export default async (file: any, params: any, user: ILocalUser): Promise<any> => | ||||
|  | ||||
| 	try { | ||||
| 		// Create file | ||||
| 		const driveFile = await create(user, file.path, name, null, ps.folderId); | ||||
| 		const driveFile = await create(user, file.path, name, null, ps.folderId, false, false, null, null, ps.isSensitive); | ||||
|  | ||||
| 		cleanup(); | ||||
|  | ||||
|   | ||||
| @@ -3,6 +3,7 @@ import DriveFolder from '../../../../../models/drive-folder'; | ||||
| import DriveFile, { validateFileName, pack } from '../../../../../models/drive-file'; | ||||
| import { publishDriveStream } from '../../../../../stream'; | ||||
| import { ILocalUser } from '../../../../../models/user'; | ||||
| import getParams from '../../../get-params'; | ||||
|  | ||||
| export const meta = { | ||||
| 	desc: { | ||||
| @@ -12,18 +13,48 @@ export const meta = { | ||||
|  | ||||
| 	requireCredential: true, | ||||
|  | ||||
| 	kind: 'drive-write' | ||||
| 	kind: 'drive-write', | ||||
|  | ||||
| 	params: { | ||||
| 		fileId: $.type(ID).note({ | ||||
| 			desc: { | ||||
| 				ja: '対象のファイルID' | ||||
| 			} | ||||
| 		}), | ||||
|  | ||||
| 		folderId: $.type(ID).optional.nullable.note({ | ||||
| 			default: undefined, | ||||
| 			desc: { | ||||
| 				ja: 'フォルダID' | ||||
| 			} | ||||
| 		}), | ||||
|  | ||||
| 		name: $.str.optional.pipe(validateFileName).note({ | ||||
| 			default: undefined, | ||||
| 			desc: { | ||||
| 				ja: 'ファイル名', | ||||
| 				en: 'Name of the file' | ||||
| 			} | ||||
| 		}), | ||||
|  | ||||
| 		isSensitive: $.bool.optional.note({ | ||||
| 			default: undefined, | ||||
| 			desc: { | ||||
| 				ja: 'このメディアが「閲覧注意」(NSFW)かどうか', | ||||
| 				en: 'Whether this media is NSFW' | ||||
| 			} | ||||
| 		}) | ||||
| 	} | ||||
| }; | ||||
|  | ||||
| export default (params: any, user: ILocalUser) => new Promise(async (res, rej) => { | ||||
| 	// Get 'fileId' parameter | ||||
| 	const [fileId, fileIdErr] = $.type(ID).get(params.fileId); | ||||
| 	if (fileIdErr) return rej('invalid fileId param'); | ||||
| 	const [ps, psErr] = getParams(meta, params); | ||||
| 	if (psErr) return rej(psErr); | ||||
|  | ||||
| 	// Fetch file | ||||
| 	const file = await DriveFile | ||||
| 		.findOne({ | ||||
| 			_id: fileId, | ||||
| 			_id: ps.fileId, | ||||
| 			'metadata.userId': user._id | ||||
| 		}); | ||||
|  | ||||
| @@ -31,23 +62,18 @@ export default (params: any, user: ILocalUser) => new Promise(async (res, rej) = | ||||
| 		return rej('file-not-found'); | ||||
| 	} | ||||
|  | ||||
| 	// Get 'name' parameter | ||||
| 	const [name, nameErr] = $.str.optional.pipe(validateFileName).get(params.name); | ||||
| 	if (nameErr) return rej('invalid name param'); | ||||
| 	if (name) file.filename = name; | ||||
| 	if (ps.name) file.filename = ps.name; | ||||
|  | ||||
| 	// Get 'folderId' parameter | ||||
| 	const [folderId, folderIdErr] = $.type(ID).optional.nullable.get(params.folderId); | ||||
| 	if (folderIdErr) return rej('invalid folderId param'); | ||||
| 	if (ps.isSensitive) file.metadata.isSensitive = ps.isSensitive; | ||||
|  | ||||
| 	if (folderId !== undefined) { | ||||
| 		if (folderId === null) { | ||||
| 	if (ps.folderId !== undefined) { | ||||
| 		if (ps.folderId === null) { | ||||
| 			file.metadata.folderId = null; | ||||
| 		} else { | ||||
| 			// Fetch folder | ||||
| 			const folder = await DriveFolder | ||||
| 				.findOne({ | ||||
| 					_id: folderId, | ||||
| 					_id: ps.folderId, | ||||
| 					userId: user._id | ||||
| 				}); | ||||
|  | ||||
| @@ -62,7 +88,8 @@ export default (params: any, user: ILocalUser) => new Promise(async (res, rej) = | ||||
| 	await DriveFile.update(file._id, { | ||||
| 		$set: { | ||||
| 			filename: file.filename, | ||||
| 			'metadata.folderId': file.metadata.folderId | ||||
| 			'metadata.folderId': file.metadata.folderId, | ||||
| 			'metadata.isSensitive': file.metadata.isSensitive | ||||
| 		} | ||||
| 	}); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 syuilo
					syuilo