Use body for moving files to folder

Fixes #19
This commit is contained in:
rijkvanzanten
2021-01-20 21:37:46 -05:00
parent b6524b20eb
commit d2705713e1
2 changed files with 62 additions and 6 deletions

View File

@@ -7,7 +7,7 @@ import formatTitle from '@directus/format-title';
import env from '../env';
import axios from 'axios';
import Joi from 'joi';
import { InvalidPayloadException, ForbiddenException } from '../exceptions';
import { InvalidPayloadException, ForbiddenException, FailedValidationException } from '../exceptions';
import url from 'url';
import path from 'path';
import useCollection from '../middleware/use-collection';
@@ -218,6 +218,60 @@ router.get(
respond
);
router.patch(
'/',
asyncHandler(async (req, res, next) => {
const service = new FilesService({
accountability: req.accountability,
schema: req.schema,
});
if (Array.isArray(req.body)) {
const primaryKeys = await service.update(req.body);
try {
const result = await service.readByKey(primaryKeys, req.sanitizedQuery);
res.locals.payload = { data: result || null };
} catch (error) {
if (error instanceof ForbiddenException) {
return next();
}
throw error;
}
return next();
}
const updateSchema = Joi.object({
keys: Joi.array().items(Joi.alternatives(Joi.string(), Joi.number())).required(),
data: Joi.object().required().unknown(),
});
const { error } = updateSchema.validate(req.body);
if (error) {
throw new FailedValidationException(error.details[0]);
}
const primaryKeys = await service.update(req.body.data, req.body.keys);
try {
const result = await service.readByKey(primaryKeys, req.sanitizedQuery);
res.locals.payload = { data: result || null };
} catch (error) {
if (error instanceof ForbiddenException) {
return next();
}
throw error;
}
return next();
}),
respond
);
router.patch(
'/:pk',
multipartHandler,

View File

@@ -221,9 +221,7 @@ export default defineComponent({
const userStore = useUserStore();
const { layout, layoutOptions, layoutQuery, filters, searchQuery, resetPreset } = usePreset(
ref('directus_files')
);
const { layout, layoutOptions, layoutQuery, filters, searchQuery, resetPreset } = usePreset(ref('directus_files'));
const { confirmDelete, deleting, batchDelete, error: deleteError, batchEditActive } = useBatch();
@@ -412,9 +410,13 @@ export default defineComponent({
async function moveToFolder() {
moving.value = true;
try {
await api.patch(`/files/${selection.value}`, {
folder: selectedFolder.value,
await api.patch(`/files`, {
keys: selection.value,
data: {
folder: selectedFolder.value,
},
});
selection.value = [];