feat(StatusPage): add file manager button for browsing files and update props for integration
This commit is contained in:
parent
a77971e58e
commit
0900b83c95
|
|
@ -57,6 +57,8 @@ export default function App() {
|
||||||
const [showSearch, setShowSearch] = useState(false);
|
const [showSearch, setShowSearch] = useState(false);
|
||||||
const [devicesOpenId, setDevicesOpenId] = useState<string | null>(null);
|
const [devicesOpenId, setDevicesOpenId] = useState<string | null>(null);
|
||||||
const [isFullscreen, setIsFullscreen] = useState(false);
|
const [isFullscreen, setIsFullscreen] = useState(false);
|
||||||
|
const [fileManagerInitialPath, setFileManagerInitialPath] = useState<string | undefined>(undefined);
|
||||||
|
const [fileManagerReturnPage, setFileManagerReturnPage] = useState<Page>('apps');
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const id = 'save-status';
|
const id = 'save-status';
|
||||||
|
|
@ -99,7 +101,7 @@ export default function App() {
|
||||||
};
|
};
|
||||||
|
|
||||||
const pages = {
|
const pages = {
|
||||||
status: <StatusPage config={config} setConfig={setConfig} />,
|
status: <StatusPage config={config} setConfig={setConfig} onOpenFileManager={(path) => { setFileManagerInitialPath(path); setFileManagerReturnPage('status'); setCurrentPage('file-manager'); }} />,
|
||||||
devices: <DevicesPage config={config} setConfig={setConfig} openDeviceId={devicesOpenId} onClearOpenDevice={() => setDevicesOpenId(null)} />,
|
devices: <DevicesPage config={config} setConfig={setConfig} openDeviceId={devicesOpenId} onClearOpenDevice={() => setDevicesOpenId(null)} />,
|
||||||
iec: <IECPage config={config} setConfig={setConfig} />,
|
iec: <IECPage config={config} setConfig={setConfig} />,
|
||||||
network: <NetworkPage config={config} setConfig={setConfig} />,
|
network: <NetworkPage config={config} setConfig={setConfig} />,
|
||||||
|
|
@ -163,7 +165,8 @@ export default function App() {
|
||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
'file-manager': <MediaManager
|
'file-manager': <MediaManager
|
||||||
onBack={() => setCurrentPage('apps')}
|
initialPath={fileManagerInitialPath}
|
||||||
|
onBack={() => setCurrentPage(fileManagerReturnPage)}
|
||||||
config={config}
|
config={config}
|
||||||
setConfig={setConfig}
|
setConfig={setConfig}
|
||||||
onNavigateToDevice={(id) => { setCurrentPage('devices'); setDevicesOpenId(id); }}
|
onNavigateToDevice={(id) => { setCurrentPage('devices'); setDevicesOpenId(id); }}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import { HardDrive, Activity, Wifi, Radio, Clock, RefreshCw, Loader2, Printer, Power, Computer, Download, Trash2, Eye } from 'lucide-react';
|
import { HardDrive, Activity, Wifi, Radio, Clock, RefreshCw, Loader2, Printer, Power, Computer, Download, Trash2, Eye, FolderOpen } from 'lucide-react';
|
||||||
import { listDirectory, deletePath, getFileContents, getWebDAVBaseUrl, humanFileSize, type EntryInfo } from '../webdav';
|
import { listDirectory, deletePath, getFileContents, getWebDAVBaseUrl, humanFileSize, type EntryInfo } from '../webdav';
|
||||||
import { toast } from 'sonner';
|
import { toast } from 'sonner';
|
||||||
import { MediaEntry } from './MediaEntry';
|
import { MediaEntry } from './MediaEntry';
|
||||||
|
|
@ -13,9 +13,10 @@ import { ConfirmDialog, type ConfirmOptions } from './ui/confirm-dialog';
|
||||||
interface StatusPageProps {
|
interface StatusPageProps {
|
||||||
config: any;
|
config: any;
|
||||||
setConfig: (config: any) => void;
|
setConfig: (config: any) => void;
|
||||||
|
onOpenFileManager?: (path: string) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function StatusPage({ config, setConfig }: StatusPageProps) {
|
export default function StatusPage({ config, setConfig, onOpenFileManager }: StatusPageProps) {
|
||||||
const { status: wsStatus, send: wsSend } = useWs();
|
const { status: wsStatus, send: wsSend } = useWs();
|
||||||
|
|
||||||
// Mock memory stats
|
// Mock memory stats
|
||||||
|
|
@ -159,7 +160,16 @@ export default function StatusPage({ config, setConfig }: StatusPageProps) {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</button>
|
</button>
|
||||||
<div className="w-2 h-2 rounded-full bg-green-500" />
|
<div className="flex items-center gap-2">
|
||||||
|
<button
|
||||||
|
onClick={() => onOpenFileManager?.(activeDevice.base_url || activeDevice.url || '/')}
|
||||||
|
className="p-2 rounded hover:bg-neutral-100"
|
||||||
|
title="Browse files"
|
||||||
|
>
|
||||||
|
<FolderOpen className="w-5 h-5 text-neutral-500" />
|
||||||
|
</button>
|
||||||
|
<div className="w-2 h-2 rounded-full bg-green-500" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{mediaSetFiles && (
|
{mediaSetFiles && (
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user