From 05786d0f0173a2a4e71faea8cd30481bbf7fecea Mon Sep 17 00:00:00 2001 From: Victor Date: Mon, 5 Feb 2024 19:35:52 -0800 Subject: [PATCH] media card simplication --- .../src/components/common/index.tsx | 2 + .../entities/AudioCard/AudioCard.tsx | 33 ++++++++-- .../components/entities/AudioCard/index.tsx | 1 + .../components/entities/BvhCard/BvhCard.tsx | 62 ------------------- .../src/components/entities/BvhCard/index.tsx | 1 - .../src/components/entities/CardBadge.tsx | 10 +++ .../src/components/entities/CardFooter.tsx | 37 +++++++++++ .../src/components/entities/CardPreviews.tsx | 31 ++++++++++ .../entities/CardWrapper/CardWrapper.tsx | 31 ++-------- .../entities/MediaList/MediaList.tsx | 20 +++--- .../entities/OverlayCard/OverlayCard.tsx | 36 +++++++++++ .../components/entities/OverlayCard/index.tsx | 1 + .../src/components/entities/index.tsx | 5 +- 13 files changed, 160 insertions(+), 110 deletions(-) create mode 100644 packages/fakeyou.com/src/components/entities/AudioCard/index.tsx delete mode 100644 packages/fakeyou.com/src/components/entities/BvhCard/BvhCard.tsx delete mode 100644 packages/fakeyou.com/src/components/entities/BvhCard/index.tsx create mode 100644 packages/fakeyou.com/src/components/entities/CardBadge.tsx create mode 100644 packages/fakeyou.com/src/components/entities/CardFooter.tsx create mode 100644 packages/fakeyou.com/src/components/entities/CardPreviews.tsx create mode 100644 packages/fakeyou.com/src/components/entities/OverlayCard/OverlayCard.tsx create mode 100644 packages/fakeyou.com/src/components/entities/OverlayCard/index.tsx diff --git a/packages/fakeyou.com/src/components/common/index.tsx b/packages/fakeyou.com/src/components/common/index.tsx index a974ceb528..83f4880a1f 100644 --- a/packages/fakeyou.com/src/components/common/index.tsx +++ b/packages/fakeyou.com/src/components/common/index.tsx @@ -15,6 +15,7 @@ import FileLabel from "./FileLabel"; import ImageInput from "./ImageInput"; import Input from "./Input"; import Label from "./Label"; +import LikeButton from "./LikeButton"; import MocapInput from "./MocapInput"; import Modal from "./Modal"; import NumberSlider from "./NumberSlider"; @@ -56,6 +57,7 @@ export { ImageInput, Input, Label, + LikeButton, MocapInput, Modal, NumberSlider, diff --git a/packages/fakeyou.com/src/components/entities/AudioCard/AudioCard.tsx b/packages/fakeyou.com/src/components/entities/AudioCard/AudioCard.tsx index d909e9e2f1..3e21f649ab 100644 --- a/packages/fakeyou.com/src/components/entities/AudioCard/AudioCard.tsx +++ b/packages/fakeyou.com/src/components/entities/AudioCard/AudioCard.tsx @@ -1,10 +1,33 @@ -import React from 'react'; -// import { CardWrapper } from "components/entities"; +import React from "react"; +import moment from "moment"; +import { MakeRatingsProps } from "hooks/useRatings"; +import AudioPlayer from "components/common/AudioPlayer"; +import CardBadge from "../CardBadge"; +import CardFooter from "../CardFooter"; interface Props { - value?: any; + data: any, + makeRatingsProps?: MakeRatingsProps, + showCreator?: boolean } -export default function AudioCard({ value }: Props) { - return {}; +export default function AudioCard({ data, makeRatingsProps, showCreator }: Props) { + const { created_at, media_type, public_bucket_path, origin: entityOrigin, token } = data || {} + const timeCreated = moment( created_at || "").fromNow(); + return <> +
+ +
+ { entityOrigin.maybe_model ? entityOrigin.maybe_model.title : "Media Audio" } +
+

{ timeCreated }

+
+ + + ; }; \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/entities/AudioCard/index.tsx b/packages/fakeyou.com/src/components/entities/AudioCard/index.tsx new file mode 100644 index 0000000000..64fcd33b86 --- /dev/null +++ b/packages/fakeyou.com/src/components/entities/AudioCard/index.tsx @@ -0,0 +1 @@ +export { default } from "./AudioCard"; \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/entities/BvhCard/BvhCard.tsx b/packages/fakeyou.com/src/components/entities/BvhCard/BvhCard.tsx deleted file mode 100644 index 63514b6e59..0000000000 --- a/packages/fakeyou.com/src/components/entities/BvhCard/BvhCard.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import React from "react"; -import useTimeAgo from "hooks/useTimeAgo"; -// import { MediaFile } from "@storyteller/components/src/api/media_files/GetMedia"; -import { MakeRatingsProps } from "hooks/useRatings"; -import LikeButton from "components/common/LikeButton"; -import CreatorName from "components/common/Card/CreatorName"; - -interface Props { - data: any, - makeRatingsProps?: MakeRatingsProps, - showCreator?: boolean -} - - -export default function BvhCard({ data, makeRatingsProps, showCreator }: Props) { - const timeAgo = useTimeAgo(data.created_at); - const handleInnerClick = (event: any) => event.stopPropagation(); - return <> -
-
-

