{currentAssistant?._source?.icon?.startsWith("font_") ? (
)}
+
{!hasFeature.includes("search") && !hasFeature.includes("think") ? (
diff --git a/src/hooks/useFeatureControl.ts b/src/hooks/useFeatureControl.ts
new file mode 100644
index 00000000..f3bba97b
--- /dev/null
+++ b/src/hooks/useFeatureControl.ts
@@ -0,0 +1,33 @@
+import { useState, useEffect } from "react";
+
+import { useConnectStore } from "@/stores/connectStore";
+
+interface UseFeatureControlProps {
+ initialFeatures: string[];
+ featureToToggle: string;
+ condition: (assistant: any) => boolean;
+}
+
+export const useFeatureControl = ({
+ initialFeatures,
+ featureToToggle,
+ condition,
+}: UseFeatureControlProps) => {
+ const currentAssistant = useConnectStore((state) => state.currentAssistant);
+ const [features, setFeatures] = useState
(initialFeatures);
+
+ useEffect(() => {
+ if (condition(currentAssistant)) {
+ setFeatures((prev) => prev.filter((feature) => feature !== featureToToggle));
+ } else {
+ setFeatures((prev) => {
+ if (!prev.includes(featureToToggle)) {
+ return [...prev, featureToToggle];
+ }
+ return prev;
+ });
+ }
+ }, [currentAssistant?._id, featureToToggle]);
+
+ return features;
+};
\ No newline at end of file
diff --git a/src/pages/chat/index.tsx b/src/pages/chat/index.tsx
index 76007d13..6327178a 100644
--- a/src/pages/chat/index.tsx
+++ b/src/pages/chat/index.tsx
@@ -30,6 +30,7 @@ import {
import { DataSource } from "@/types/commands";
import HistoryList from "@/components/Common/HistoryList";
import { useSyncStore } from "@/hooks/useSyncStore";
+import { useFeatureControl } from "@/hooks/useFeatureControl";
interface ChatProps {}
@@ -261,6 +262,12 @@ export default function Chat({}: ChatProps) {
await delete_session_chat(currentService.id, id);
};
+ const hasFeature = useFeatureControl({
+ initialFeatures: ["think", "search"],
+ featureToToggle: "think",
+ condition: (item) => item?._source?.type === "simple"
+ });
+
return (
@@ -331,6 +338,7 @@ export default function Chat({}: ChatProps) {
openFileDialog={openFileDialog}
getFileMetadata={getFileMetadata}
getFileIcon={getFileIcon}
+ hasFeature={hasFeature}
/>
diff --git a/src/pages/main/index.tsx b/src/pages/main/index.tsx
index 0bc8beee..d8388ac7 100644
--- a/src/pages/main/index.tsx
+++ b/src/pages/main/index.tsx
@@ -4,6 +4,7 @@ import SearchChat from "@/components/SearchChat";
import platformAdapter from "@/utils/platformAdapter";
import { useAppStore } from "@/stores/appStore";
import { useSyncStore } from "@/hooks/useSyncStore";
+import { useFeatureControl } from "@/hooks/useFeatureControl";
function MainApp() {
const setIsTauri = useAppStore((state) => state.setIsTauri);
@@ -55,6 +56,12 @@ function MainApp() {
useSyncStore();
+ const hasFeature = useFeatureControl({
+ initialFeatures: ["think", "search"],
+ featureToToggle: "think",
+ condition: (item) => item?._source?.type === "simple"
+ });
+
return (
);
}
diff --git a/src/pages/web/index.tsx b/src/pages/web/index.tsx
index 40e433c8..9169033f 100644
--- a/src/pages/web/index.tsx
+++ b/src/pages/web/index.tsx
@@ -6,6 +6,7 @@ import { Get } from "@/api/axiosRequest";
import { useShortcutsStore } from "@/stores/shortcutsStore";
import { useIsMobile } from '@/hooks/useIsMobile';
import { useModifierKeyPress } from "@/hooks/useModifierKeyPress";
+import { useFeatureControl } from "@/hooks/useFeatureControl";
import "@/i18n";
import "@/web.css";
@@ -125,6 +126,12 @@ function WebApp({
const [isChatMode, setIsChatMode] = useState(false);
+ const hasFeatureCopy = useFeatureControl({
+ initialFeatures: hasFeature,
+ featureToToggle: "think",
+ condition: (item) => item?._source?.type === "simple"
+ });
+
return (