From 6412417891fe92bb9ba02e6e55de57a278141749 Mon Sep 17 00:00:00 2001 From: IrohDW Date: Mon, 8 Jul 2024 17:09:18 -0600 Subject: [PATCH] Fixed video skeleton not loading bug. Deleted videos are not filtered out. They are now visible and show an image on the Home, Channel, and VideoContent pages that says "This video has been removed by the user". Fixed minification bug caused by store.ts titleFormatter and titleFormatterOnSave redone, only characters not allowed by Operating Systems are filtered out when saving as file. --- src/assets/img/DeletedVideo.jpg | Bin 0 -> 23071 bytes src/components/ResponsiveImage.tsx | 68 ++++++++++-------- .../common/SuperLikesList/CommentEditor.tsx | 5 +- src/constants/Misc.ts | 7 +- .../VideoContent/VideoContent.tsx | 7 +- src/pages/Home/VideoList.tsx | 22 +++--- src/state/store.ts | 1 + src/utils/fetchVideos.ts | 35 +++++---- 8 files changed, 77 insertions(+), 68 deletions(-) create mode 100644 src/assets/img/DeletedVideo.jpg diff --git a/src/assets/img/DeletedVideo.jpg b/src/assets/img/DeletedVideo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1b2f276d2482841a83f035d93715f54297420695 GIT binary patch literal 23071 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 literal 0 HcmV?d00001 diff --git a/src/components/ResponsiveImage.tsx b/src/components/ResponsiveImage.tsx index f184f31..f4412a8 100644 --- a/src/components/ResponsiveImage.tsx +++ b/src/components/ResponsiveImage.tsx @@ -1,14 +1,14 @@ -import React, { useState, useEffect, CSSProperties } from 'react' -import Skeleton from '@mui/material/Skeleton' -import { Box } from '@mui/material' - +import React, { useState, useEffect, CSSProperties } from "react"; +import Skeleton from "@mui/material/Skeleton"; +import { Box } from "@mui/material"; +import DeletedVideo from "../assets/img/DeletedVideo.jpg"; interface ResponsiveImageProps { - src: string - width: number - height: number - alt?: string - className?: string - style?: CSSProperties + src: string; + width: number; + height: number; + alt?: string; + className?: string; + style?: CSSProperties; } const ResponsiveImage: React.FC = ({ @@ -17,49 +17,55 @@ const ResponsiveImage: React.FC = ({ height, alt, className, - style + style, }) => { - const [loading, setLoading] = useState(true) + const [loading, setLoading] = useState(true); + + const endLoading = (endTimeSeconds: number) => { + const endTimeMilliSeconds = endTimeSeconds * 1000; + setTimeout(() => { + if (loading) setLoading(false); + }, endTimeMilliSeconds); + }; - + useEffect(() => endLoading(5), []); return ( - {loading && ( )} setLoading(false)} - src={src} + src={!src && !loading ? DeletedVideo : src} style={{ - width: '100%', - height: '100%', - borderRadius: '8px', - visibility: loading ? 'hidden' : 'visible', - position: loading ? 'absolute' : 'unset', - objectFit: 'contain' + width: "100%", + height: "100%", + borderRadius: "8px", + visibility: loading ? "hidden" : "visible", + position: loading ? "absolute" : "unset", + objectFit: "contain", }} /> - ) -} + ); +}; -export default ResponsiveImage +export default ResponsiveImage; diff --git a/src/components/common/SuperLikesList/CommentEditor.tsx b/src/components/common/SuperLikesList/CommentEditor.tsx index 8d256a4..b2917b7 100644 --- a/src/components/common/SuperLikesList/CommentEditor.tsx +++ b/src/components/common/SuperLikesList/CommentEditor.tsx @@ -181,18 +181,17 @@ export const CommentEditor = ({ notificationInformation: comment.notificationInformation, about: comment.about, }; - const superLikeToFile = await objectToFile(superObj); + const superLikeToFile = objectToFile(superObj); dataFile = superLikeToFile; } if (isSuperLike && !dataFile) throw new Error("unable to edit Super like"); - const stringFile = stringToFile(value); const resourceResponse = await qortalRequest({ action: "PUBLISH_QDN_RESOURCE", name: name, service: "BLOG_COMMENT", - file: isSuperLike ? dataFile : stringFile, + file: isSuperLike ? dataFile : stringToFile(value), identifier: identifier, description, tag1, diff --git a/src/constants/Misc.ts b/src/constants/Misc.ts index 678e413..742589b 100644 --- a/src/constants/Misc.ts +++ b/src/constants/Misc.ts @@ -1,6 +1,7 @@ export const minPriceSuperlike = 1; -export const titleFormatter = /[^a-zA-Z0-9\s-_!?()&'",.;:|—~@#$%^*+=<>]/g; -export const titleFormatterOnSave = /[^a-zA-Z0-9\s-_!()&',.;—~@#$%^+=]/g; + +export const titleFormatter = /[\r\n]+/g; +export const titleFormatterOnSave = /[\r\n/<>:"'\\*|?]+/g; export const videoMaxSize = 400; // Size in Megabytes (decimal) -export const maxSize = videoMaxSize *1024*1024 \ No newline at end of file +export const maxSize = videoMaxSize * 1024 * 1024; diff --git a/src/pages/ContentPages/VideoContent/VideoContent.tsx b/src/pages/ContentPages/VideoContent/VideoContent.tsx index a6032d9..1985638 100644 --- a/src/pages/ContentPages/VideoContent/VideoContent.tsx +++ b/src/pages/ContentPages/VideoContent/VideoContent.tsx @@ -7,6 +7,7 @@ import React, { } from "react"; import { useDispatch, useSelector } from "react-redux"; import { useNavigate, useParams } from "react-router-dom"; +import ResponsiveImage from "../../../components/ResponsiveImage.tsx"; import { setIsLoadingGlobal } from "../../../state/features/globalSlice.ts"; import { Avatar, Box, Typography, useTheme } from "@mui/material"; import { @@ -17,6 +18,7 @@ import { RootState } from "../../../state/store.ts"; import { addToHashMap } from "../../../state/features/videoSlice.ts"; import AttachFileIcon from "@mui/icons-material/AttachFile"; import DownloadIcon from "@mui/icons-material/Download"; +import DeletedVideo from "../../../assets/img/DeletedVideo.jpg"; import mockImg from "../../../test/mockimg.jpg"; import { @@ -403,7 +405,7 @@ export const VideoContent = () => { width: "70vw", }} > - {videoReference && ( + {videoReference ? ( { customStyle={{ aspectRatio: "16/9" }} ref={containerRef} /> + ) : ( + )} { {}} loadingSuperLikes={loadingSuperLikes} superlikes={superlikeList} diff --git a/src/pages/Home/VideoList.tsx b/src/pages/Home/VideoList.tsx index 5aa258f..525a298 100644 --- a/src/pages/Home/VideoList.tsx +++ b/src/pages/Home/VideoList.tsx @@ -6,7 +6,12 @@ import { useDispatch, useSelector } from "react-redux"; import { useNavigate } from "react-router-dom"; import { PlaylistSVG } from "../../assets/svgs/PlaylistSVG.tsx"; import ResponsiveImage from "../../components/ResponsiveImage.tsx"; -import { blockUser, setEditPlaylist, setEditVideo, Video } from "../../state/features/videoSlice.ts"; +import { + blockUser, + setEditPlaylist, + setEditVideo, + Video, +} from "../../state/features/videoSlice.ts"; import { RootState } from "../../state/store.ts"; import { formatDate } from "../../utils/time.ts"; import { VideoCardImageContainer } from "./VideoCardImageContainer.tsx"; @@ -55,16 +60,14 @@ export const VideoList = ({ videos }: VideoListProps) => { if (response === true) { dispatch(blockUser(user)); } - } catch (error) {console.log(error)} + } catch (error) { + console.log(error); + } }; - const filteredVideos = useMemo(() => { - return videos.filter((video: Video) => hashMapVideos[`${video.id}-${video.user}`]?.isValid); - }, [videos, hashMapVideos]); - return ( - {filteredVideos.map((video: any) => { + {videos.map((video: any) => { const fullId = video ? `${video.id}-${video.user}` : undefined; const existingVideo = hashMapVideos[fullId]; let hasHash = false; @@ -244,11 +247,6 @@ export const VideoList = ({ videos }: VideoListProps) => { videoImage={videoObj.videoImage} frameImages={videoObj?.extracts || []} /> - {/* */} {videoObj.title} { const getVideo = async () => { - const { user, videoId, content } = data + const { user, videoId, content } = data; let obj: any = { ...content, - isValid: false - } + }; - if (!user || !videoId) return obj + if (!user || !videoId) return obj; try { - const responseData = await qortalRequest({ - action: 'FETCH_QDN_RESOURCE', + action: "FETCH_QDN_RESOURCE", name: user, - service: content?.service || 'DOCUMENT', - identifier: videoId - }) + service: content?.service || "DOCUMENT", + identifier: videoId, + }); if (responseData) { obj = { ...content, ...responseData, - isValid: true - } + isValid: true, + isDeleted: false, + }; } - return obj + return obj; } catch (error: any) { - throw new Error(error?.message || 'error') + throw new Error(error?.message || "error"); } - } + }; - const res = await getVideo() - return res -} + const res = await getVideo(); + return res; +};