Better recent work/env/req logic

This commit is contained in:
Gregory Schier
2024-02-13 17:21:54 -08:00
parent 4e1700f8a4
commit f45c898be0
12 changed files with 138 additions and 102 deletions

View File

@@ -1,13 +1,10 @@
import { createBrowserRouter, Navigate, Outlet, RouterProvider, useParams } from 'react-router-dom';
import { useActiveEnvironmentId } from '../hooks/useActiveEnvironmentId';
import { routePaths, useAppRoutes } from '../hooks/useAppRoutes';
import { useHttpRequests } from '../hooks/useHttpRequests';
import { useRecentRequests } from '../hooks/useRecentRequests';
import { DialogProvider } from './DialogContext';
import { GlobalHooks } from './GlobalHooks';
import RouteError from './RouteError';
import Workspace from './Workspace';
import Workspaces from './Workspaces';
import { RedirectToLatestWorkspace } from './RedirectToLatestWorkspace';
const router = createBrowserRouter([
{
@@ -17,17 +14,17 @@ const router = createBrowserRouter([
children: [
{
path: '/',
element: <Navigate to={routePaths.workspaces()} replace={true} />,
element: <RedirectToLatestWorkspace />,
},
{
path: routePaths.workspaces(),
element: <Workspaces />,
element: <RedirectToLatestWorkspace />,
},
{
path: routePaths.workspace({
workspaceId: ':workspaceId',
}),
element: <WorkspaceOrRedirect />,
element: <Workspace />,
},
{
path: routePaths.request({
@@ -48,32 +45,6 @@ export function AppRouter() {
return <RouterProvider router={router} />;
}
function WorkspaceOrRedirect() {
const recentRequests = useRecentRequests();
const requests = useHttpRequests();
const request = requests.find((r) => r.id === recentRequests[0]);
const routes = useAppRoutes();
// Keep environment if it's in the query params
const environmentId = useActiveEnvironmentId() ?? undefined;
if (request === undefined) {
return <Workspace />;
}
const { id: requestId, workspaceId } = request;
return (
<Navigate
to={routes.paths.request({
workspaceId,
environmentId,
requestId,
})}
/>
);
}
function RedirectLegacyEnvironmentURLs() {
const routes = useAppRoutes();
const {