diff --git a/ui/v2.5/src/components/Images/ImageDetails/Image.tsx b/ui/v2.5/src/components/Images/ImageDetails/Image.tsx
index dda47e9d2..b9485767c 100644
--- a/ui/v2.5/src/components/Images/ImageDetails/Image.tsx
+++ b/ui/v2.5/src/components/Images/ImageDetails/Image.tsx
@@ -25,6 +25,7 @@ import { ImageDetailPanel } from "./ImageDetailPanel";
import { DeleteImagesDialog } from "../DeleteImagesDialog";
import { faEllipsisV } from "@fortawesome/free-solid-svg-icons";
import { objectPath, objectTitle } from "src/core/files";
+import { isVideo } from "src/utils/visualFile";
interface IImageParams {
id?: string;
@@ -260,8 +261,7 @@ export const Image: React.FC = () => {
}
const title = objectTitle(image);
- const ImageView =
- image.visual_files[0].__typename == "VideoFile" ? "video" : "img";
+ const ImageView = isVideo(image.visual_files[0]) ? "video" : "img";
return (
diff --git a/ui/v2.5/src/hooks/Lightbox/Lightbox.tsx b/ui/v2.5/src/hooks/Lightbox/Lightbox.tsx
index 8cadd2d54..cfe1d5db3 100644
--- a/ui/v2.5/src/hooks/Lightbox/Lightbox.tsx
+++ b/ui/v2.5/src/hooks/Lightbox/Lightbox.tsx
@@ -47,6 +47,7 @@ import {
} from "@fortawesome/free-solid-svg-icons";
import { RatingSystem } from "src/components/Shared/Rating/RatingSystem";
import { useDebounce } from "../debounce";
+import { isVideo } from "src/utils/visualFile";
const CLASSNAME = "Lightbox";
const CLASSNAME_HEADER = `${CLASSNAME}-header`;
@@ -850,7 +851,7 @@ export const LightboxComponent: React.FC = ({
scrollAttemptsBeforeChange={scrollAttemptsBeforeChange}
setZoom={(v) => setZoom(v)}
resetPosition={resetPosition}
- isVideo={image.visual_files?.[0]?.__typename == "VideoFile"}
+ isVideo={isVideo(image.visual_files?.[0] ?? {})}
/>
) : undefined}
diff --git a/ui/v2.5/src/hooks/Lightbox/types.ts b/ui/v2.5/src/hooks/Lightbox/types.ts
index f955a060a..e98fb48f4 100644
--- a/ui/v2.5/src/hooks/Lightbox/types.ts
+++ b/ui/v2.5/src/hooks/Lightbox/types.ts
@@ -10,6 +10,7 @@ interface IFiles {
__typename?: string;
width: number;
height: number;
+ video_codec?: GQL.Maybe;
}
export interface ILightboxImage {
diff --git a/ui/v2.5/src/utils/visualFile.ts b/ui/v2.5/src/utils/visualFile.ts
new file mode 100644
index 000000000..c88aa83ec
--- /dev/null
+++ b/ui/v2.5/src/utils/visualFile.ts
@@ -0,0 +1,9 @@
+import { Maybe } from "src/core/generated-graphql";
+
+// returns true if the file should be treated as a video in the UI
+export function isVideo(o: {
+ __typename?: string;
+ video_codec?: Maybe;
+}) {
+ return o.__typename == "VideoFile" && o.video_codec != "gif";
+}