Skip to content

Commit 3beb4a0

Browse files
committed
added reload to base URL when FF is turned off
1 parent 825a040 commit 3beb4a0

File tree

3 files changed

+26
-2
lines changed

3 files changed

+26
-2
lines changed

ui/litellm-dashboard/src/app/(dashboard)/layout.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ export default function Layout({ children }: { children: React.ReactNode }) {
6363
/>
6464
<div className="flex flex-1 overflow-auto">
6565
<div className="mt-2">
66-
<Sidebar2 defaultSelectedKey={page} setPage={updatePage} accessToken={accessToken} userRole={userRole} />
66+
<Sidebar2 defaultSelectedKey={page} accessToken={accessToken} userRole={userRole} />
6767
</div>
6868
<main className="flex-1">{children}</main>
6969
</div>

ui/litellm-dashboard/src/app/page.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import ModelHubTable from "@/components/model_hub_table";
2323
import NewUsagePage from "@/components/new_usage";
2424
import APIRef from "@/components/api_ref";
2525
import ChatUI from "@/components/chat_ui/ChatUI";
26-
import Sidebar from "@/components/leftnav";
2726
import Usage from "@/components/usage";
2827
import CacheDashboard from "@/components/cache_dashboard";
2928
import { getUiConfig, proxyBaseUrl, setGlobalLitellmHeaderName } from "@/components/networking";

ui/litellm-dashboard/src/hooks/useFeatureFlags.tsx

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
"use client";
2+
3+
const getBasePath = () => {
4+
const raw = process.env.NEXT_PUBLIC_BASE_URL ?? "";
5+
const trimmed = raw.replace(/^\/+|\/+$/g, ""); // strip leading/trailing slashes
6+
return trimmed ? `/${trimmed}/` : "/"; // ensure trailing slash
7+
};
8+
29
import React, { createContext, useContext, useEffect, useState } from "react";
10+
import { useRouter } from "next/navigation"; // ⟵ add this
311

412
type Flags = {
513
refactoredUIFlag: boolean;
@@ -48,6 +56,8 @@ function writeFlagSafely(v: boolean) {
4856
}
4957

5058
export const FeatureFlagsProvider = ({ children }: { children: React.ReactNode }) => {
59+
const router = useRouter(); // ⟵ add this
60+
5161
// Lazy init reads from localStorage only on the client
5262
const [refactoredUIFlag, setRefactoredUIFlagState] = useState<boolean>(() => readFlagSafely());
5363

@@ -73,6 +83,21 @@ export const FeatureFlagsProvider = ({ children }: { children: React.ReactNode }
7383
return () => window.removeEventListener("storage", onStorage);
7484
}, []);
7585

86+
// Redirect to base path the moment the flag is OFF.
87+
useEffect(() => {
88+
if (refactoredUIFlag) return; // only act when turned off
89+
90+
const base = getBasePath();
91+
const normalize = (p: string) => (p.endsWith("/") ? p : p + "/");
92+
const current = normalize(window.location.pathname);
93+
94+
// Avoid a redirect loop if we're already at the base path.
95+
if (current !== base) {
96+
// Replace so the "off" redirect doesn't pollute history.
97+
router.replace(base);
98+
}
99+
}, [refactoredUIFlag, router]);
100+
76101
return (
77102
<FeatureFlagsCtx.Provider value={{ refactoredUIFlag, setRefactoredUIFlag }}>{children}</FeatureFlagsCtx.Provider>
78103
);

0 commit comments

Comments
 (0)