diff --git a/packages/components/src/api/MakeRequest.ts b/packages/components/src/api/MakeRequest.ts index 206c7e4a7f..1a0b25389e 100644 --- a/packages/components/src/api/MakeRequest.ts +++ b/packages/components/src/api/MakeRequest.ts @@ -14,9 +14,6 @@ interface RouteSetup { routingFunction: UrlRoutingFunction; } -//const formatUrl = (endpoint = "") => -// `${useSsl ? "https" : "http"}://${host + endpoint}`; - const METHOD_OMITS_BODY: { [key: string]: boolean } = { DELETE: false, GET: true, @@ -26,11 +23,10 @@ const METHOD_OMITS_BODY: { [key: string]: boolean } = { PUT: false, }; -const MakeRequest = (routeSetup: RouteSetup) : (urlRouteArgs: UrlRouteArgs, request: Request) => Promise => { - return async function(urlRouteArgs: UrlRouteArgs, request: Request) : Promise { - const endpoint = routeSetup.routingFunction(urlRouteArgs); +const MakeRequest = (routeSetup: RouteSetup) : (urlRouteArgs: UrlRouteArgs, request: Request, urlParams?: UrlParams) => Promise => { + return async function(urlRouteArgs: UrlRouteArgs, request: Request, urlParams?: any) : Promise { + const endpoint = `${ routeSetup.routingFunction(urlRouteArgs) }${ urlParams ? "?" + new URLSearchParams(urlParams) : "" }`; const method = routeSetup.method; - const methodOmitsBody = METHOD_OMITS_BODY[method] || false; return fetch(formatUrl(endpoint), { diff --git a/packages/components/src/api/_common/SharedFetchTypes.ts b/packages/components/src/api/_common/SharedFetchTypes.ts new file mode 100644 index 0000000000..7d257e67d3 --- /dev/null +++ b/packages/components/src/api/_common/SharedFetchTypes.ts @@ -0,0 +1,4 @@ +export interface Pagination { + current: number, + total_page_count: number +} \ No newline at end of file diff --git a/packages/components/src/api/media_files/GetMedia.ts b/packages/components/src/api/media_files/GetMedia.ts index a16d84c1e5..cc9f09c666 100644 --- a/packages/components/src/api/media_files/GetMedia.ts +++ b/packages/components/src/api/media_files/GetMedia.ts @@ -16,10 +16,10 @@ export interface GetMediaRequest {} export interface GetMediaResponse { success: boolean, - media_file?: MediaFile, + media_file?: MediaFile } -export const GetMedia = MakeRequest({ +export const GetMedia = MakeRequest({ method: "GET", routingFunction: (mediaFileToken: string) => `/v1/media_files/file/${mediaFileToken}`, }); \ No newline at end of file diff --git a/packages/components/src/api/media_files/GetMediaByUser.ts b/packages/components/src/api/media_files/GetMediaByUser.ts index 591fbfd622..340b623620 100644 --- a/packages/components/src/api/media_files/GetMediaByUser.ts +++ b/packages/components/src/api/media_files/GetMediaByUser.ts @@ -1,15 +1,21 @@ import MakeRequest from "../MakeRequest"; import { MediaFile } from "./GetMedia"; -// import { MediaFileType } from "../_common/enums/MediaFileType"; +import { MediaFileType } from "../_common/enums/MediaFileType"; +import { Pagination } from "../_common/SharedFetchTypes"; export interface GetMediaRequest {} -export interface GetMediaResponse { +export interface GetMediaListResponse { + pagination: Pagination, success: boolean, - results: MediaFile[], + results: MediaFile[] } -export const GetMediaByUser = MakeRequest({ +export interface GetMediaParams { + page_index: number, +} + +export const GetMediaByUser = MakeRequest({ method: "GET", routingFunction: (userToken: string) => `/v1/media_files/list/user/${userToken}`, }); \ No newline at end of file diff --git a/packages/components/src/api/voice_designer/inference/EnqueueTts.ts b/packages/components/src/api/voice_designer/inference/EnqueueTts.ts index cc25d069a2..2b3dbb1ebd 100644 --- a/packages/components/src/api/voice_designer/inference/EnqueueTts.ts +++ b/packages/components/src/api/voice_designer/inference/EnqueueTts.ts @@ -11,7 +11,7 @@ export interface EnqueueTtsResponse { inference_job_token: string, } -export const EnqueueTts = MakeRequest({ +export const EnqueueTts = MakeRequest({ method: "POST", routingFunction: () => "/v1/voice_designer/inference/enqueue_tts", }); diff --git a/packages/components/src/api/voice_designer/voice_dataset_samples/DeleteSample.ts b/packages/components/src/api/voice_designer/voice_dataset_samples/DeleteSample.ts index 555824999b..1a2e26a4d4 100644 --- a/packages/components/src/api/voice_designer/voice_dataset_samples/DeleteSample.ts +++ b/packages/components/src/api/voice_designer/voice_dataset_samples/DeleteSample.ts @@ -9,7 +9,7 @@ export interface DeleteSampleResponse { success: boolean } -export const DeleteSample = MakeRequest({ +export const DeleteSample = MakeRequest({ method: "DELETE", routingFunction: (sampleToken: string) => `/v1/voice_designer/sample/${ sampleToken }/delete`, }); diff --git a/packages/components/src/api/voice_designer/voice_dataset_samples/ListSamplesForDataset.ts b/packages/components/src/api/voice_designer/voice_dataset_samples/ListSamplesForDataset.ts index db7c6fe7f4..f75c8047e3 100644 --- a/packages/components/src/api/voice_designer/voice_dataset_samples/ListSamplesForDataset.ts +++ b/packages/components/src/api/voice_designer/voice_dataset_samples/ListSamplesForDataset.ts @@ -7,7 +7,7 @@ export interface ListSamplesForDatasetResponse { success: true } -export const ListSamplesForDataset = MakeRequest({ +export const ListSamplesForDataset = MakeRequest({ method: "GET", routingFunction: (datasetToken: string) => `/v1/voice_designer/sample/dataset/${ datasetToken }/list`, }); diff --git a/packages/components/src/api/voice_designer/voice_datasets/CreateDataset.ts b/packages/components/src/api/voice_designer/voice_datasets/CreateDataset.ts index f06cd5dfa2..a1908a8372 100644 --- a/packages/components/src/api/voice_designer/voice_datasets/CreateDataset.ts +++ b/packages/components/src/api/voice_designer/voice_datasets/CreateDataset.ts @@ -11,7 +11,7 @@ export interface CreateDatasetResponse { token: string, } -export const CreateDataset = MakeRequest({ +export const CreateDataset = MakeRequest({ method: "POST", routingFunction: () => "/v1/voice_designer/dataset/create", }); diff --git a/packages/components/src/api/voice_designer/voice_datasets/DeleteDataset.ts b/packages/components/src/api/voice_designer/voice_datasets/DeleteDataset.ts index f9557ff5c2..d39984511b 100644 --- a/packages/components/src/api/voice_designer/voice_datasets/DeleteDataset.ts +++ b/packages/components/src/api/voice_designer/voice_datasets/DeleteDataset.ts @@ -9,11 +9,7 @@ export interface DeleteDatasetResponse { success: boolean; } -export const DeleteDataset = MakeRequest< - string, - DeleteDatasetRequest, - DeleteDatasetResponse ->({ +export const DeleteDataset = MakeRequest({ method: "DELETE", routingFunction: (voiceToken: string) => `/v1/voice_designer/dataset/${voiceToken}/delete`, diff --git a/packages/components/src/api/voice_designer/voice_datasets/GetDataset.ts b/packages/components/src/api/voice_designer/voice_datasets/GetDataset.ts index 1018a3390e..730079bd68 100644 --- a/packages/components/src/api/voice_designer/voice_datasets/GetDataset.ts +++ b/packages/components/src/api/voice_designer/voice_datasets/GetDataset.ts @@ -17,11 +17,7 @@ export interface GetDatasetResponse { updated_at: Date; } -export const GetDataset = MakeRequest< - string, - GetDatasetRequest, - GetDatasetResponse ->({ +export const GetDataset = MakeRequest({ method: "GET", routingFunction: (datasetToken: string) => `/v1/voice_designer/dataset/${datasetToken}`, diff --git a/packages/components/src/api/voice_designer/voice_datasets/ListDatasetsBySession.ts b/packages/components/src/api/voice_designer/voice_datasets/ListDatasetsBySession.ts index 3032227b23..06ff96f0a6 100644 --- a/packages/components/src/api/voice_designer/voice_datasets/ListDatasetsBySession.ts +++ b/packages/components/src/api/voice_designer/voice_datasets/ListDatasetsBySession.ts @@ -1,9 +1,9 @@ import MakeRequest from "../../MakeRequest"; import { UserDetailsLight } from "../../_common/UserDetailsLight"; -export interface ListVoicesBySessionRequest {} +export interface ListDatasetsBySessionRequest {} -export interface ListVoicesBySessionResponse { +export interface ListDatasetsBySessionResponse { voice_token: string, title: string, @@ -17,7 +17,7 @@ export interface ListVoicesBySessionResponse { updated_at: Date, } -export const ListVoicesBySession = MakeRequest({ +export const ListDatasetsBySession = MakeRequest({ method: "GET", routingFunction: () => `/v1/voice_designer/dataset/session/list`, }); diff --git a/packages/components/src/api/voice_designer/voice_datasets/ListDatasetsByUser.ts b/packages/components/src/api/voice_designer/voice_datasets/ListDatasetsByUser.ts index c982d93edf..247f535e78 100644 --- a/packages/components/src/api/voice_designer/voice_datasets/ListDatasetsByUser.ts +++ b/packages/components/src/api/voice_designer/voice_datasets/ListDatasetsByUser.ts @@ -22,7 +22,7 @@ export interface ListDatasetsByUserResponse { datasets: Dataset[], } -export const ListDatasetsByUser = MakeRequest({ +export const ListDatasetsByUser = MakeRequest({ method: "GET", routingFunction: (userName: string) => `/v1/voice_designer/dataset/user/${ userName }/list`, }); diff --git a/packages/components/src/api/voice_designer/voice_datasets/UpdateDataset.ts b/packages/components/src/api/voice_designer/voice_datasets/UpdateDataset.ts index 0113381117..e57deb3cf6 100644 --- a/packages/components/src/api/voice_designer/voice_datasets/UpdateDataset.ts +++ b/packages/components/src/api/voice_designer/voice_datasets/UpdateDataset.ts @@ -10,7 +10,7 @@ export interface UpdateDatasetResponse { success: boolean, } -export const UpdateDataset = MakeRequest({ +export const UpdateDataset = MakeRequest({ method: "POST", routingFunction: (voiceToken: string) => `/v1/voice_designer/dataset/${ voiceToken }/update`, }); diff --git a/packages/components/src/api/voice_designer/voices/CreateVoice.ts b/packages/components/src/api/voice_designer/voices/CreateVoice.ts index e24a16fe51..404eac504f 100644 --- a/packages/components/src/api/voice_designer/voices/CreateVoice.ts +++ b/packages/components/src/api/voice_designer/voices/CreateVoice.ts @@ -10,7 +10,7 @@ export interface CreateVoiceResponse { inference_job_token: string, } -export const CreateVoice = MakeRequest({ +export const CreateVoice = MakeRequest({ method: "POST", routingFunction: () => "/v1/voice_designer/voice/create", }); diff --git a/packages/components/src/api/voice_designer/voices/DeleteVoice.ts b/packages/components/src/api/voice_designer/voices/DeleteVoice.ts index cc4e090bae..8ef26881b5 100644 --- a/packages/components/src/api/voice_designer/voices/DeleteVoice.ts +++ b/packages/components/src/api/voice_designer/voices/DeleteVoice.ts @@ -9,11 +9,7 @@ export interface DeleteVoiceResponse { success: boolean; } -export const DeleteVoice = MakeRequest< - string, - DeleteVoiceRequest, - DeleteVoiceResponse ->({ +export const DeleteVoice = MakeRequest({ method: "DELETE", routingFunction: (voiceToken: string) => `/v1/voice_designer/voice/${voiceToken}/delete`, diff --git a/packages/components/src/api/voice_designer/voices/GetVoice.ts b/packages/components/src/api/voice_designer/voices/GetVoice.ts index 869bba62ba..2369dd72ed 100644 --- a/packages/components/src/api/voice_designer/voices/GetVoice.ts +++ b/packages/components/src/api/voice_designer/voices/GetVoice.ts @@ -17,7 +17,7 @@ export interface GetVoiceResponse { updated_at: Date; } -export const GetVoice = MakeRequest({ +export const GetVoice = MakeRequest({ method: "GET", routingFunction: (voiceToken: string) => `/v1/voice_designer/voice/${voiceToken}`, diff --git a/packages/components/src/api/voice_designer/voices/ListVoicesBySession.ts b/packages/components/src/api/voice_designer/voices/ListVoicesBySession.ts index c7054855e9..36d08cb630 100644 --- a/packages/components/src/api/voice_designer/voices/ListVoicesBySession.ts +++ b/packages/components/src/api/voice_designer/voices/ListVoicesBySession.ts @@ -17,7 +17,7 @@ export interface ListVoicesBySessionResponse { updated_at: Date, } -export const ListVoicesBySession = MakeRequest({ +export const ListVoicesBySession = MakeRequest({ method: "GET", routingFunction: () => `/v1/voice_designer/voice/session/list`, }); diff --git a/packages/components/src/api/voice_designer/voices/ListVoicesByUser.ts b/packages/components/src/api/voice_designer/voices/ListVoicesByUser.ts index bbd7325bca..465f44fd81 100644 --- a/packages/components/src/api/voice_designer/voices/ListVoicesByUser.ts +++ b/packages/components/src/api/voice_designer/voices/ListVoicesByUser.ts @@ -22,7 +22,7 @@ export interface ListVoicesByUserResponse { voices: Voice[], } -export const ListVoicesByUser = MakeRequest({ +export const ListVoicesByUser = MakeRequest({ method: "GET", routingFunction: (userName: string) => `/v1/voice_designer/voice/user/${ userName }/list`, }); diff --git a/packages/components/src/api/voice_designer/voices/UpdateVoice.ts b/packages/components/src/api/voice_designer/voices/UpdateVoice.ts index 4aa800ab95..09439aecbf 100644 --- a/packages/components/src/api/voice_designer/voices/UpdateVoice.ts +++ b/packages/components/src/api/voice_designer/voices/UpdateVoice.ts @@ -10,7 +10,7 @@ export interface UpdateVoiceResponse { success: boolean, } -export const UpdateVoice = MakeRequest({ +export const UpdateVoice = MakeRequest({ method: "POST", routingFunction: (voiceToken: string) => `/v1/voice_designer/voice/${ voiceToken }/update`, }); diff --git a/packages/components/src/api/weights/GetWeight.ts b/packages/components/src/api/weights/GetWeight.ts index b574448113..2a69f6b291 100644 --- a/packages/components/src/api/weights/GetWeight.ts +++ b/packages/components/src/api/weights/GetWeight.ts @@ -22,7 +22,7 @@ export interface Weight { // media_file?: MediaFile, // } -// export const GetMedia = MakeRequest({ +// export const GetMedia = MakeRequest({ // method: "GET", // routingFunction: (mediaFileToken: string) => `/v1/media_files/file/${mediaFileToken}`, // }); 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 4323584c40..4532fbf091 100644 --- a/packages/fakeyou.com/src/components/common/Card/AudioCard/AudioCard.tsx +++ b/packages/fakeyou.com/src/components/common/Card/AudioCard/AudioCard.tsx @@ -16,6 +16,8 @@ interface AudioCardProps { export default function AudioCard({ data, type }: AudioCardProps) { const history = useHistory(); + // console.log("๐Ÿ™",data); + const handleCardClick = () => { if (type === "media") { history.push(`/media/${data.token}`); @@ -62,7 +64,7 @@ export default function AudioCard({ data, type }: AudioCardProps) {
- +
)} diff --git a/packages/fakeyou.com/src/components/common/Pagination/Pagination.tsx b/packages/fakeyou.com/src/components/common/Pagination/Pagination.tsx index 1b1f140720..3a9f53b63d 100644 --- a/packages/fakeyou.com/src/components/common/Pagination/Pagination.tsx +++ b/packages/fakeyou.com/src/components/common/Pagination/Pagination.tsx @@ -8,19 +8,13 @@ import ReactPaginate from "react-paginate"; import "./Pagination.scss"; interface PaginationComponentProps { - currentPage: number; - itemsPerPage: number; - totalItems: number; - onPageChange: (selectedItem: { selected: number }) => void; + currentPage: number, + onPageChange: (selectedItem: { selected: number }) => void, + pageCount: number } -export default function Pagination({ - itemsPerPage, - totalItems, - onPageChange, - currentPage, -}: PaginationComponentProps) { - const pageCount = Math.ceil(totalItems / itemsPerPage); +export default function Pagination({ currentPage, onPageChange, pageCount }: PaginationComponentProps) { + // const pageCount = Math.ceil(totalItems / itemsPerPage); return ( { getUser(username); }, [username, getUser]); diff --git a/packages/fakeyou.com/src/v2/view/pages/profile/profile_view/tabs/BookmarksTab.tsx b/packages/fakeyou.com/src/v2/view/pages/profile/profile_view/tabs/BookmarksTab.tsx index af4005d421..73ec3cbe59 100644 --- a/packages/fakeyou.com/src/v2/view/pages/profile/profile_view/tabs/BookmarksTab.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/profile/profile_view/tabs/BookmarksTab.tsx @@ -60,6 +60,12 @@ export default function BookmarksTab() { { value: "SDXL", label: "SD XL" }, ]; + const paginationProps = { + onPageChange: handlePageClick, + pageCount: 0, // replace with proper fecth value + currentPage: 0 // replace with proper fecth value + }; + const handleFilterChange = (option: any) => { const selectedOption = option as { value: string; label: string }; setSelectedFilter(selectedOption.value); @@ -106,12 +112,7 @@ export default function BookmarksTab() { /> )} - + {isLoading ? (
@@ -149,12 +150,7 @@ export default function BookmarksTab() { )}
- +
); diff --git a/packages/fakeyou.com/src/v2/view/pages/profile/profile_view/tabs/MediaTab.tsx b/packages/fakeyou.com/src/v2/view/pages/profile/profile_view/tabs/MediaTab.tsx index 63b82ac18c..1243c1f561 100644 --- a/packages/fakeyou.com/src/v2/view/pages/profile/profile_view/tabs/MediaTab.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/profile/profile_view/tabs/MediaTab.tsx @@ -1,33 +1,32 @@ import React, { useRef, useState } from "react"; import MasonryGrid from "components/common/MasonryGrid/MasonryGrid"; -import mockMediaData from "./mockMediaData"; +// import mockMediaData from "./mockMediaData"; import AudioCard from "components/common/Card/AudioCard"; import ImageCard from "components/common/Card/ImageCard"; import VideoCard from "components/common/Card/VideoCard"; import Select from "components/common/Select"; -import { - faArrowDownWideShort, - faFilter, -} from "@fortawesome/pro-solid-svg-icons"; +import { faArrowDownWideShort, faFilter } from "@fortawesome/pro-solid-svg-icons"; import AudioPlayerProvider from "components/common/AudioPlayer/AudioPlayerContext"; import SkeletonCard from "components/common/Card/SkeletonCard"; import Pagination from "components/common/Pagination"; +import useProfileRequests from "../../useProfileRequests"; + export default function MediaTab() { const gridContainerRef = useRef(null); - const [data] = useState(mockMediaData); const [isLoading] = useState(false); - const [currentPage, setCurrentPage] = useState(0); - const itemsPerPage = 10; + + const { mediaList, mediaPage, mediaPageChange, mediaPageCount } = useProfileRequests({ requestMedia: true }); const handlePageClick = (selectedItem: { selected: number }) => { - setCurrentPage(selectedItem.selected); + mediaPageChange(selectedItem.selected + 1); }; - const currentItems = data.slice( - currentPage * itemsPerPage, - (currentPage + 1) * itemsPerPage - ); + const paginationProps = { + onPageChange: handlePageClick, + pageCount: mediaPageCount - 1, + currentPage: mediaPage - 1 + }; const filterOptions = [ { value: "all", label: "All Media" }, @@ -59,12 +58,7 @@ export default function MediaTab() { isSearchable={false} />
- + {isLoading ? ( @@ -78,20 +72,20 @@ export default function MediaTab() { gridRef={gridContainerRef} onLayoutComplete={() => console.log("Layout complete!")} > - {currentItems.map((data, index) => { + {mediaList.map((data, index) => { let card; switch (data.media_type) { case "audio": - card = ; + card = ; break; case "image": - card = ; + card = ; break; case "video": - card = ; + card = ; break; default: - card =
Unsupported media type
; + card =
Unsupported media type
; } return (
@@ -104,12 +98,7 @@ export default function MediaTab() {
- +
); diff --git a/packages/fakeyou.com/src/v2/view/pages/profile/profile_view/tabs/WeightsTab.tsx b/packages/fakeyou.com/src/v2/view/pages/profile/profile_view/tabs/WeightsTab.tsx index 8d258e6e13..e2f0274bd9 100644 --- a/packages/fakeyou.com/src/v2/view/pages/profile/profile_view/tabs/WeightsTab.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/profile/profile_view/tabs/WeightsTab.tsx @@ -60,6 +60,12 @@ export default function WeightsTab() { { value: "SDXL", label: "SD XL" }, ]; + const paginationProps = { + onPageChange: handlePageClick, + pageCount: 0, // replace with proper fecth value + currentPage: 0 // replace with proper fecth value + }; + const handleFilterChange = (option: any) => { const selectedOption = option as { value: string; label: string }; setSelectedFilter(selectedOption.value); @@ -106,12 +112,7 @@ export default function WeightsTab() { /> )}
- + {isLoading ? (
@@ -149,12 +150,7 @@ export default function WeightsTab() { )}
- +
); diff --git a/packages/fakeyou.com/src/v2/view/pages/profile/useProfileRequests.tsx b/packages/fakeyou.com/src/v2/view/pages/profile/useProfileRequests.tsx index 9e48c52ba4..7c93836901 100644 --- a/packages/fakeyou.com/src/v2/view/pages/profile/useProfileRequests.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/profile/useProfileRequests.tsx @@ -1,5 +1,4 @@ import { useEffect, useState } from 'react'; - import { GetMediaByUser } from "@storyteller/components/src/api/media_files/GetMediaByUser"; import { MediaFile } from "@storyteller/components/src/api/media_files/GetMedia"; import { useSession } from "hooks"; @@ -7,24 +6,37 @@ import { useSession } from "hooks"; export default function useProfileRequests({ requestMedia = false }) { const { user } = useSession(); const [mediaList, mediaListSet] = useState([]); - const [mediaListStatus, datasetStatusSet] = useState(requestMedia ? 1 : 0); + const [mediaListStatus, mediaListStatusSet] = useState(requestMedia ? 1 : 0); + const [mediaPage,mediaPageSet] = useState(1); + const [mediaPageCount,mediaPageCountSet] = useState(0); + + const mediaPageChange = (page: number) => { + mediaPageSet(page); + mediaListStatusSet(1); + }; useEffect(() => { if (user && user.username) { if (mediaListStatus === 1) { - datasetStatusSet(2); - GetMediaByUser(user.username, {}).then((res) => { - datasetStatusSet(3); + mediaListStatusSet(2); + GetMediaByUser(user.username, {}, { page_index: mediaPage }).then((res) => { + mediaListStatusSet(3); console.log("๐Ÿงถ",res); - if (res.results) mediaListSet(res.results); + if (res.results && res.pagination) { + mediaPageCountSet(res.pagination.total_page_count) + mediaListSet(res.results); + } }); } } - }, [user, mediaListStatus]); + }, [user, mediaListStatus, mediaPage]); - console.log("๐Ÿ˜Ž",mediaList); + // console.log("๐Ÿ˜Ž",mediaList); return { - + mediaList, + mediaPage, + mediaPageChange, + mediaPageCount }; }; \ No newline at end of file