-
- {removeFileExtension(file.name)}
-
-
- {formatDate(file.modified)}
-
+
+
+

+
+
+ {removeFileExtension(file.fileName)}
+
+
+ {formatDate(file.modified)}
+
+
+
+
+
-
+
);
};
-export default FileCard;
+export default SuggestedFileCard;
diff --git a/client/src/components/home/SuggestedFilesGrid.tsx b/client/src/components/home/SuggestedFilesGrid.tsx
index 661b1ea..b933669 100644
--- a/client/src/components/home/SuggestedFilesGrid.tsx
+++ b/client/src/components/home/SuggestedFilesGrid.tsx
@@ -1,21 +1,22 @@
import React from "react";
-import FileCard from "./SuggestedFileCard";
+import SuggestedFileCard from "./SuggestedFileCard";
interface SuggestedFilesGridProps {
files: {
- name: string;
+ fileName: string;
created: string;
modified: string;
imagepath: string;
- mime: string;
+ mime_type: string;
}[];
+ refreshData: () => void;
}
-const SuggestedFilesGrid: React.FC
= ({ files }) => {
+const SuggestedFilesGrid: React.FC = ({ files, refreshData }) => {
return (
- {files.map((file, index) => (
-
+ {files.slice(0, 10).map((file, index) => (
+
))}
);
diff --git a/client/src/components/home/sections/Home.tsx b/client/src/components/home/sections/Home.tsx
index e6f91e1..64f5ab3 100644
--- a/client/src/components/home/sections/Home.tsx
+++ b/client/src/components/home/sections/Home.tsx
@@ -1,18 +1,19 @@
-import React, { FC, useState, useEffect } from "react";
+import React, { FC, useState, useEffect, useCallback} from "react";
import LoadingIndicator from "../../../components/home/LoadingIndicator";
import ErrorDisplay from "../../../components/home/ErrorDisplay";
import SuggestedFilesGrid from "../../../components/home/SuggestedFilesGrid";
import RecentFilesGrid from "../../../components/home/RecentFileGrid";
import RecentFilesTable from "../../../components/home/RecentFilesTable";
import ButtonGroup from "../../../components/home/ButtonGroup";
-import { getFilesFromAPI } from "../../../data/apiService";
+import axios from "axios";
interface File {
- name: string;
+ fileName: string;
created: string;
modified: string;
imagepath: string;
- mime: string;
+ mime_type: string;
+ size: number;
}
interface APIResponse {
@@ -25,19 +26,34 @@ const Home: FC = () => {
const [error, setError] = useState(null);
const [view, setView] = useState(2);
- useEffect(() => {
- const fetchData = async () => {
- try {
- const result: APIResponse = await getFilesFromAPI();
- setFiles(result.files);
+ const fetchData = useCallback(() => {
+ setLoading(true);
+ axios
+ .get("http://127.0.0.1:8000/api/directory", {
+ params: {
+ path: ".",
+ },
+ })
+ .then((response) => {
+ const directories = response.data.directories;
+ const requestedPath = ".";
+ if (directories && Array.isArray(directories[requestedPath])) {
+ setFiles(directories[requestedPath]);
+ } else {
+ setFiles([]);
+ setError("Unexpected response format.");
+ }
setLoading(false);
- } catch (error) {
- setError("Failed to fetch data");
+ })
+ .catch((err) => {
+ setError("Failed to fetch files.");
setLoading(false);
- }
- };
+ });
+ }, []);
+
+ useEffect(() => {
fetchData();
- }, []);
+ }, [fetchData]);
if (loading) {
return (
@@ -55,7 +71,7 @@ const Home: FC = () => {
@@ -64,7 +80,7 @@ const Home: FC = () => {
- {view === 1 ? : }
+ {view === 1 ? : }
);
diff --git a/client/src/pages/HomePage.tsx b/client/src/pages/HomePage.tsx
index af93179..e3b76d1 100644
--- a/client/src/pages/HomePage.tsx
+++ b/client/src/pages/HomePage.tsx
@@ -31,7 +31,7 @@ const HomePage: FC = () => {
};
return (
-