59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { IconButton, Tooltip } from "@mui/material";
 | 
						|
import { SolarEnergyRouteContainer } from "../widgets/SolarEnergyRouteContainer";
 | 
						|
import FileUploadIcon from "@mui/icons-material/FileUpload";
 | 
						|
import { UploadUpdateDialog } from "../dialogs/UploadUpdateDialog";
 | 
						|
import React from "react";
 | 
						|
import { OTAAPI } from "../api/OTAApi";
 | 
						|
import { AsyncWidget } from "../widgets/AsyncWidget";
 | 
						|
 | 
						|
export function OTARoute(): React.ReactElement {
 | 
						|
  const [list, setList] = React.useState<string[] | undefined>();
 | 
						|
  const load = async () => {
 | 
						|
    setList(await OTAAPI.SupportedPlatforms());
 | 
						|
  };
 | 
						|
 | 
						|
  return (
 | 
						|
    <AsyncWidget
 | 
						|
      loadKey={1}
 | 
						|
      ready={!!list}
 | 
						|
      load={load}
 | 
						|
      errMsg="Failed to load OTA screen!"
 | 
						|
      build={() => <_OTARoute platforms={list!} />}
 | 
						|
    />
 | 
						|
  );
 | 
						|
}
 | 
						|
 | 
						|
function _OTARoute(p: { platforms: Array<string> }): React.ReactElement {
 | 
						|
  const [showUploadDialog, setShowUploadDialog] = React.useState(false);
 | 
						|
 | 
						|
  const reload = async () => {
 | 
						|
    /*todo*/
 | 
						|
  };
 | 
						|
 | 
						|
  return (
 | 
						|
    <SolarEnergyRouteContainer
 | 
						|
      label="OTA"
 | 
						|
      actions={
 | 
						|
        <>
 | 
						|
          <Tooltip title="Upload a new update">
 | 
						|
            <IconButton onClick={() => setShowUploadDialog(true)}>
 | 
						|
              <FileUploadIcon />
 | 
						|
            </IconButton>
 | 
						|
          </Tooltip>
 | 
						|
        </>
 | 
						|
      }
 | 
						|
    >
 | 
						|
      {showUploadDialog && (
 | 
						|
        <UploadUpdateDialog
 | 
						|
          platforms={p.platforms}
 | 
						|
          onClose={() => setShowUploadDialog(false)}
 | 
						|
          onCreated={() => {
 | 
						|
            setShowUploadDialog(false);
 | 
						|
            reload();
 | 
						|
          }}
 | 
						|
        />
 | 
						|
      )}
 | 
						|
    </SolarEnergyRouteContainer>
 | 
						|
  );
 | 
						|
}
 |