From a803efdd81ab6305c57c08f92a83af597ad52d3a Mon Sep 17 00:00:00 2001 From: BFlat Date: Fri, 17 Mar 2023 00:24:35 +0700 Subject: [PATCH 1/4] profile feed update --- .../fakeyou.com/src/scss/site-refresh.scss | 8 ++ .../v2/view/_common/ProfileTtsAudioPlayer.tsx | 70 ++++++++++++++++ .../profile/profile_view/ProfilePage.tsx | 10 +-- .../Profile_TtsInferenceResultListFc.tsx | 81 ++++++++++++------- 4 files changed, 134 insertions(+), 35 deletions(-) create mode 100644 packages/fakeyou.com/src/v2/view/_common/ProfileTtsAudioPlayer.tsx diff --git a/packages/fakeyou.com/src/scss/site-refresh.scss b/packages/fakeyou.com/src/scss/site-refresh.scss index 32a1841255..b75131bd7c 100644 --- a/packages/fakeyou.com/src/scss/site-refresh.scss +++ b/packages/fakeyou.com/src/scss/site-refresh.scss @@ -1017,6 +1017,14 @@ styles with important tags: font-size: 13px; padding: 0; } + + .profile-model-title { + color: $white !important; + + &:hover { + color: $primary !important; + } + } } select { diff --git a/packages/fakeyou.com/src/v2/view/_common/ProfileTtsAudioPlayer.tsx b/packages/fakeyou.com/src/v2/view/_common/ProfileTtsAudioPlayer.tsx new file mode 100644 index 0000000000..19c226575e --- /dev/null +++ b/packages/fakeyou.com/src/v2/view/_common/ProfileTtsAudioPlayer.tsx @@ -0,0 +1,70 @@ +import React, { useState, useCallback } from "react"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { faPause, faPlay } from "@fortawesome/free-solid-svg-icons"; +import Wavesurfer from "react-wavesurfer.js"; + +interface Props { + filename: string; +} + +function ProfileTtsAudioPlayer(props: Props) { + const [isPlaying, setIsPlaying] = useState(false); + const [position, setPosition] = useState(0); + + const handleTogglePlay = useCallback(() => { + if (!isPlaying) { + setIsPlaying(true); + } else { + setIsPlaying(false); + } + }, [isPlaying]); + + const handleFinish = useCallback(() => { + setIsPlaying(false); + setPosition(0); + return [setIsPlaying, setPosition]; + }, []); + + let playButtonText = ; + + if (isPlaying) { + playButtonText = ( + <> + + + ); + } + + return ( +
+ +
+ +
+
+ ); +} + +export { ProfileTtsAudioPlayer }; diff --git a/packages/fakeyou.com/src/v2/view/pages/profile/profile_view/ProfilePage.tsx b/packages/fakeyou.com/src/v2/view/pages/profile/profile_view/ProfilePage.tsx index 0f4183a6bb..1b2b60057d 100644 --- a/packages/fakeyou.com/src/v2/view/pages/profile/profile_view/ProfilePage.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/profile/profile_view/ProfilePage.tsx @@ -473,7 +473,7 @@ function ProfilePage(props: Props) { -
+
{ const duration_seconds = result.duration_millis / 1000; - + const audioLink = new BucketConfig().getGcsUrl( + result.public_bucket_wav_audio_path + ); + const wavesurfer = ; const inferenceLink = `/tts/result/${result.tts_result_token}`; const modelLink = `/tts/${result.tts_model_token}`; - const text = - result.raw_inference_text.length < 5 - ? `Result: ${result.raw_inference_text}` - : result.raw_inference_text; + const text = ( + + ); const createTime = new Date(result.created_at); const relativeCreateTime = formatDistance(createTime, now, { @@ -129,20 +136,40 @@ function ProfileTtsInferenceResultsListFc(props: Props) { rows.push( - {result.maybe_creator_result_id} - {visibilityIcon} - - - - {text} - -   - - - Model: {result.tts_model_title} - - {duration_seconds} s - {relativeCreateTime} + +
+
+
+
+ + {result.tts_model_title} + +
+ — + + View Details / Download + +
+ +

{text}

+
+ + {wavesurfer} +
+

+ #{result.maybe_creator_result_id} + · + {visibilityIcon} + · + {duration_seconds} s· + {relativeCreateTime} +

+
+
+ ); }); @@ -157,7 +184,7 @@ function ProfileTtsInferenceResultsListFc(props: Props) {
- + {/* - + */} - {rows} + {rows}
# @@ -180,20 +207,14 @@ function ProfileTtsInferenceResultsListFc(props: Props) { Creation Time
-

- Note: Results marked public () are - visible by anyone visiting your profile. - {/*You can change this by editing results. You can also set a default preference for new results.*/} -

- -
+