From 4cfd000b9248e9fbab292cb609a36047e1a34ce1 Mon Sep 17 00:00:00 2001 From: boojack Date: Sat, 14 Jan 2023 07:41:17 +0800 Subject: [PATCH] feat: support audio player (#948) --- web/src/components/MemoResource.tsx | 36 ++++++++++++++++++++++++++++ web/src/components/MemoResources.tsx | 24 +++++++------------ web/src/less/memo-resources.less | 16 ------------- 3 files changed, 44 insertions(+), 32 deletions(-) create mode 100644 web/src/components/MemoResource.tsx diff --git a/web/src/components/MemoResource.tsx b/web/src/components/MemoResource.tsx new file mode 100644 index 00000000..e1b29138 --- /dev/null +++ b/web/src/components/MemoResource.tsx @@ -0,0 +1,36 @@ +import Icon from "./Icon"; + +interface Props { + resource: Resource; + className?: string; +} + +const MemoResource: React.FC = (props: Props) => { + const { className, resource } = props; + const resourceUrl = `${window.location.origin}/o/r/${resource.id}/${resource.filename}`; + + const handlePreviewBtnClick = () => { + window.open(resourceUrl); + }; + + return ( + <> +
+ {resource.type.startsWith("audio") ? ( + <> + + + ) : ( + <> + + + {resource.filename} + + + )} +
+ + ); +}; + +export default MemoResource; diff --git a/web/src/components/MemoResources.tsx b/web/src/components/MemoResources.tsx index a614f8b0..77f8e089 100644 --- a/web/src/components/MemoResources.tsx +++ b/web/src/components/MemoResources.tsx @@ -1,7 +1,7 @@ import { absolutifyLink } from "../helpers/utils"; -import Icon from "./Icon"; import SquareDiv from "./common/SquareDiv"; import showPreviewImageDialog from "./PreviewImageDialog"; +import MemoResource from "./MemoResource"; import "../less/memo-resources.less"; interface Props { @@ -24,11 +24,6 @@ const MemoResources: React.FC = (props: Props) => { const availableResourceList = resourceList.filter((resource) => resource.type.startsWith("image") || resource.type.startsWith("video")); const otherResourceList = resourceList.filter((resource) => !availableResourceList.includes(resource)); - const handlePreviewBtnClick = (resource: Resource) => { - const resourceUrl = `${window.location.origin}/o/r/${resource.id}/${resource.filename}`; - window.open(resourceUrl); - }; - const imgUrls = availableResourceList .filter((resource) => resource.type.startsWith("image")) .map((resource) => { @@ -68,16 +63,13 @@ const MemoResources: React.FC = (props: Props) => { )} -
- {otherResourceList.map((resource) => { - return ( -
handlePreviewBtnClick(resource)}> - - {resource.filename} -
- ); - })} -
+ {otherResourceList.length > 0 && ( +
+ {otherResourceList.map((resource) => { + return ; + })} +
+ )} ); }; diff --git a/web/src/less/memo-resources.less b/web/src/less/memo-resources.less index 5453377e..e8e7ee54 100644 --- a/web/src/less/memo-resources.less +++ b/web/src/less/memo-resources.less @@ -17,19 +17,3 @@ } } } - -.other-resource-wrapper { - @apply w-full flex flex-row justify-start flex-wrap; - - > .other-resource-container { - @apply mt-1 mr-1 max-w-full flex flex-row justify-start items-center flex-nowrap bg-gray-100 px-2 py-1 rounded cursor-pointer hover:bg-gray-200; - - > .icon-img { - @apply w-4 h-auto mr-1 text-gray-500; - } - - > .name-text { - @apply text-gray-500 text-sm max-w-xs truncate font-mono; - } - } -}