pl-fe: drive: allow creating folders
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
This commit is contained in:
@ -5906,7 +5906,7 @@ class PlApiClient {
|
||||
|
||||
const response = await this.request('/api/iceshrimp/drive/folder', {
|
||||
method: 'POST',
|
||||
body: { name, parentId },
|
||||
body: { name, parentId: parentId || null },
|
||||
});
|
||||
|
||||
return v.parse(driveFolderSchema, response.json);
|
||||
|
||||
@ -738,12 +738,18 @@
|
||||
"drive.file.upload.error": "Failed to upload file.",
|
||||
"drive.file.upload.success": "File uploaded successfully.",
|
||||
"drive.file.view": "View file",
|
||||
"drive.folder.create": "Create new folder",
|
||||
"drive.folder.create.confirm": "Create",
|
||||
"drive.folder.delete": "Delete folder",
|
||||
"drive.folder.delete.confirm": "Delete",
|
||||
"drive.folder.delete.error": "Failed to delete folder.",
|
||||
"drive.folder.delete.success": "Folder deleted successfully.",
|
||||
"drive.folder.delete.text": "Are you sure you want to delete this folder? This action cannot be undone.",
|
||||
"drive.folder.dropdown": "Folder menu",
|
||||
"drive.folder.new": "New folder",
|
||||
"drive.folder.new.error": "Failed to create folder.",
|
||||
"drive.folder.new.placeholder": "Folder name",
|
||||
"drive.folder.new.success": "Folder created successfully.",
|
||||
"drive.folder.rename": "Rename folder",
|
||||
"drive.folder.rename.confirm": "Rename",
|
||||
"drive.folder.rename.error": "Failed to rename folder.",
|
||||
|
||||
@ -12,7 +12,7 @@ import IconButton from 'pl-fe/components/ui/icon-button';
|
||||
import { MIMETYPE_ICONS } from 'pl-fe/components/upload';
|
||||
import ColumnLoading from 'pl-fe/features/ui/components/column-loading';
|
||||
import { useCreateDriveFileMutation, useDeleteDriveFileMutation, useUpdateDriveFileMutation } from 'pl-fe/queries/drive/use-drive-file';
|
||||
import { useDeleteDriveFolderMutation, useDriveFolderQuery, useUpdateDriveFolderMutation } from 'pl-fe/queries/drive/use-drive-folder';
|
||||
import { useCreateDriveFolderMutation, useDeleteDriveFolderMutation, useDriveFolderQuery, useUpdateDriveFolderMutation } from 'pl-fe/queries/drive/use-drive-folder';
|
||||
import { useModalsActions } from 'pl-fe/stores/modals';
|
||||
import toast from 'pl-fe/toast';
|
||||
import { download } from 'pl-fe/utils/download';
|
||||
@ -54,6 +54,10 @@ const messages = defineMessages({
|
||||
fileUpload: { id: 'drive.file.upload', defaultMessage: 'Upload file' },
|
||||
fileUploadSuccess: { id: 'drive.file.upload.success', defaultMessage: 'File uploaded successfully.' },
|
||||
fileUploadError: { id: 'drive.file.upload.error', defaultMessage: 'Failed to upload file.' },
|
||||
newFolder: { id: 'drive.folder.new', defaultMessage: 'New folder' },
|
||||
newFolderPlaceholder: { id: 'drive.folder.new.placeholder', defaultMessage: 'Folder name' },
|
||||
newFolderSuccess: { id: 'drive.folder.new.success', defaultMessage: 'Folder created successfully.' },
|
||||
newFolderError: { id: 'drive.folder.new.error', defaultMessage: 'Failed to create folder.' },
|
||||
});
|
||||
|
||||
interface IFile {
|
||||
@ -348,8 +352,11 @@ interface IDrivePage {
|
||||
const DrivePage: React.FC<IDrivePage> = ({ params }) => {
|
||||
const intl = useIntl();
|
||||
|
||||
const { openModal } = useModalsActions();
|
||||
|
||||
const { data, isPending } = useDriveFolderQuery(params?.folderId);
|
||||
const { mutate: uploadFile } = useCreateDriveFileMutation(params?.folderId);
|
||||
const { mutate: createFolder } = useCreateDriveFolderMutation();
|
||||
|
||||
const items: Menu = [
|
||||
{
|
||||
@ -362,6 +369,24 @@ const DrivePage: React.FC<IDrivePage> = ({ params }) => {
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
text: intl.formatMessage(messages.newFolder),
|
||||
icon: require('@phosphor-icons/core/regular/folder-plus.svg'),
|
||||
action: () => {
|
||||
openModal('TEXT_FIELD', {
|
||||
heading: <FormattedMessage id='drive.folder.create' defaultMessage='Create new folder' />,
|
||||
placeholder: intl.formatMessage(messages.newFolderPlaceholder),
|
||||
confirm: <FormattedMessage id='drive.folder.create.confirm' defaultMessage='Create' />,
|
||||
singleLine: true,
|
||||
onConfirm: (value: string) => {
|
||||
createFolder({ name: value, parentId: params?.folderId }, {
|
||||
onSuccess: () => toast.success(messages.newFolderSuccess),
|
||||
onError: () => toast.error(messages.newFolderError),
|
||||
});
|
||||
},
|
||||
});
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
if (isPending) {
|
||||
|
||||
Reference in New Issue
Block a user