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