{timeAgo}

-
- -
- -
- {showCreator && ( -
- -
- )} - { - makeRatingsProps ?
- -
: null - } -
-
- ; -}; \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/entities/BvhCard/index.tsx b/packages/fakeyou.com/src/components/entities/BvhCard/index.tsx deleted file mode 100644 index 33fa21416e..0000000000 --- a/packages/fakeyou.com/src/components/entities/BvhCard/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export { default } from "./BvhCard"; \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/entities/CardBadge.tsx b/packages/fakeyou.com/src/components/entities/CardBadge.tsx new file mode 100644 index 0000000000..94587ddda9 --- /dev/null +++ b/packages/fakeyou.com/src/components/entities/CardBadge.tsx @@ -0,0 +1,10 @@ +import React from "react"; +import { Badge } from "components/common"; + +export default function CardBadge(props: any) { + return
+
+ +
+
; +}; \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/entities/CardFooter.tsx b/packages/fakeyou.com/src/components/entities/CardFooter.tsx new file mode 100644 index 0000000000..6de92f8144 --- /dev/null +++ b/packages/fakeyou.com/src/components/entities/CardFooter.tsx @@ -0,0 +1,37 @@ +import React from "react"; +import { MakeRatingsProps } from "hooks/useRatings"; +import LikeButton from "components/common/LikeButton"; +import CreatorName from "components/common/Card/CreatorName"; + +interface CardFooterProps { + creator?: any, + entityToken: string, + entityType: string, + makeRatingsProps?: MakeRatingsProps, + showCreator?: boolean +} + +export default function CardFooter({ creator, entityToken, entityType, makeRatingsProps, showCreator }: CardFooterProps) { + const { default_avatar, display_name, gravatar_hash, username } = creator || {}; + return <> + { (showCreator || makeRatingsProps) &&
} +
+ { showCreator && ( +
+ +
+ )} + { + makeRatingsProps ?
+ +
: null + } +
+ ; +}; \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/entities/CardPreviews.tsx b/packages/fakeyou.com/src/components/entities/CardPreviews.tsx new file mode 100644 index 0000000000..8e667866e2 --- /dev/null +++ b/packages/fakeyou.com/src/components/entities/CardPreviews.tsx @@ -0,0 +1,31 @@ +import React from "react"; +import { BucketConfig } from "@storyteller/components/src/api/BucketConfig"; +import { FontAwesomeIcon as Icon } from "@fortawesome/react-fontawesome"; // for now +import { faPersonWalking } from "@fortawesome/pro-solid-svg-icons"; + +export const ImagePreview = ({ data }: { data: any }) => { + const bucketConfig = new BucketConfig(); + const coverImage = bucketConfig.getCdnUrl(data.public_bucket_path, 600, 100); + + return ; +}; + +export const VideoPreview = ({ data }: { data: any }) => { + + const { default_cover, maybe_cover_image_public_bucket_path } = data?.cover_image || {}; + + const bucketConfig = new BucketConfig(); + //video doesnt have random cover image endpoint or thumbnails yet + let coverImage = `/images/default-covers/${ default_cover?.image_index || 0 }.webp`; + + if (maybe_cover_image_public_bucket_path) { + coverImage = bucketConfig.getCdnUrl(maybe_cover_image_public_bucket_path, 600, 100); + } + + return ; +}; + +export const MocapPreview = () => ; + +// export const ImagePreview = previwImg("card-img"); +// export const VideoPreview = previwImg("card-video"); \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/entities/CardWrapper/CardWrapper.tsx b/packages/fakeyou.com/src/components/entities/CardWrapper/CardWrapper.tsx index 445dee73c4..ba02225d64 100644 --- a/packages/fakeyou.com/src/components/entities/CardWrapper/CardWrapper.tsx +++ b/packages/fakeyou.com/src/components/entities/CardWrapper/CardWrapper.tsx @@ -1,6 +1,5 @@ import React from "react"; import { Link } from "react-router-dom"; -import { Badge } from "components/common"; import getCardUrl from "components/common/Card/getCardUrl"; import "./CardWrapper.scss"; @@ -15,38 +14,16 @@ interface Props { type: "media" | "weights" } -const CardBadge = (props: any) =>
-
- -
-
; - -const CardFrame = ({ data, children, preview: Preview }: { data: any, children: any, preview: React.ElementType }) => { - // const Preview = preview; - // console.log("🎈",preview); - return <> - -
-
- -
- { children } -}; - -export default function CardWrapper({ canHover, card: Card, data, onClick, padding, preview, source = "", type, ...rest }: Props) { +export default function CardWrapper({ canHover, card: Card, data, onClick, padding, source = "", type, ...rest }: Props) { const linkUrl = getCardUrl(data,source,type); const cardProps = { data, source, type, ...rest } const className = `card ${ padding ? "p-3" : "" }${ onClick || canHover ? " card-clickable" : "" }`; -console.log("😎",preview); + return onClick ?
- - - +
: - - - + ; }; \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/entities/MediaList/MediaList.tsx b/packages/fakeyou.com/src/components/entities/MediaList/MediaList.tsx index 6732f3ef5b..77a518e48a 100644 --- a/packages/fakeyou.com/src/components/entities/MediaList/MediaList.tsx +++ b/packages/fakeyou.com/src/components/entities/MediaList/MediaList.tsx @@ -2,13 +2,9 @@ import React, { useRef } from "react"; import { MediaFile } from "@storyteller/components/src/api/media_files/GetMedia"; import MasonryGrid from "components/common/MasonryGrid/MasonryGrid"; // import MediaCards from "components/common/Card/MediaCards"; -import AudioCard from "components/common/Card/AudioCard"; -import ImageCard from "components/common/Card/ImageCard"; -import VideoCard from "components/common/Card/VideoCard"; -import { BvhCard, CardWrapper } from "components/entities"; - -import { FontAwesomeIcon as Icon } from "@fortawesome/react-fontawesome"; // for now -import { faPersonWalking } from "@fortawesome/pro-solid-svg-icons"; +// import AudioCard from "components/common/Card/AudioCard"; +import { ImagePreview, MocapPreview, VideoPreview } from '../CardPreviews'; +import { AudioCard, OverlayCard, CardWrapper } from "components/entities"; interface MediaCardsProps { props: any, @@ -20,18 +16,16 @@ interface Props { success?: boolean } -const MocapPreview = () => ; - const MediaCards = ({ props, type }: MediaCardsProps) => { switch (type) { case "audio": - return ; + return ; case "image": - return ; + return ; case "video": - return ; + return ; case "bvh": - return + return ; default: return
Unsupported media type
; } diff --git a/packages/fakeyou.com/src/components/entities/OverlayCard/OverlayCard.tsx b/packages/fakeyou.com/src/components/entities/OverlayCard/OverlayCard.tsx new file mode 100644 index 0000000000..95446b7eb8 --- /dev/null +++ b/packages/fakeyou.com/src/components/entities/OverlayCard/OverlayCard.tsx @@ -0,0 +1,36 @@ +import React from "react"; +import moment from "moment"; +import { MakeRatingsProps } from "hooks/useRatings"; +import CardBadge from "../CardBadge"; +import CardFooter from "../CardFooter"; + +interface Props { + data: any, + makeRatingsProps?: MakeRatingsProps, + preview: React.ElementType, + showCreator?: boolean +} + +export default function OverlayCard({ data, makeRatingsProps, preview: Preview, showCreator }: Props) { + const timeCreated = moment(data.created_at || "").fromNow(); + + return <> + +
+
+ +
+
+
+

{ timeCreated }

+
+ +
+ ; +}; \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/entities/OverlayCard/index.tsx b/packages/fakeyou.com/src/components/entities/OverlayCard/index.tsx new file mode 100644 index 0000000000..7a6e83ff45 --- /dev/null +++ b/packages/fakeyou.com/src/components/entities/OverlayCard/index.tsx @@ -0,0 +1 @@ +export { default } from "./OverlayCard"; \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/entities/index.tsx b/packages/fakeyou.com/src/components/entities/index.tsx index a9ee9dddbc..f33c0adf40 100644 --- a/packages/fakeyou.com/src/components/entities/index.tsx +++ b/packages/fakeyou.com/src/components/entities/index.tsx @@ -1,5 +1,6 @@ -import BvhCard from "./BvhCard"; +import AudioCard from "./AudioCard"; import CardWrapper from "./CardWrapper"; import MediaList from "./MediaList"; +import OverlayCard from "./OverlayCard"; -export { BvhCard, CardWrapper, MediaList }; \ No newline at end of file +export { AudioCard, CardWrapper, MediaList, OverlayCard }; \ No newline at end of file