diff --git a/app/ui/src/@types/bot.ts b/app/ui/src/@types/bot.ts index 1c6b9f02..a4186aba 100644 --- a/app/ui/src/@types/bot.ts +++ b/app/ui/src/@types/bot.ts @@ -23,6 +23,7 @@ export type BotSettings = { autoResetSession: boolean; autoSyncDataSources: boolean; internetSearchEnabled: boolean; + internalSearchEnabled: boolean; }; chatModel: { label: string; diff --git a/app/ui/src/Layout/BotLayout.tsx b/app/ui/src/Layout/BotLayout.tsx index a8dbbc99..d1dfa79e 100644 --- a/app/ui/src/Layout/BotLayout.tsx +++ b/app/ui/src/Layout/BotLayout.tsx @@ -9,49 +9,57 @@ import { PuzzlePieceIcon, EyeDropperIcon, ChatBubbleLeftRightIcon, - //MagnifyingGlassIcon, + MagnifyingGlassIcon, } from "@heroicons/react/24/outline"; import { Link, useParams, useLocation, useNavigate } from "react-router-dom"; import { useAuth } from "../context/AuthContext"; import { Tooltip } from "antd"; import { ApplicationMenu } from "./ApplicationMenu"; +import { useSettings } from "../hooks/useSettings"; const navigation = [ { name: "Playground", href: "/bot/:id", icon: SparklesIcon, + key: "playground", }, - // { - // name: "Search (Beta)", - // href: "/bot/:id/search", - // icon: MagnifyingGlassIcon, - // }, { name: "Data Sources", href: "/bot/:id/data-sources", icon: CircleStackIcon, + key: "data-sources", + }, + { + name: "Search (Beta)", + href: "/bot/:id/search", + icon: MagnifyingGlassIcon, + key: "search", }, { name: "Integrations", href: "/bot/:id/integrations", icon: PuzzlePieceIcon, + key: "integrations", }, { name: "Conversations", href: "/bot/:id/conversations", icon: ChatBubbleLeftRightIcon, + key: "conversations", }, { name: "Appearance", href: "/bot/:id/appearance", icon: EyeDropperIcon, + key: "appearance", }, { name: "Settings", href: "/bot/:id/settings", icon: CogIcon, + key: "settings", }, ]; @@ -75,6 +83,8 @@ export default function BotLayout({ const { isLogged } = useAuth(); + const settings = useSettings(); + React.useEffect(() => { if (!isLogged) { navigate("/login"); @@ -153,33 +163,41 @@ export default function BotLayout({
@@ -223,37 +241,46 @@ export default function BotLayout({
diff --git a/app/ui/src/Layout/BotPlaygroundLayout.tsx b/app/ui/src/Layout/BotPlaygroundLayout.tsx index d02450ed..e1aa93f5 100644 --- a/app/ui/src/Layout/BotPlaygroundLayout.tsx +++ b/app/ui/src/Layout/BotPlaygroundLayout.tsx @@ -9,49 +9,57 @@ import { EyeDropperIcon, SparklesIcon, ChatBubbleLeftRightIcon, - // MagnifyingGlassIcon, + MagnifyingGlassIcon, } from "@heroicons/react/24/outline"; import { Link, useParams, useLocation, useNavigate } from "react-router-dom"; import { useAuth } from "../context/AuthContext"; import { Tooltip } from "antd"; import { ApplicationMenu } from "./ApplicationMenu"; +import { useSettings } from "../hooks/useSettings"; const navigation = [ { name: "Playground", href: "/bot/:id", icon: SparklesIcon, + key: "playground", }, - // { - // name: "Search (Beta)", - // href: "/bot/:id/search", - // icon: MagnifyingGlassIcon, - // }, { name: "Data Sources", href: "/bot/:id/data-sources", icon: CircleStackIcon, + key: "data-sources", + }, + { + name: "Search (Beta)", + href: "/bot/:id/search", + icon: MagnifyingGlassIcon, + key: "search", }, { name: "Integrations", href: "/bot/:id/integrations", icon: PuzzlePieceIcon, + key: "integrations", }, { name: "Conversations", href: "/bot/:id/conversations", icon: ChatBubbleLeftRightIcon, + key: "conversations", }, { name: "Appearance", href: "/bot/:id/appearance", icon: EyeDropperIcon, + key: "appearance", }, { name: "Settings", href: "/bot/:id/settings", icon: CogIcon, + key: "settings", }, ]; @@ -72,6 +80,7 @@ export default function BotPlaygroundLayout({ const navigate = useNavigate(); const { isLogged } = useAuth(); + const settings = useSettings(); React.useEffect(() => { if (!isLogged) { @@ -151,33 +160,42 @@ export default function BotPlaygroundLayout({
@@ -193,34 +211,46 @@ export default function BotPlaygroundLayout({
diff --git a/app/ui/src/components/Bot/Search/index.tsx b/app/ui/src/components/Bot/Search/index.tsx index 5af07084..69cded54 100644 --- a/app/ui/src/components/Bot/Search/index.tsx +++ b/app/ui/src/components/Bot/Search/index.tsx @@ -8,13 +8,15 @@ import { ISearchResult } from "./types"; import { useMutation } from "@tanstack/react-query"; import { notification } from "antd"; import axios from "axios"; +import { useSettings } from "../../../hooks/useSettings"; +import { ExclamationTriangleIcon } from "@heroicons/react/24/outline"; export const BotSearchFeature = () => { const [searchQuery, setSearchQuery] = useState(""); const [defaultSearchBox, setDefaultSearchBox] = useState(true); const params = useParams<{ id: string }>(); const [data, setData] = useState([]); - + const { data: settings, status } = useSettings(); const onSearch = async (query: string) => { const res = await api.post(`/bot/${params.id}/search`, { query, @@ -36,7 +38,17 @@ export const BotSearchFeature = () => { }); }, }); - + if (status === "success" && !settings.internalSearchEnabled) { + return ( +
+ +

+ Internal search needs to be enabled by an admin in order to use this + feature. +

+
+ ); + } return (
diff --git a/app/ui/src/components/Bot/Settings/SettingsBody.tsx b/app/ui/src/components/Bot/Settings/SettingsBody.tsx index 108db2ac..7046cbcf 100644 --- a/app/ui/src/components/Bot/Settings/SettingsBody.tsx +++ b/app/ui/src/components/Bot/Settings/SettingsBody.tsx @@ -284,7 +284,6 @@ export const SettingsBody: React.FC = ({ /> - = ({ > - { const response = await api.get("/user/info"); return response.data as { isRegistrationAllowed: boolean; - + internalSearchEnabled: boolean; }; }, { suspense: true, + placeholderData: { + isRegistrationAllowed: false, + internalSearchEnabled: false, + }, } ); }; diff --git a/app/ui/src/routes/settings/application.tsx b/app/ui/src/routes/settings/application.tsx index f9f0a25f..379da533 100644 --- a/app/ui/src/routes/settings/application.tsx +++ b/app/ui/src/routes/settings/application.tsx @@ -30,6 +30,7 @@ export default function SettingsApplicationRoot() { ollamaURL: string; fileUploadSizeLimit: number; refetchDatasource: boolean; + internalSearchEnabled: boolean; }; }); @@ -184,6 +185,15 @@ export default function SettingsApplicationRoot() { > + + + +