diff --git a/package-lock.json b/package-lock.json index 4d5e000..b22bb47 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,7 @@ "pre-commit": "^1.2.2", "ts-jest": "^29.1.1", "ts-node": "^10.9.1", - "turbo": "^1.10.7", + "turbo": "^1.10.12", "typescript": "^5.1.6" } }, @@ -14202,27 +14202,27 @@ } }, "node_modules/turbo": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/turbo/-/turbo-1.10.7.tgz", - "integrity": "sha512-xm0MPM28TWx1e6TNC3wokfE5eaDqlfi0G24kmeHupDUZt5Wd0OzHFENEHMPqEaNKJ0I+AMObL6nbSZonZBV2HA==", + "version": "1.10.12", + "resolved": "https://registry.npmjs.org/turbo/-/turbo-1.10.12.tgz", + "integrity": "sha512-WM3+jTfQWnB9W208pmP4oeehZcC6JQNlydb/ZHMRrhmQa+htGhWLCzd6Q9rLe0MwZLPpSPFV2/bN5egCLyoKjQ==", "dev": true, "hasInstallScript": true, "bin": { "turbo": "bin/turbo" }, "optionalDependencies": { - "turbo-darwin-64": "1.10.7", - "turbo-darwin-arm64": "1.10.7", - "turbo-linux-64": "1.10.7", - "turbo-linux-arm64": "1.10.7", - "turbo-windows-64": "1.10.7", - "turbo-windows-arm64": "1.10.7" + "turbo-darwin-64": "1.10.12", + "turbo-darwin-arm64": "1.10.12", + "turbo-linux-64": "1.10.12", + "turbo-linux-arm64": "1.10.12", + "turbo-windows-64": "1.10.12", + "turbo-windows-arm64": "1.10.12" } }, "node_modules/turbo-darwin-64": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-1.10.7.tgz", - "integrity": "sha512-N2MNuhwrl6g7vGuz4y3fFG2aR1oCs0UZ5HKl8KSTn/VC2y2YIuLGedQ3OVbo0TfEvygAlF3QGAAKKtOCmGPNKA==", + "version": "1.10.12", + "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-1.10.12.tgz", + "integrity": "sha512-vmDfGVPl5/aFenAbOj3eOx3ePNcWVUyZwYr7taRl0ZBbmv2TzjRiFotO4vrKCiTVnbqjQqAFQWY2ugbqCI1kOQ==", "cpu": [ "x64" ], @@ -14233,9 +14233,9 @@ ] }, "node_modules/turbo-darwin-arm64": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-1.10.7.tgz", - "integrity": "sha512-WbJkvjU+6qkngp7K4EsswOriO3xrNQag7YEGRtfLoDdMTk4O4QTeU6sfg2dKfDsBpTidTvEDwgIYJhYVGzrz9Q==", + "version": "1.10.12", + "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-1.10.12.tgz", + "integrity": "sha512-3JliEESLNX2s7g54SOBqqkqJ7UhcOGkS0ywMr5SNuvF6kWVTbuUq7uBU/sVbGq8RwvK1ONlhPvJne5MUqBCTCQ==", "cpu": [ "arm64" ], @@ -14246,9 +14246,9 @@ ] }, "node_modules/turbo-linux-64": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-1.10.7.tgz", - "integrity": "sha512-x1CF2CDP1pDz/J8/B2T0hnmmOQI2+y11JGIzNP0KtwxDM7rmeg3DDTtDM/9PwGqfPotN9iVGgMiMvBuMFbsLhg==", + "version": "1.10.12", + "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-1.10.12.tgz", + "integrity": "sha512-siYhgeX0DidIfHSgCR95b8xPee9enKSOjCzx7EjTLmPqPaCiVebRYvbOIYdQWRqiaKh9yfhUtFmtMOMScUf1gg==", "cpu": [ "x64" ], @@ -14259,9 +14259,9 @@ ] }, "node_modules/turbo-linux-arm64": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-1.10.7.tgz", - "integrity": "sha512-JtnBmaBSYbs7peJPkXzXxsRGSGBmBEIb6/kC8RRmyvPAMyqF8wIex0pttsI+9plghREiGPtRWv/lfQEPRlXnNQ==", + "version": "1.10.12", + "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-1.10.12.tgz", + "integrity": "sha512-K/ZhvD9l4SslclaMkTiIrnfcACgos79YcAo4kwc8bnMQaKuUeRpM15sxLpZp3xDjDg8EY93vsKyjaOhdFG2UbA==", "cpu": [ "arm64" ], @@ -14272,9 +14272,9 @@ ] }, "node_modules/turbo-windows-64": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-1.10.7.tgz", - "integrity": "sha512-7A/4CByoHdolWS8dg3DPm99owfu1aY/W0V0+KxFd0o2JQMTQtoBgIMSvZesXaWM57z3OLsietFivDLQPuzE75w==", + "version": "1.10.12", + "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-1.10.12.tgz", + "integrity": "sha512-7FSgSwvktWDNOqV65l9AbZwcoueAILeE4L7JvjauNASAjjbuzXGCEq5uN8AQU3U5BOFj4TdXrVmO2dX+lLu8Zg==", "cpu": [ "x64" ], @@ -14285,9 +14285,9 @@ ] }, "node_modules/turbo-windows-arm64": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-1.10.7.tgz", - "integrity": "sha512-D36K/3b6+hqm9IBAymnuVgyePktwQ+F0lSXr2B9JfAdFPBktSqGmp50JNC7pahxhnuCLj0Vdpe9RqfnJw5zATA==", + "version": "1.10.12", + "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-1.10.12.tgz", + "integrity": "sha512-gCNXF52dwom1HLY9ry/cneBPOKTBHhzpqhMylcyvJP0vp9zeMQQkt6yjYv+6QdnmELC92CtKNp2FsNZo+z0pyw==", "cpu": [ "arm64" ], diff --git a/package.json b/package.json index a53c87b..8582117 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "pre-commit": "^1.2.2", "ts-jest": "^29.1.1", "ts-node": "^10.9.1", - "turbo": "^1.10.7", + "turbo": "^1.10.12", "typescript": "^5.1.6" }, "keywords": [], diff --git a/packages/app/src/analysis/AnalysisPage.tsx b/packages/app/src/analysis/AnalysisPage.tsx index e1ea417..1055ec9 100644 --- a/packages/app/src/analysis/AnalysisPage.tsx +++ b/packages/app/src/analysis/AnalysisPage.tsx @@ -1,22 +1,39 @@ -import { FC, useEffect } from "react"; +import { Theme } from "@mui/material"; +import { FC, useCallback } from "react"; +import { useNavigate } from "react-router-dom"; +import { makeStyles } from "tss-react/mui"; import { AnalysisHeader } from "./components/AnalysisHeader"; -import { InputForm } from "./components/InputForm"; -import { clearAnalysisStore } from "./stores/analysis-store"; +import { AnalysisInputForm } from "./components/AnalysisInputForm"; const AnalysisPage: FC = () => { - useEffect(() => { - return () => { - // on unmount - clearAnalysisStore(); - }; - }, []); + const { classes } = useStyles(); + const navigate = useNavigate(); + + const handleAfterSubmit = useCallback( + (requestId: string) => { + navigate({ pathname: `/report/${requestId}` }); + }, + [navigate] + ); return (
- +
+ +
); }; export default AnalysisPage; + +const useStyles = makeStyles()((theme: Theme) => ({ + main: { + marginBlockStart: theme.spacing(3), + maxWidth: 620, + marginInline: "auto", + borderRadius: 15, + overflow: "hidden", + }, +})); diff --git a/packages/app/src/analysis/actions/analysis-actions.ts b/packages/app/src/analysis/actions/analysis-actions.ts index 490e125..c7c1a1d 100644 --- a/packages/app/src/analysis/actions/analysis-actions.ts +++ b/packages/app/src/analysis/actions/analysis-actions.ts @@ -1,5 +1,4 @@ import axios from "axios"; -import { NavigateFunction } from "react-router-dom"; import { Analysis, AnalysisType, @@ -11,7 +10,7 @@ import config from "../../config"; import { ReportStore } from "../../report/stores/fe-report-store"; import { AnalysisStore, AsyncState } from "../stores/analysis-store"; -export const startAnalysis = async (navigate: NavigateFunction) => { +export const startAnalysis = async () => { AnalysisStore.setState({ sending: AsyncState.Loading, }); @@ -32,8 +31,8 @@ export const startAnalysis = async (navigate: NavigateFunction) => { }, } ); - const requestId = report.data.requestId; - navigate({ pathname: `/report/${requestId}` }); + AnalysisStore.getState().reset(); + return report.data.requestId; } catch (err) { console.error(err); AnalysisStore.setState({ diff --git a/packages/app/src/analysis/components/AnalysisHeader.tsx b/packages/app/src/analysis/components/AnalysisHeader.tsx index c12067d..7534c20 100644 --- a/packages/app/src/analysis/components/AnalysisHeader.tsx +++ b/packages/app/src/analysis/components/AnalysisHeader.tsx @@ -36,11 +36,11 @@ const useStyles = makeStyles()((theme: Theme) => ({ avatar: { marginInlineStart: -20, width: 140, - height: 130, + height: "14vh", }, title: { marginBlockStart: theme.spacing(1), - fontSize: 50, + fontSize: "clamp(30px, 5vw, 50px)", fontWeight: 800, letterSpacing: 0.3, }, diff --git a/packages/app/src/analysis/components/InputForm.tsx b/packages/app/src/analysis/components/AnalysisInputForm.tsx similarity index 59% rename from packages/app/src/analysis/components/InputForm.tsx rename to packages/app/src/analysis/components/AnalysisInputForm.tsx index 0add499..3240b76 100644 --- a/packages/app/src/analysis/components/InputForm.tsx +++ b/packages/app/src/analysis/components/AnalysisInputForm.tsx @@ -1,16 +1,22 @@ import { Alert, Paper, Tab, Tabs, Theme } from "@mui/material"; -import { FC } from "react"; +import { FC, useCallback } from "react"; +import { useNavigate } from "react-router-dom"; import { AnalysisType, OneOfValues } from "shared-types"; import { makeStyles } from "tss-react/mui"; +import { initProgress } from "../../report/actions/init-report-action"; +import { startAnalysis } from "../actions/analysis-actions"; import { AnalysisStore, useAnalysisStore } from "../stores/analysis-store"; import { AnalysisTabPanel } from "./AnalysisTabPanel"; import { CodeSnippetForm } from "./CodeSnippetForm"; import { FileUploadForm } from "./FileUploadForm"; import { RepositoryForm } from "./RepositoryForm"; -export const InputForm: FC = () => { +export const AnalysisInputForm: FC = ({ + onAfterSubmit, +}) => { const { classes } = useStyles(); const { sending, inputType } = useAnalysisStore(); + const navigate = useNavigate(); const handleFormTypeChange = ( _: unknown, @@ -19,8 +25,14 @@ export const InputForm: FC = () => { AnalysisStore.setState({ inputType: newInputType }); }; + const handleSubmit = useCallback(async () => { + const requestId = await startAnalysis(); + initProgress(requestId, navigate); + onAfterSubmit(requestId); + }, [onAfterSubmit, navigate]); + return ( - +
{
-
- {sending === "error" && ( - - Unable to start scanning, please try again later - - )} - - - - - - - - - -
+ {sending === "error" && ( + + Unable to start scanning, please try again later + + )} + + + + + + + + +
); @@ -70,7 +80,6 @@ export const InputForm: FC = () => { const useStyles = makeStyles()((theme: Theme) => ({ inputForm: { - marginBlockStart: theme.spacing(3), textAlign: "center", transition: theme.transitions.create("all"), display: "flex", @@ -81,8 +90,7 @@ const useStyles = makeStyles()((theme: Theme) => ({ : `0px 0px 10px 10px #00000010`, width: "100%", marginInline: "auto", - minHeight: 200, - maxWidth: 620, + minHeight: 280, }, tabsContainer: { borderBottom: 1, @@ -100,3 +108,11 @@ const useStyles = makeStyles()((theme: Theme) => ({ position: "relative", }, })); + +interface AnalysisInputFormProps { + onAfterSubmit(requestId: string): void; +} + +export interface AnalysisFormProps { + onSubmit(): void; +} diff --git a/packages/app/src/analysis/components/AnalysisTabPanel.tsx b/packages/app/src/analysis/components/AnalysisTabPanel.tsx index 7bda66b..e913747 100644 --- a/packages/app/src/analysis/components/AnalysisTabPanel.tsx +++ b/packages/app/src/analysis/components/AnalysisTabPanel.tsx @@ -11,8 +11,8 @@ export const AnalysisTabPanel: FC> = (