From fa7419f908fef0a85fc7c57d09a737521af492f3 Mon Sep 17 00:00:00 2001 From: BFlat Date: Thu, 11 Jan 2024 17:30:37 +0700 Subject: [PATCH 1/4] weights search --- packages/components/src/api/ApiConfig.ts | 4 ++ .../src/api/weights/SearchWeights.ts | 48 +++++++++++++++++++ .../components/common/SearchBar/SearchBar.tsx | 10 ++-- .../SearchBar/SearchResultsDropdown.tsx | 16 +++---- 4 files changed, 64 insertions(+), 14 deletions(-) create mode 100644 packages/components/src/api/weights/SearchWeights.ts diff --git a/packages/components/src/api/ApiConfig.ts b/packages/components/src/api/ApiConfig.ts index 1730d90f2d..c3a88fef3c 100644 --- a/packages/components/src/api/ApiConfig.ts +++ b/packages/components/src/api/ApiConfig.ts @@ -132,6 +132,10 @@ class ApiConfig { return `${this.getApiOrigin()}/tts/search`; } + searchWeights(): string { + return `${this.getApiOrigin()}/v1/weights/search`; + } + getPendingTtsJobCount(): string { return `${this.getApiOrigin()}/tts/queue_length`; } diff --git a/packages/components/src/api/weights/SearchWeights.ts b/packages/components/src/api/weights/SearchWeights.ts new file mode 100644 index 0000000000..2b7900a328 --- /dev/null +++ b/packages/components/src/api/weights/SearchWeights.ts @@ -0,0 +1,48 @@ +import { ApiConfig } from "../ApiConfig"; +import { Weight } from "./GetWeight"; + +export interface SearchWeightsRequest { + search_term: string; +} + +export interface SearchWeightsResponse { + success: boolean; + models: Weight[]; +} + +export enum SearchWeightsError { + NotFound, + ServerError, + FrontendError, +} + +export async function SearchWeights( + request: SearchWeightsRequest +): Promise { + const endpoint = new ApiConfig().searchWeights(); + + return await fetch(endpoint, { + method: "POST", + headers: { + Accept: "application/json", + "Content-Type": "application/json", + }, + credentials: "include", + body: JSON.stringify(request), + }) + .then(res => res.json()) + .then(res => { + if (!res) { + return { success: false }; + } + + if (res && "success" in res) { + return res; + } else { + return { success: false }; + } + }) + .catch(e => { + return { success: false }; + }); +} diff --git a/packages/fakeyou.com/src/components/common/SearchBar/SearchBar.tsx b/packages/fakeyou.com/src/components/common/SearchBar/SearchBar.tsx index 8dc0ee14c2..29f41df8cb 100644 --- a/packages/fakeyou.com/src/components/common/SearchBar/SearchBar.tsx +++ b/packages/fakeyou.com/src/components/common/SearchBar/SearchBar.tsx @@ -1,10 +1,8 @@ import React, { useCallback, useEffect, useState } from "react"; import Button from "../Button"; import { faSearch } from "@fortawesome/pro-solid-svg-icons"; -import { - SearchTtsModels, - TtsModel, -} from "@storyteller/components/src/api/tts/SearchTtsModels"; +import { SearchWeights } from "@storyteller/components/src/api/weights/SearchWeights"; +import { Weight } from "@storyteller/components/src/api/weights/GetWeight"; import SearchResultsDropdown from "./SearchResultsDropdown"; import SearchField from "./SearchField"; import "./SearchBar.scss"; @@ -28,7 +26,7 @@ export default function SearchBar({ let location = useLocation(); const { searchTerm, setSearchTerm } = useSearch(); - const [foundTtsModels, setFoundTtsModels] = useState([]); + const [foundTtsModels, setFoundTtsModels] = useState([]); const [isLoading, setIsLoading] = useState(false); const isOnSearchPage = location.pathname.startsWith("/search"); @@ -47,7 +45,7 @@ export default function SearchBar({ setIsLoading(true); - let response = await SearchTtsModels(request); + let response = await SearchWeights(request); if (response.success) { let models = [...response.models]; diff --git a/packages/fakeyou.com/src/components/common/SearchBar/SearchResultsDropdown.tsx b/packages/fakeyou.com/src/components/common/SearchBar/SearchResultsDropdown.tsx index 93bc44cf6f..61b43f41c3 100644 --- a/packages/fakeyou.com/src/components/common/SearchBar/SearchResultsDropdown.tsx +++ b/packages/fakeyou.com/src/components/common/SearchBar/SearchResultsDropdown.tsx @@ -1,10 +1,10 @@ -import { TtsModel } from "@storyteller/components/src/api/tts/SearchTtsModels"; +import { Weight } from "@storyteller/components/src/api/weights/GetWeight"; import React from "react"; import { Link, useHistory } from "react-router-dom"; import Badge from "../Badge"; interface SearchResultsDropdownProps { - data: TtsModel[]; + data: Weight[]; isNoResults?: boolean; isLoading?: boolean; searchTerm?: string; @@ -18,10 +18,10 @@ export default function SearchResultsDropdown({ }: SearchResultsDropdownProps) { const history = useHistory(); - const handleResultClick = (item: TtsModel, event: React.MouseEvent) => { + const handleResultClick = (item: Weight, event: React.MouseEvent) => { event.stopPropagation(); event.preventDefault(); - history.push(`/weight/${item.model_token}`); + history.push(`/weight/${item.weight_token}`); }; const handleInnerClick = (event: any) => { @@ -40,12 +40,12 @@ export default function SearchResultsDropdown({ {data.length !== 0 && (
{data.map(item => { - // let modelPageLink = `/weight/${item.model_token}`; + // let modelPageLink = `/weight/${item.weight_token}`; return (
handleResultClick(item, event)} >
{item.title}
@@ -54,10 +54,10 @@ export default function SearchResultsDropdown({ by{" "} - {item.creator_display_name} + {item.creator.display_name}

From f5a54b90a78125b06de8f557ef0c7e4def783b6c Mon Sep 17 00:00:00 2001 From: BFlat Date: Thu, 11 Jan 2024 18:36:04 +0700 Subject: [PATCH 2/4] cover image sizing fix --- .../src/components/common/WeightCoverImage/WeightCoverImage.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/fakeyou.com/src/components/common/WeightCoverImage/WeightCoverImage.tsx b/packages/fakeyou.com/src/components/common/WeightCoverImage/WeightCoverImage.tsx index 4fcf318957..99f2ba1f90 100644 --- a/packages/fakeyou.com/src/components/common/WeightCoverImage/WeightCoverImage.tsx +++ b/packages/fakeyou.com/src/components/common/WeightCoverImage/WeightCoverImage.tsx @@ -17,6 +17,7 @@ export default function WeightCoverImage({ const containerStyle = { height: `${height}px`, width: `${width}px`, + minWidth: `${width}px`, }; return ( From 9d7a9304bd792613741a27ac2bef3533562858c8 Mon Sep 17 00:00:00 2001 From: BFlat Date: Thu, 11 Jan 2024 20:13:46 +0700 Subject: [PATCH 3/4] search weights endpoint --- .../src/api/weights/SearchWeights.ts | 2 +- .../ModelSearchResults/ModelSearchResults.tsx | 19 +-- .../components/common/SearchBar/SearchBar.tsx | 14 +-- .../fakeyou.com/src/v2/view/PageContainer.tsx | 7 -- .../tts_model_search/TtsModelSearchPage.tsx | 117 ------------------ .../src/v2/view/search/SearchPage.tsx | 22 ++-- 6 files changed, 29 insertions(+), 152 deletions(-) delete mode 100644 packages/fakeyou.com/src/v2/view/pages/tts/tts_model_search/TtsModelSearchPage.tsx diff --git a/packages/components/src/api/weights/SearchWeights.ts b/packages/components/src/api/weights/SearchWeights.ts index 2b7900a328..b38e289258 100644 --- a/packages/components/src/api/weights/SearchWeights.ts +++ b/packages/components/src/api/weights/SearchWeights.ts @@ -7,7 +7,7 @@ export interface SearchWeightsRequest { export interface SearchWeightsResponse { success: boolean; - models: Weight[]; + weights: Weight[]; } export enum SearchWeightsError { diff --git a/packages/fakeyou.com/src/components/common/ModelSearchResults/ModelSearchResults.tsx b/packages/fakeyou.com/src/components/common/ModelSearchResults/ModelSearchResults.tsx index cef1ad55cd..2181fd5b57 100644 --- a/packages/fakeyou.com/src/components/common/ModelSearchResults/ModelSearchResults.tsx +++ b/packages/fakeyou.com/src/components/common/ModelSearchResults/ModelSearchResults.tsx @@ -8,10 +8,10 @@ import { faComment, faHeart, } from "@fortawesome/pro-solid-svg-icons"; -import { TtsModel } from "@storyteller/components/src/api/tts/SearchTtsModels"; +import { Weight } from "@storyteller/components/src/api/weights/GetWeight"; interface Props { - data: TtsModel[]; + data: Weight[]; } function shortenNumber(num: number): string { @@ -26,21 +26,24 @@ export default function ModelSearchResults(props: Props) { let likes = 1500; let uses = 25000; let comments = 25; - let model_type = "Tacotron2"; + let model_type = "Tacotron2"; return (
- {props.data.map((item) => { - let modelPageLink = `/tts/${item.model_token}`; + {props.data.map(item => { + let modelPageLink = `/weight/${item.weight_token}`; return ( -
+
{item.title}

by{" "} - - {item.creator_display_name} + + {item.creator.display_name}

diff --git a/packages/fakeyou.com/src/components/common/SearchBar/SearchBar.tsx b/packages/fakeyou.com/src/components/common/SearchBar/SearchBar.tsx index 29f41df8cb..acf349e5aa 100644 --- a/packages/fakeyou.com/src/components/common/SearchBar/SearchBar.tsx +++ b/packages/fakeyou.com/src/components/common/SearchBar/SearchBar.tsx @@ -26,7 +26,7 @@ export default function SearchBar({ let location = useLocation(); const { searchTerm, setSearchTerm } = useSearch(); - const [foundTtsModels, setFoundTtsModels] = useState([]); + const [foundWeights, setFoundWeights] = useState([]); const [isLoading, setIsLoading] = useState(false); const isOnSearchPage = location.pathname.startsWith("/search"); @@ -48,15 +48,15 @@ export default function SearchBar({ let response = await SearchWeights(request); if (response.success) { - let models = [...response.models]; - setFoundTtsModels(models); + let weights = [...response.weights]; + setFoundWeights(weights); } else { - setFoundTtsModels([]); + setFoundWeights([]); } setIsLoading(false); }, - [setFoundTtsModels] + [setFoundWeights] ); useEffect(() => { @@ -104,8 +104,8 @@ export default function SearchBar({ /> {isFocused && !isOnSearchPage && ( diff --git a/packages/fakeyou.com/src/v2/view/PageContainer.tsx b/packages/fakeyou.com/src/v2/view/PageContainer.tsx index fd3c26352e..bc1b686b43 100644 --- a/packages/fakeyou.com/src/v2/view/PageContainer.tsx +++ b/packages/fakeyou.com/src/v2/view/PageContainer.tsx @@ -87,7 +87,6 @@ import VcModelDeletePage from "./pages/vc/vc_model_delete/VcModelDeletePage"; import TopNav from "components/layout/TopNav/TopNav"; import SideNav from "components/layout/SideNav/SideNav"; import MobileMenu from "components/layout/MobileMenu/MobileMenu"; -import TtsModelSearchPage from "./pages/tts/tts_model_search/TtsModelSearchPage"; import MediaPage from "./pages/media/MediaPage"; import { VoiceDesignerFormPage } from "./pages/voice_designer/VoiceDesignerFormPage"; import { VoiceDesignerMainPage } from "./pages/voice_designer/VoiceDesignerMainPage"; @@ -380,12 +379,6 @@ class PageContainer extends React.Component< - - - - diff --git a/packages/fakeyou.com/src/v2/view/pages/tts/tts_model_search/TtsModelSearchPage.tsx b/packages/fakeyou.com/src/v2/view/pages/tts/tts_model_search/TtsModelSearchPage.tsx deleted file mode 100644 index e4b2ad096b..0000000000 --- a/packages/fakeyou.com/src/v2/view/pages/tts/tts_model_search/TtsModelSearchPage.tsx +++ /dev/null @@ -1,117 +0,0 @@ -import React, { useCallback, useEffect, useState } from "react"; -import { SessionWrapper } from "@storyteller/components/src/session/SessionWrapper"; -import Container from "components/common/Container"; -import PageHeader from "components/layout/PageHeader"; -import { faClock, faMessageDots } from "@fortawesome/pro-solid-svg-icons"; -import ModelSearch from "components/common/ModelSearch"; -import Panel from "components/common/Panel"; -import ModelSearchResults from "components/common/ModelSearchResults"; -import ModelTags from "components/common/ModelTags"; -import Select from "components/common/Select"; -import { SearchTtsModels, TtsModel } from "@storyteller/components/src/api/tts/SearchTtsModels"; - -interface TtsModelSearchPageProps { - sessionWrapper: SessionWrapper; -} - -const allTags = [ - "English", - "Spanish", - "Portuguese", - "High-pitched", - "Low-pitched", - "Character", -]; - -export default function TtsModelSearchPage(props: TtsModelSearchPageProps) { - const [searchTerm, setSearchTerm] = useState(""); - const [foundTtsModels, setFoundTtsModels] = useState([]); - - let selectedTags : any = []; - let handleSelectTag = () => {}; - - const maybeSearch = useCallback(async ( - value: string - ) => { - setSearchTerm(value); - }, []); - - - const doSearch = useCallback(async ( - value: string - ) => { - let request = { - search_term: value, - } - - let response = await SearchTtsModels(request); - - if (response.success) { - let models = [...response.models]; - setFoundTtsModels(models); - } else { - setFoundTtsModels([]); - } - }, [setFoundTtsModels]); - - useEffect(() => { - doSearch(searchTerm); - }, [doSearch, searchTerm]) - - const searchTts = ( -
- - -
- ); - - const sortOptions = [ - { value: "most liked", label: "Most Liked" }, - { value: "most used", label: "Most Used" }, - { value: "moset recent", label: "Most Recent" }, - ]; - const sortTimeOptions = [ - { value: "all time", label: "All Time" }, - { value: "today", label: "Today" }, - { value: "this week", label: "This Week" }, - { value: "this month", label: "This Month" }, - ]; - - return ( - - - -
- -
- - {/**/} - -
-
- ); -} diff --git a/packages/fakeyou.com/src/v2/view/search/SearchPage.tsx b/packages/fakeyou.com/src/v2/view/search/SearchPage.tsx index 50653f2176..b2ae7e59b3 100644 --- a/packages/fakeyou.com/src/v2/view/search/SearchPage.tsx +++ b/packages/fakeyou.com/src/v2/view/search/SearchPage.tsx @@ -6,10 +6,8 @@ import Panel from "components/common/Panel"; import ModelSearchResults from "components/common/ModelSearchResults"; import ModelTags from "components/common/ModelTags"; import Select from "components/common/Select"; -import { - SearchTtsModels, - TtsModel, -} from "@storyteller/components/src/api/tts/SearchTtsModels"; +import { SearchWeights } from "@storyteller/components/src/api/weights/SearchWeights"; +import { Weight } from "@storyteller/components/src/api/weights/GetWeight"; import { useLocation } from "react-router-dom"; const allTags = [ @@ -22,7 +20,7 @@ const allTags = [ ]; export default function SearchPage() { - const [foundTtsModels, setFoundTtsModels] = useState([]); + const [foundWeights, setFoundWeights] = useState([]); const useQuery = () => { return new URLSearchParams(useLocation().search); @@ -34,16 +32,16 @@ export default function SearchPage() { search_term: value, }; - let response = await SearchTtsModels(request); + let response = await SearchWeights(request); if (response.success) { - let models = [...response.models]; - setFoundTtsModels(models); + let weights = [...response.weights]; + setFoundWeights(weights); } else { - setFoundTtsModels([]); + setFoundWeights([]); } }, - [setFoundTtsModels] + [setFoundWeights] ); const query = useQuery(); @@ -83,7 +81,7 @@ export default function SearchPage() { return ( {/**/} - + ); From d13a43a5ae6caef4f8977ab6b6314fa976785ff6 Mon Sep 17 00:00:00 2001 From: BFlat Date: Thu, 11 Jan 2024 20:34:36 +0700 Subject: [PATCH 4/4] audio card badge and cover image fix --- .../common/Card/AudioCard/AudioCard.tsx | 46 +++++++++++-------- .../useWeightTypeInfo/useWeightTypeInfo.tsx | 2 +- 2 files changed, 29 insertions(+), 19 deletions(-) diff --git a/packages/fakeyou.com/src/components/common/Card/AudioCard/AudioCard.tsx b/packages/fakeyou.com/src/components/common/Card/AudioCard/AudioCard.tsx index a64d5a4309..9362b54b5f 100644 --- a/packages/fakeyou.com/src/components/common/Card/AudioCard/AudioCard.tsx +++ b/packages/fakeyou.com/src/components/common/Card/AudioCard/AudioCard.tsx @@ -78,7 +78,7 @@ export default function AudioCard({ @@ -124,14 +124,17 @@ export default function AudioCard({ )}
- +
@@ -140,7 +143,9 @@ export default function AudioCard({ {type === "weights" && ( <>
- {showCover && } + {showCover && ( + + )}
@@ -189,13 +194,17 @@ export default function AudioCard({ )}
- +
diff --git a/packages/fakeyou.com/src/hooks/useWeightTypeInfo/useWeightTypeInfo.tsx b/packages/fakeyou.com/src/hooks/useWeightTypeInfo/useWeightTypeInfo.tsx index 23a3417ce8..f619d16b64 100644 --- a/packages/fakeyou.com/src/hooks/useWeightTypeInfo/useWeightTypeInfo.tsx +++ b/packages/fakeyou.com/src/hooks/useWeightTypeInfo/useWeightTypeInfo.tsx @@ -22,7 +22,7 @@ const weightTypeInfo: WeightTypeInfo = { color: "purple", fullLabel: "Stable Diffusion XL", }, - [WeightType.SVC]: { label: "SVC", color: "cyan", fullLabel: "SVC" }, + [WeightType.SVC]: { label: "SVC", color: "turquoise", fullLabel: "SVC" }, [WeightType.LORA]: { label: "LoRA", color: "pink", fullLabel: "LoRA" }, [WeightType.VALL_E]: { label: "VALL-E",