Skip to content

Commit 411a94b

Browse files
committed
[ui] save index tab in the url
1 parent d491ace commit 411a94b

File tree

1 file changed

+26
-11
lines changed

1 file changed

+26
-11
lines changed

quickwit/quickwit-ui/src/views/IndexView.tsx

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
import { TabContext, TabList, TabPanel } from "@mui/lab";
1616
import { Box, styled, Tab, Typography } from "@mui/material";
1717
import Link, { LinkProps } from "@mui/material/Link";
18-
import React, { useCallback, useEffect, useMemo, useState } from "react";
19-
import { Link as RouterLink, useParams } from "react-router";
18+
import { useCallback, useEffect, useMemo, useState } from "react";
19+
import { Link as RouterLink, useParams, useSearchParams } from "react-router";
2020
import ApiUrlFooter from "../components/ApiUrlFooter";
2121
import { IndexSummary } from "../components/IndexSummary";
2222
import { JsonEditor } from "../components/JsonEditor";
@@ -54,15 +54,30 @@ function IndexView() {
5454
const { indexId } = useParams();
5555
const [loading, setLoading] = useState(false);
5656
const [, setLoadingError] = useState<ErrorResult | null>(null);
57-
const [tab, setTab] = useState<
58-
| "summary"
59-
| "sources"
60-
| "doc-mapping"
61-
| "indexing-settings"
62-
| "search-settings"
63-
| "retention-settings"
64-
| "splits"
65-
>("summary");
57+
const [searchParams, setSearchParams] = useSearchParams();
58+
59+
const validTabs = [
60+
"summary",
61+
"sources",
62+
"doc-mapping",
63+
"indexing-settings",
64+
"search-settings",
65+
"retention-settings",
66+
"splits",
67+
] as const;
68+
69+
type TabValue = (typeof validTabs)[number];
70+
71+
const isValidTab = (value: string | null): value is TabValue => {
72+
return validTabs.includes(value as TabValue);
73+
};
74+
75+
const tabFromUrl = searchParams.get("tab");
76+
const tab = isValidTab(tabFromUrl) ? tabFromUrl : "summary";
77+
78+
const setTab = (newTab: TabValue) => {
79+
setSearchParams({ tab: newTab });
80+
};
6681
const [index, setIndex] = useState<Index>();
6782
const quickwitClient = useMemo(() => new Client(), []);
6883

0 commit comments

Comments
 (0)