From 079a051e8ae63c2deed71bda4a18bd76498a2b51 Mon Sep 17 00:00:00 2001 From: Sharun Date: Mon, 6 Nov 2023 12:50:30 -0500 Subject: [PATCH 1/4] update `isUrlImage` and `isUrlVideo` to use `mime` --- src/helpers/lemmy.ts | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/helpers/lemmy.ts b/src/helpers/lemmy.ts index 826aa8dbc8..7debbbb98f 100644 --- a/src/helpers/lemmy.ts +++ b/src/helpers/lemmy.ts @@ -8,6 +8,7 @@ import { } from "lemmy-js-client"; import { Share } from "@capacitor/share"; import { escapeStringForRegex } from "./regex"; +import mime from "mime"; export interface LemmyJWT { sub: number; @@ -235,18 +236,12 @@ export function isUrlImage(url: string): boolean { try { parsedUrl = new URL(url); + let mt = mime.getType(url); + return mt?.startsWith("image/") ?? false; } catch (error) { console.error(error); return false; } - - return ( - parsedUrl.pathname.endsWith(".jpeg") || - parsedUrl.pathname.endsWith(".png") || - parsedUrl.pathname.endsWith(".gif") || - parsedUrl.pathname.endsWith(".jpg") || - parsedUrl.pathname.endsWith(".webp") - ); } export function isUrlVideo(url: string): boolean { @@ -254,12 +249,12 @@ export function isUrlVideo(url: string): boolean { try { parsedUrl = new URL(url); + let mt = mime.getType(url); + return mt?.startsWith("video/") ?? false; } catch (error) { console.error(error); return false; } - - return parsedUrl.pathname.endsWith(".mp4"); } export function share(item: Post | Comment) { From 01cf3620e52da2d7761cceee212d3f2f765ab698 Mon Sep 17 00:00:00 2001 From: Sharun Date: Mon, 6 Nov 2023 23:27:20 -0500 Subject: [PATCH 2/4] lint fix --- src/helpers/lemmy.ts | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/helpers/lemmy.ts b/src/helpers/lemmy.ts index 7debbbb98f..4081066732 100644 --- a/src/helpers/lemmy.ts +++ b/src/helpers/lemmy.ts @@ -232,11 +232,9 @@ export function getFlattenedChildren(comment: CommentNodeI): CommentView[] { } export function isUrlImage(url: string): boolean { - let parsedUrl; - try { - parsedUrl = new URL(url); - let mt = mime.getType(url); + new URL(url); + const mt = mime.getType(url); return mt?.startsWith("image/") ?? false; } catch (error) { console.error(error); @@ -245,11 +243,9 @@ export function isUrlImage(url: string): boolean { } export function isUrlVideo(url: string): boolean { - let parsedUrl; - try { - parsedUrl = new URL(url); - let mt = mime.getType(url); + new URL(url); + const mt = mime.getType(url); return mt?.startsWith("video/") ?? false; } catch (error) { console.error(error); From 87e7d01b3c8ca20550281cdbcc07f6f86b2cb00d Mon Sep 17 00:00:00 2001 From: Sharun Date: Mon, 6 Nov 2023 23:33:49 -0500 Subject: [PATCH 3/4] refactor functions --- src/helpers/lemmy.ts | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/helpers/lemmy.ts b/src/helpers/lemmy.ts index 4081066732..38f03605d6 100644 --- a/src/helpers/lemmy.ts +++ b/src/helpers/lemmy.ts @@ -231,26 +231,22 @@ export function getFlattenedChildren(comment: CommentNodeI): CommentView[] { return flattenedChildren; } -export function isUrlImage(url: string): boolean { +function isValidUrl(url: string): boolean { try { new URL(url); - const mt = mime.getType(url); - return mt?.startsWith("image/") ?? false; + return true; } catch (error) { console.error(error); return false; } } +export function isUrlImage(url: string): boolean { + return (isValidUrl(url) && mime.getType(url)?.startsWith("image/")) ?? false; +} + export function isUrlVideo(url: string): boolean { - try { - new URL(url); - const mt = mime.getType(url); - return mt?.startsWith("video/") ?? false; - } catch (error) { - console.error(error); - return false; - } + return (isValidUrl(url) && mime.getType(url)?.startsWith("video/")) ?? false; } export function share(item: Post | Comment) { From ca9720e12b4ac21bb785ec34d82d682560c0ccb9 Mon Sep 17 00:00:00 2001 From: Sharun Date: Wed, 8 Nov 2023 10:12:09 -0500 Subject: [PATCH 4/4] updated to use --- src/features/gallery/GalleryImg.tsx | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/features/gallery/GalleryImg.tsx b/src/features/gallery/GalleryImg.tsx index cb2450a2b7..c07ef4c27e 100644 --- a/src/features/gallery/GalleryImg.tsx +++ b/src/features/gallery/GalleryImg.tsx @@ -3,8 +3,8 @@ import "photoswipe/dist/photoswipe.css"; import { PostView } from "lemmy-js-client"; import { GalleryContext } from "./GalleryProvider"; import { PreparedPhotoSwipeOptions } from "photoswipe"; -import mime from "mime"; import Video from "../shared/Video"; +import { isUrlVideo } from "../../helpers/lemmy"; export interface GalleryImgProps { src?: string; @@ -35,11 +35,7 @@ export function GalleryImg({ const imgRef = useRef(null); const { open } = useContext(GalleryContext); - const mt = mime.getType(`${src}`); - - const isVideo = mt?.startsWith("video/"); - - const InnerComponent = !isVideo ? ( + return !isUrlVideo(`${src}`) ? ( ); - - return InnerComponent; }