Recent requests/workspaces. Closes #1

This commit is contained in:
Gregory Schier
2023-10-28 18:46:54 -07:00
parent ac036ff814
commit 68fbb1a3ff
5 changed files with 101 additions and 8 deletions

View File

@@ -7,7 +7,7 @@ import RouteError from './RouteError';
import Workspace from './Workspace';
import Workspaces from './Workspaces';
import { DialogProvider } from './DialogContext';
import { useActiveEnvironmentId } from '../hooks/useActiveEnvironmentId';
import { useRecentEnvironments } from '../hooks/useRecentEnvironments';
const router = createBrowserRouter([
{
@@ -47,8 +47,8 @@ export function AppRouter() {
}
function WorkspaceOrRedirect() {
const environmentId = useActiveEnvironmentId();
const recentRequests = useRecentRequests();
const recentEnvironments = useRecentEnvironments();
const requests = useRequests();
const request = requests.find((r) => r.id === recentRequests[0]);
const routes = useAppRoutes();
@@ -57,12 +57,15 @@ function WorkspaceOrRedirect() {
return <Workspace />;
}
const environmentId = recentEnvironments[0];
const { id: requestId, workspaceId } = request;
return (
<Navigate
to={routes.paths.request({
workspaceId: request.workspaceId,
environmentId: environmentId ?? undefined,
requestId: request.id,
workspaceId,
environmentId,
requestId,
})}
/>
);

View File

@@ -10,8 +10,15 @@ import { DEFAULT_FONT_SIZE } from '../lib/constants';
import { NAMESPACE_NO_SYNC } from '../lib/keyValueStore';
import type { HttpRequest, HttpResponse, Model, Workspace } from '../lib/models';
import { modelsEq } from '../lib/models';
import { useRecentRequests } from '../hooks/useRecentRequests';
import { useRecentWorkspaces } from '../hooks/useRecentWorkspaces';
import { useRecentEnvironments } from '../hooks/useRecentEnvironments';
export function GlobalHooks() {
useRecentWorkspaces();
useRecentEnvironments();
useRecentRequests();
const queryClient = useQueryClient();
const { wasUpdatedExternally } = useRequestUpdateKey(null);

View File

@@ -2,15 +2,23 @@ import { Navigate } from 'react-router-dom';
import { useAppRoutes } from '../hooks/useAppRoutes';
import { useWorkspaces } from '../hooks/useWorkspaces';
import { Heading } from './core/Heading';
import { useRecentWorkspaces } from '../hooks/useRecentWorkspaces';
export default function Workspaces() {
const routes = useAppRoutes();
const recentWorkspaceIds = useRecentWorkspaces();
const workspaces = useWorkspaces();
const workspace = workspaces[0];
if (workspace === undefined) {
const loading = workspaces.length === 0 && recentWorkspaceIds.length === 0;
if (loading) {
return null;
}
const workspaceId = recentWorkspaceIds[0] ?? workspaces[0]?.id ?? null;
if (workspaceId === null) {
return <Heading>There are no workspaces</Heading>;
}
return <Navigate to={routes.paths.workspace({ workspaceId: workspace.id })} />;
return <Navigate to={routes.paths.workspace({ workspaceId })} />;
}