Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 152c5b1

Browse files
fix(site): remove member-facing Models nav item (#28772) (#28781)
1 parent e25a7dd commit 152c5b1

6 files changed

Lines changed: 2 additions & 182 deletions

File tree

site/src/modules/dashboard/DashboardLayout.stories.tsx

Lines changed: 0 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,10 @@ import {
55
reactRouterParameters,
66
} from "storybook-addon-remix-react-router";
77
import { buildInfoKey } from "#/api/queries/buildInfo";
8-
import { chatModels } from "#/api/queries/chats";
98
import { deploymentStatsQueryKey } from "#/api/queries/deployment";
109
import { organizationsPermissions } from "#/api/queries/organizations";
1110
import { updateCheckQueryKey } from "#/api/queries/updateCheck";
1211
import type { UpdateCheckResponse } from "#/api/typesGenerated";
13-
import {
14-
MockChatModel,
15-
MockChatModelProviderDescriptor,
16-
} from "#/testHelpers/chatModels";
1712
import {
1813
MockBuildInfo,
1914
MockDefaultOrganization,
@@ -55,17 +50,6 @@ const mcpServersRouter = reactRouterParameters({
5550
],
5651
});
5752

58-
const modelSettingsRouter = reactRouterParameters({
59-
location: { path: "/" },
60-
routing: [
61-
{ path: "/", useStoryElement: true },
62-
{
63-
path: "/ai/settings/models",
64-
element: <h1>Organization models</h1>,
65-
},
66-
],
67-
});
68-
6953
const meta: Meta<typeof DashboardLayout> = {
7054
title: "modules/dashboard/DashboardLayout",
7155
component: DashboardLayout,
@@ -124,57 +108,6 @@ export const ForMember: Story = {
124108
},
125109
};
126110

127-
export const CustomOrganizationRoleCanOpenModels: Story = {
128-
parameters: {
129-
pixel: { matrix: pixelWithDesktop },
130-
user: MockUserMember,
131-
permissions: MockNoPermissions,
132-
reactRouter: modelSettingsRouter,
133-
queries: [
134-
{ key: buildInfoKey, data: MockBuildInfo },
135-
{ key: updateCheckQueryKey, data: MockUpdateCheck },
136-
{ key: deploymentStatsQueryKey, data: MockDeploymentStats },
137-
{
138-
key: organizationsPermissions([MockDefaultOrganization.id]).queryKey,
139-
data: {
140-
[MockDefaultOrganization.id]: {
141-
...MockNoOrganizationPermissions,
142-
viewChatModelConfigs: true,
143-
},
144-
},
145-
},
146-
],
147-
},
148-
play: openModels,
149-
};
150-
151-
export const ACLReadableMemberCanOpenModels: Story = {
152-
parameters: {
153-
pixel: { matrix: pixelWithDesktop },
154-
user: MockUserMember,
155-
permissions: MockNoPermissions,
156-
reactRouter: modelSettingsRouter,
157-
queries: [
158-
{ key: buildInfoKey, data: MockBuildInfo },
159-
{ key: updateCheckQueryKey, data: MockUpdateCheck },
160-
{ key: deploymentStatsQueryKey, data: MockDeploymentStats },
161-
{
162-
key: chatModels(MockDefaultOrganization.id).queryKey,
163-
data: {
164-
models: [
165-
{
166-
...MockChatModel,
167-
organization_id: MockDefaultOrganization.id,
168-
},
169-
],
170-
providers: [MockChatModelProviderDescriptor],
171-
},
172-
},
173-
],
174-
},
175-
play: openModels,
176-
};
177-
178111
export const CustomOrganizationRoleCanOpenMCPServers: Story = {
179112
parameters: {
180113
pixel: { matrix: pixelWithDesktop },
@@ -243,15 +176,3 @@ export const SkipToMainContent: Story = {
243176
await expect(main).toHaveFocus();
244177
},
245178
};
246-
247-
async function openModels({ canvasElement }: { canvasElement: HTMLElement }) {
248-
const user = userEvent.setup();
249-
const canvas = within(canvasElement);
250-
await expect(
251-
canvas.queryByRole("button", { name: "Admin settings" }),
252-
).not.toBeInTheDocument();
253-
await user.click(canvas.getByRole("link", { name: "Models" }));
254-
await expect(
255-
await canvas.findByRole("heading", { name: "Organization models" }),
256-
).toBeInTheDocument();
257-
}

site/src/modules/dashboard/Navbar/MobileMenu.stories.tsx

Lines changed: 1 addition & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import type { Meta, StoryObj } from "@storybook/react-vite";
22
import type { FC } from "react";
3-
import { expect, fn, userEvent, within } from "storybook/test";
4-
import { reactRouterParameters } from "storybook-addon-remix-react-router";
3+
import { fn, userEvent, within } from "storybook/test";
54
import {
65
MockPrimaryWorkspaceProxy,
76
MockProxyLatencies,
@@ -43,7 +42,6 @@ const meta: Meta<typeof MobileMenu> = {
4342
supportLinks: MockSupportLinks,
4443
onSignOut: fn(),
4544
isDefaultOpen: true,
46-
canViewModels: false,
4745
adminPermissions: {
4846
canViewDeployment: true,
4947
canViewOrganizations: true,
@@ -98,38 +96,6 @@ export const Member: Story = {
9896
},
9997
};
10098

101-
export const MemberWithModelAccess: Story = {
102-
parameters: {
103-
reactRouter: reactRouterParameters({
104-
location: { path: "/" },
105-
routing: [
106-
{ path: "/", useStoryElement: true },
107-
{
108-
path: "/ai/settings/models",
109-
element: <h1>Organization models</h1>,
110-
},
111-
],
112-
}),
113-
},
114-
args: {
115-
user: MockUserMember,
116-
adminPermissions: {},
117-
canViewModels: true,
118-
},
119-
play: async ({ canvasElement }) => {
120-
const user = userEvent.setup();
121-
const canvas = within(canvasElement);
122-
const body = within(canvasElement.ownerDocument.body);
123-
await expect(
124-
body.queryByRole("menuitem", { name: /admin settings/i }),
125-
).not.toBeInTheDocument();
126-
await user.click(body.getByRole("menuitem", { name: "Models" }));
127-
await expect(
128-
await canvas.findByRole("heading", { name: "Organization models" }),
129-
).toBeInTheDocument();
130-
},
131-
};
132-
13399
export const ProxySettings: Story = {
134100
play: async ({ canvasElement }) => {
135101
const user = userEvent.setup();

site/src/modules/dashboard/Navbar/MobileMenu.tsx

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ const itemStyles = {
4343

4444
type MobileMenuProps = {
4545
proxyContextValue?: ProxyContextValue;
46-
canViewModels: boolean;
4746
adminPermissions: AdminSettingsPermissions;
4847
user?: TypesGen.User;
4948
supportLinks?: readonly TypesGen.LinkConfig[];
@@ -53,7 +52,6 @@ type MobileMenuProps = {
5352

5453
export const MobileMenu: FC<MobileMenuProps> = ({
5554
adminPermissions,
56-
canViewModels,
5755
proxyContextValue,
5856
user,
5957
supportLinks,
@@ -89,11 +87,6 @@ export const MobileMenu: FC<MobileMenuProps> = ({
8987
<DropdownMenuItem asChild className={itemStyles.default}>
9088
<Link to="/agents">Agents</Link>
9189
</DropdownMenuItem>
92-
{canViewModels && (
93-
<DropdownMenuItem asChild className={itemStyles.default}>
94-
<Link to="/ai/settings/models">Models</Link>
95-
</DropdownMenuItem>
96-
)}
9790
<DropdownMenuSeparator />
9891
<ProxySettingsSub proxyContextValue={proxyContextValue} />
9992

site/src/modules/dashboard/Navbar/Navbar.tsx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import {
1010
canViewDeploymentSettings,
1111
} from "#/modules/permissions";
1212
import { useCanShareOrganizationMCPServers } from "#/pages/AISettingsPage/MCPServersPage/organizationSharing";
13-
import { useAccessibleModelOrganizations } from "#/pages/AISettingsPage/ModelsPage/organizationModels";
1413
import { useFeatureVisibility } from "../useFeatureVisibility";
1514
import { NavbarView } from "./NavbarView";
1615

@@ -22,8 +21,6 @@ export const Navbar: React.FC = () => {
2221
const { user: me, permissions, signOut } = useAuthenticated();
2322
const featureVisibility = useFeatureVisibility();
2423
const proxyContextValue = useProxy();
25-
const accessibleModelOrgsQuery =
26-
useAccessibleModelOrganizations(organizations);
2724
const canAccessAnyModel = canAccessAnyChatModelConfig(permissions);
2825

2926
const canViewDeployment = canViewDeploymentSettings(permissions);
@@ -51,8 +48,6 @@ export const Navbar: React.FC = () => {
5148
);
5249
const canViewAISettings =
5350
canViewSiteWideAISettings || organizationMCPSharing.canShare;
54-
const canViewModels =
55-
!canViewAISettings && accessibleModelOrgsQuery.organizations.length > 0;
5651
const canCreateChat = permissions.createChat;
5752

5853
const uniqueLinks = new Map<string, LinkConfig>();
@@ -76,7 +71,6 @@ export const Navbar: React.FC = () => {
7671
canViewAIBridge,
7772
canViewHealth,
7873
}}
79-
canViewModels={canViewModels}
8074
canCreateChat={canCreateChat}
8175
proxyContextValue={proxyContextValue}
8276
/>

site/src/modules/dashboard/Navbar/NavbarView.stories.tsx

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ const meta: Meta<typeof NavbarView> = {
7272
canViewAIBridge: true,
7373
canViewHealth: true,
7474
},
75-
canViewModels: false,
7675
canCreateChat: true,
7776
supportLinks: [],
7877
},
@@ -328,39 +327,6 @@ export const ForUserWithoutOrganization: Story = {
328327
},
329328
};
330329

331-
export const ForMemberWithModelAccess: Story = {
332-
parameters: {
333-
pixel: { matrix: pixelWithDesktop },
334-
reactRouter: reactRouterParameters({
335-
location: { path: "/" },
336-
routing: [
337-
{ path: "/", useStoryElement: true },
338-
{
339-
path: "/ai/settings/models",
340-
element: <h1>Organization models</h1>,
341-
},
342-
],
343-
}),
344-
},
345-
args: {
346-
user: MockUserMember,
347-
adminPermissions: {},
348-
canViewModels: true,
349-
canCreateChat: false,
350-
},
351-
play: async ({ canvasElement }) => {
352-
const user = userEvent.setup();
353-
const canvas = within(canvasElement);
354-
await expect(
355-
canvas.queryByRole("button", { name: "Admin settings" }),
356-
).not.toBeInTheDocument();
357-
await user.click(canvas.getByRole("link", { name: "Models" }));
358-
await expect(
359-
await canvas.findByRole("heading", { name: "Organization models" }),
360-
).toBeInTheDocument();
361-
},
362-
};
363-
364330
export const ForMember: Story = {
365331
args: {
366332
user: MockUserMember,

site/src/modules/dashboard/Navbar/NavbarView.tsx

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ interface NavbarViewProps {
3333
onSignOut: () => void;
3434
adminPermissions: AdminSettingsPermissions;
3535
canCreateChat: boolean;
36-
canViewModels: boolean;
3736
proxyContextValue?: ProxyContextValue;
3837
}
3938

@@ -50,7 +49,6 @@ export const NavbarView: FC<NavbarViewProps> = ({
5049
onSignOut,
5150
adminPermissions,
5251
canCreateChat,
53-
canViewModels,
5452
proxyContextValue,
5553
}) => {
5654
const prerelease = getPrereleaseFlag(buildInfo);
@@ -82,7 +80,6 @@ export const NavbarView: FC<NavbarViewProps> = ({
8280
<NavItems
8381
className="ml-4 hidden md:flex"
8482
user={user}
85-
canViewModels={canViewModels}
8683
canCreateChat={canCreateChat}
8784
/>
8885

@@ -148,7 +145,6 @@ export const NavbarView: FC<NavbarViewProps> = ({
148145
<div className="md:hidden">
149146
<MobileMenu
150147
proxyContextValue={proxyContextValue}
151-
canViewModels={canViewModels}
152148
adminPermissions={adminPermissions}
153149
user={user}
154150
supportLinks={supportLinks}
@@ -163,16 +159,10 @@ export const NavbarView: FC<NavbarViewProps> = ({
163159
interface NavItemsProps {
164160
className?: string;
165161
user: TypesGen.User;
166-
canViewModels: boolean;
167162
canCreateChat: boolean;
168163
}
169164

170-
const NavItems: FC<NavItemsProps> = ({
171-
className,
172-
user,
173-
canCreateChat,
174-
canViewModels,
175-
}) => {
165+
const NavItems: FC<NavItemsProps> = ({ className, user, canCreateChat }) => {
176166
const location = useLocation();
177167

178168
return (
@@ -197,16 +187,6 @@ const NavItems: FC<NavItemsProps> = ({
197187
Templates
198188
</NavLink>
199189
<TasksNavItem user={user} />
200-
{canViewModels && (
201-
<NavLink
202-
className={({ isActive }) =>
203-
cn(linkStyles.default, { [linkStyles.active]: isActive })
204-
}
205-
to="/ai/settings/models"
206-
>
207-
Models
208-
</NavLink>
209-
)}
210190
{canCreateChat && (
211191
<NavLink
212192
className={({ isActive }) => {

0 commit comments

Comments
 (0)