From cd19cec4f760f0978da6a830b0aebd230817c987 Mon Sep 17 00:00:00 2001 From: Elio Struyf Date: Thu, 21 Apr 2022 09:01:30 +0200 Subject: [PATCH] #308 - Updates to media insertion + title metadata --- src/dashboardWebView/DashboardMessage.ts | 2 +- .../components/Media/DetailsSlideOver.tsx | 86 +++++++++++++------ .../components/Media/Item.tsx | 23 +++-- src/helpers/MediaHelpers.ts | 4 +- src/listeners/dashboard/MediaListener.ts | 2 +- src/models/MediaPaths.ts | 1 + 6 files changed, 83 insertions(+), 35 deletions(-) diff --git a/src/dashboardWebView/DashboardMessage.ts b/src/dashboardWebView/DashboardMessage.ts index 8fb42fbc..1272bd05 100644 --- a/src/dashboardWebView/DashboardMessage.ts +++ b/src/dashboardWebView/DashboardMessage.ts @@ -22,7 +22,7 @@ export enum DashboardMessage { uploadMedia = 'uploadMedia', deleteMedia = 'deleteMedia', revealMedia = 'revealMedia', - insertPreviewImage = 'insertPreviewImage', + insertMedia = 'insertMedia', updateMediaMetadata = 'updateMediaMetadata', createMediaFolder = 'createMediaFolder', insertFile = 'insertFile', diff --git a/src/dashboardWebView/components/Media/DetailsSlideOver.tsx b/src/dashboardWebView/components/Media/DetailsSlideOver.tsx index 19a25d21..a37b2507 100644 --- a/src/dashboardWebView/components/Media/DetailsSlideOver.tsx +++ b/src/dashboardWebView/components/Media/DetailsSlideOver.tsx @@ -3,7 +3,7 @@ import { PencilAltIcon, XIcon } from '@heroicons/react/outline'; import { format } from 'date-fns'; import { basename } from 'path'; import * as React from 'react'; -import { Fragment, useMemo } from 'react'; +import { Fragment, useCallback, useMemo } from 'react'; import { DateHelper } from '../../../helpers/DateHelper'; import { MediaInfo } from '../../../models'; import { Messenger } from '@estruyf/vscode/dist/client'; @@ -27,6 +27,7 @@ export interface IDetailsSlideOverProps { export const DetailsSlideOver: React.FunctionComponent = ({ imgSrc, size, dimensions, media, folder, showForm, onEdit, onEditClose, onDismiss, isImageFile }: React.PropsWithChildren) => { const [ filename, setFilename ] = React.useState(media.filename); const [ caption, setCaption ] = React.useState(media.caption); + const [ title, setTitle ] = React.useState(media.title); const [ alt, setAlt ] = React.useState(media.alt); const selectedFolder = useRecoilValue(SelectedMediaFolderSelector); const page = useRecoilValue(PageSelector); @@ -38,20 +39,22 @@ export const DetailsSlideOver: React.FunctionComponent = const extension = fileInfo?.pop(); const name = fileInfo?.join('.'); - const onSubmitMetadata = () => { + const onSubmitMetadata = useCallback(() => { Messenger.send(DashboardMessage.updateMediaMetadata, { file: media.fsPath, filename, caption, alt, + title, folder: selectedFolder, page }); onEditClose(); - }; + }, [media, filename, caption, alt, title, selectedFolder, page]) React.useEffect(() => { + setTitle(media.title); setAlt(media.alt); setCaption(media.caption); setFilename(media.filename); @@ -133,31 +136,51 @@ export const DetailsSlideOver: React.FunctionComponent = +
-
-