Files
meshtastic-web/src/pages/Extensions/FileBrowser.tsx
T

48 lines
962 B
TypeScript

import { useEffect, useState } from "react";
export interface File {
nameModified: string;
name: string;
size: number;
}
export interface Files {
data: {
files: File[];
fileSystem: {
total: number;
used: number;
free: number;
};
};
status: string;
}
export const FileBrowser = (): JSX.Element => {
const [data, setData] = useState<Files>();
useEffect(() => {
void fetch("http://meshtastic.local/json/fs/browse/static").then(
async (res) => {
setData((await res.json()) as Files);
}
);
}, []);
return (
<div>
{data?.data.files.map((file) => (
<div key={file.name}>
<a
target="_blank"
rel="noopener noreferrer"
href={`http://meshtastic.local/${file.name.replace("static/", "")}`}
>
{file.name.replace("static/", "").replace(".gz", "")}
</a>
</div>
))}
</div>
);
};