diff --git a/src/components/FileItem/FileItem.tsx b/src/components/FileItem/FileItem.tsx index 2c5d0fd..65e735e 100644 --- a/src/components/FileItem/FileItem.tsx +++ b/src/components/FileItem/FileItem.tsx @@ -1,6 +1,6 @@ import capitalize from "../../utils/capitalize"; import moment from "moment"; -import React, { memo, useMemo, useRef } from "react"; +import React, { memo, useMemo, useRef, useState } from "react"; import ContextMenu from "../ContextMenu/ContextMenu"; import { useContextMenu } from "../../hooks/contextMenu"; import classNames from "classnames"; @@ -33,9 +33,11 @@ const FileItem: React.FC = memo((props) => { (state) => state.selected.multiSelectMode ); const listView = useAppSelector((state) => state.general.listView); - const thumbnail = `${getBackendURL()}/file-service/thumbnail/${ + const thumbnailURL = `${getBackendURL()}/file-service/thumbnail/${ file.metadata.thumbnailID }`; + const hasThumbnail = file.metadata.hasThumbnail; + const [thumbnailLoaded, setThumbnailLoaded] = useState(false); const dispatch = useAppDispatch(); const lastSelected = useRef(0); const { @@ -200,15 +202,23 @@ const FileItem: React.FC = memo((props) => { className={classNames( "inline-flex items-center w-full bg-white relative", { - "mt-2": !thumbnail, + "mt-2": !thumbnailLoaded, } )} > - {file.metadata.hasThumbnail ? ( -
+ {hasThumbnail && ( +
setThumbnailLoaded(true)} /> {file.metadata.isVideo && (
@@ -216,26 +226,27 @@ const FileItem: React.FC = memo((props) => {
)}
- ) : ( - - - )} - {!thumbnail && ( -
-

{fileExtension}

-
+ {!thumbnailLoaded && ( + <> + + + +
+

{fileExtension}

+
+ )}
{ const multiSelectMode = useAppSelector( (state) => state.selected.multiSelectMode ); - const thumbnail = `${getBackendURL()}/file-service/thumbnail/${ + const thumbnailURL = `${getBackendURL()}/file-service/thumbnail/${ file.metadata.thumbnailID }`; + const hasThumbnail = file.metadata.hasThumbnail; + const [thumbnailLoaded, setThumbnailLoaded] = useState(false); const dispatch = useAppDispatch(); const lastSelected = useRef(0); @@ -123,15 +125,23 @@ const QuickAccessItem = memo((props: QuickAccessItemProps) => { className={classNames( "inline-flex items-center w-full bg-white relative", { - "mt-2": !thumbnail, + "mt-2": !thumbnailLoaded, } )} > - {!!thumbnail ? ( -
+ {hasThumbnail && ( +
setThumbnailLoaded(true)} /> {file.metadata.isVideo && (
@@ -139,26 +149,27 @@ const QuickAccessItem = memo((props: QuickAccessItemProps) => {
)}
- ) : ( - - - )} - {!thumbnail && ( -
-

{fileExtension}

-
+ {!thumbnailLoaded && ( + <> + + + +
+

{fileExtension}

+
+ )}