From fecae9d6260464d07185f59eb287135fd2dee2ee Mon Sep 17 00:00:00 2001 From: victorAnumudu Date: Mon, 5 Jan 2026 14:37:19 +0100 Subject: [PATCH] file list refresh and scroll bar added --- src/component/mymedia/MyMedia.js | 133 ++++++++++++++++++++++--------- src/services/services.js | 10 ++- 2 files changed, 102 insertions(+), 41 deletions(-) diff --git a/src/component/mymedia/MyMedia.js b/src/component/mymedia/MyMedia.js index 347aeae..a1a5ca3 100644 --- a/src/component/mymedia/MyMedia.js +++ b/src/component/mymedia/MyMedia.js @@ -1,16 +1,21 @@ import React from "react"; import BreadcrumbComBS from "../breadcrumb/BreadcrumbComBS"; import {useState, useRef} from "react"; -import {useQuery} from "@tanstack/react-query"; +import {useQuery, useMutation, useQueryClient} from "@tanstack/react-query"; import queryKeys from "../../services/queryKeys"; -import {getMediaFileList} from "../../services/services"; +import {getMediaFileList, uploadFile} from "../../services/services"; import getImage from "../../utils/getImage"; + export default function MyMedia() { + + const queryClient = useQueryClient() + const basePath = process.env.REACT_APP_MAIN_API const [selectedFile, setSelectedFile] = useState(null); const [message, setMessage] = useState(''); - + const [imageLink, setImageLink] = useState('') +console.log('imageLink', imageLink) // Function to handle file selection const handleFileChange = (event) => { setSelectedFile(event.target.files[0]); @@ -18,7 +23,7 @@ export default function MyMedia() { }; // Function to handle the upload to the API - const handleUpload = async () => { + const _handleUpload = async () => { if (!selectedFile) { setMessage('Please select a file first!'); return; @@ -55,6 +60,41 @@ export default function MyMedia() { } } + const uploadFileMutation = useMutation({ + mutationFn: (fields) => { + if(!fields.file){ + throw({message: 'Please select a file first!'}) + } + return uploadFile(fields) + }, + onSuccess: (res) => { + // console.log('res', res.data) + // if(res.data.resultCode != '0' || !res?.data?.pending_uid){ + // throw({message: res?.data?.resultDescription}) + // } + setSelectedFile(null) + queryClient.refetchQueries({ + queryKey: [...queryKeys.my_files], + // type: 'active', + // exact: true, + }) + }, + onSettled: () => { + setTimeout(()=>{ + uploadFileMutation.reset() + }, 3000) + } + }) + + const handleUpload = () => { + let reqData = { + token: localStorage.getItem("token"), // USER TOKEN + member_uid: localStorage.getItem("uid"), // USER UID + file: selectedFile + }; + // console.log(reqData) + uploadFileMutation.mutate(reqData) + } const {data, isFetching, isError, error} = useQuery({ queryKey: queryKeys.my_files, @@ -101,13 +141,14 @@ export default function MyMedia() {
<> - {message &&

{message}

} + {/* {message &&

{message}

} */} +

{uploadFileMutation.isPending ? 'uploading...' : uploadFileMutation.isError ? uploadFileMutation?.error?.message : uploadFileMutation.isSuccess ? 'File Uploaded' : ''}

@@ -120,7 +161,7 @@ export default function MyMedia() {
-
+
@@ -128,36 +169,49 @@ export default function MyMedia() {
-
- {mediaFileList && mediaFileList?.file_list && mediaFileList?.file_list.map((item, index) => { - const file_url = (mediaFileList?.media_server + "/" + item?.file_group + "/" + item?.file_uid + "/" + item.filename).toLowerCase(); - const avtarImage = - item?.file_type === undefined - ? "icons/01.png" - : "icons/" + item.file_type + ".png"; - return (
-
- {`${item.file_type}`}/ -
-

{item.filename}

+ {isFetching ? + <> +
+

Loading...

+
+ + : isError ? +
+

{error?.message}

+
+ : +
+ {mediaFileList && mediaFileList?.file_list && mediaFileList?.file_list.map((item, index) => { + const file_url = (mediaFileList?.media_server + "/" + item?.file_group + "/" + item?.file_uid + "/" + item.filename).toLowerCase(); + const avtarImage = + item?.file_type === undefined + ? "icons/01.png" + : "icons/" + item.file_type + ".png"; + return (
+
setImageLink(file_url)} style={{cursor: 'pointer'}}> + {`${item.file_type}`}/ +
+

{item.filename}

+
+ +
- -
-
) - }) - } -
+
) + }) + } +
+ }
@@ -167,9 +221,10 @@ export default function MyMedia() {

Preview

-
- - +
+ {imageLink && + file-image + }
diff --git a/src/services/services.js b/src/services/services.js index 2f5aac7..637dba1 100644 --- a/src/services/services.js +++ b/src/services/services.js @@ -1,10 +1,9 @@ import axios from "axios" - axios.interceptors.request.use( config => { config.headers = { - Accept: "application/json", + // Accept: "application/json", "Access-Control-Allow-Origin": "*", // "Access-Control-Expose-Headers": "Access-Control-Allow-Origin", // "Access-Control-Allow-Headers": "Origin, X-API-KEY, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method, Access-Control-Allow-Headers, Authorization, observe, enctype, Content-Length, X-Csrf-Token", @@ -284,6 +283,13 @@ export const getMediaFileList = (reqData) => { return postAuxEnd(`/panel/account/media-files`, postData, false) } +export const uploadFile = (reqData) => { + let postData = { + ...reqData, + } + return postAuxEnd(`/upload/webfiles`, postData, true) +} + export const getReportsTopicsList = (reqData) => { let postData = { ...reqData, -- 2.34.1