mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-04-30 11:26:24 +02:00
feat: add public chat links settings page
This commit is contained in:
parent
ea2dd20a78
commit
67f797232e
4 changed files with 29 additions and 2 deletions
|
|
@ -6,6 +6,7 @@ import {
|
||||||
Brain,
|
Brain,
|
||||||
ChevronRight,
|
ChevronRight,
|
||||||
FileText,
|
FileText,
|
||||||
|
Globe,
|
||||||
type LucideIcon,
|
type LucideIcon,
|
||||||
Menu,
|
Menu,
|
||||||
MessageSquare,
|
MessageSquare,
|
||||||
|
|
@ -16,6 +17,7 @@ import { AnimatePresence, motion } from "motion/react";
|
||||||
import { useParams, useRouter } from "next/navigation";
|
import { useParams, useRouter } from "next/navigation";
|
||||||
import { useTranslations } from "next-intl";
|
import { useTranslations } from "next-intl";
|
||||||
import { useCallback, useEffect, useState } from "react";
|
import { useCallback, useEffect, useState } from "react";
|
||||||
|
import { PublicChatSnapshotsManager } from "@/components/public-chat-snapshots/public-chat-snapshots-manager";
|
||||||
import { GeneralSettingsManager } from "@/components/settings/general-settings-manager";
|
import { GeneralSettingsManager } from "@/components/settings/general-settings-manager";
|
||||||
import { LLMRoleManager } from "@/components/settings/llm-role-manager";
|
import { LLMRoleManager } from "@/components/settings/llm-role-manager";
|
||||||
import { ModelConfigManager } from "@/components/settings/model-config-manager";
|
import { ModelConfigManager } from "@/components/settings/model-config-manager";
|
||||||
|
|
@ -56,6 +58,12 @@ const settingsNavItems: SettingsNavItem[] = [
|
||||||
descriptionKey: "nav_system_instructions_desc",
|
descriptionKey: "nav_system_instructions_desc",
|
||||||
icon: MessageSquare,
|
icon: MessageSquare,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: "public-links",
|
||||||
|
labelKey: "nav_public_links",
|
||||||
|
descriptionKey: "nav_public_links_desc",
|
||||||
|
icon: Globe,
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
function SettingsSidebar({
|
function SettingsSidebar({
|
||||||
|
|
@ -276,6 +284,9 @@ function SettingsContent({
|
||||||
{activeSection === "models" && <ModelConfigManager searchSpaceId={searchSpaceId} />}
|
{activeSection === "models" && <ModelConfigManager searchSpaceId={searchSpaceId} />}
|
||||||
{activeSection === "roles" && <LLMRoleManager searchSpaceId={searchSpaceId} />}
|
{activeSection === "roles" && <LLMRoleManager searchSpaceId={searchSpaceId} />}
|
||||||
{activeSection === "prompts" && <PromptConfigManager searchSpaceId={searchSpaceId} />}
|
{activeSection === "prompts" && <PromptConfigManager searchSpaceId={searchSpaceId} />}
|
||||||
|
{activeSection === "public-links" && (
|
||||||
|
<PublicChatSnapshotsManager searchSpaceId={searchSpaceId} />
|
||||||
|
)}
|
||||||
</motion.div>
|
</motion.div>
|
||||||
</AnimatePresence>
|
</AnimatePresence>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useAtomValue } from "jotai";
|
import { useAtomValue } from "jotai";
|
||||||
import { Globe, Info } from "lucide-react";
|
import { AlertCircle, Globe, Info } from "lucide-react";
|
||||||
import { useCallback, useMemo, useState } from "react";
|
import { useCallback, useMemo, useState } from "react";
|
||||||
import { toast } from "sonner";
|
import { toast } from "sonner";
|
||||||
import { deletePublicChatSnapshotMutationAtom } from "@/atoms/public-chat-snapshots/public-chat-snapshots-mutation.atoms";
|
import { deletePublicChatSnapshotMutationAtom } from "@/atoms/public-chat-snapshots/public-chat-snapshots-mutation.atoms";
|
||||||
|
|
@ -23,7 +23,7 @@ export function PublicChatSnapshotsManager({
|
||||||
const [deletingId, setDeletingId] = useState<number | undefined>();
|
const [deletingId, setDeletingId] = useState<number | undefined>();
|
||||||
|
|
||||||
// Data fetching
|
// Data fetching
|
||||||
const { data: snapshotsData, isLoading, refetch } = useAtomValue(publicChatSnapshotsAtom);
|
const { data: snapshotsData, isLoading, isError, refetch } = useAtomValue(publicChatSnapshotsAtom);
|
||||||
|
|
||||||
// Permissions
|
// Permissions
|
||||||
const { data: access } = useAtomValue(myAccessAtom);
|
const { data: access } = useAtomValue(myAccessAtom);
|
||||||
|
|
@ -84,6 +84,18 @@ export function PublicChatSnapshotsManager({
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Error state
|
||||||
|
if (isError) {
|
||||||
|
return (
|
||||||
|
<Alert variant="destructive">
|
||||||
|
<AlertCircle className="h-4 w-4" />
|
||||||
|
<AlertDescription>
|
||||||
|
Failed to load public chat links. Please try again later.
|
||||||
|
</AlertDescription>
|
||||||
|
</Alert>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// Permission denied
|
// Permission denied
|
||||||
if (!canView) {
|
if (!canView) {
|
||||||
return (
|
return (
|
||||||
|
|
|
||||||
|
|
@ -731,6 +731,8 @@
|
||||||
"nav_role_assignments_desc": "Assign configs to agent roles",
|
"nav_role_assignments_desc": "Assign configs to agent roles",
|
||||||
"nav_system_instructions": "System Instructions",
|
"nav_system_instructions": "System Instructions",
|
||||||
"nav_system_instructions_desc": "SearchSpace-wide AI instructions",
|
"nav_system_instructions_desc": "SearchSpace-wide AI instructions",
|
||||||
|
"nav_public_links": "Public Chat Links",
|
||||||
|
"nav_public_links_desc": "Manage publicly shared chat links",
|
||||||
"general_name_label": "Name",
|
"general_name_label": "Name",
|
||||||
"general_name_placeholder": "Enter search space name",
|
"general_name_placeholder": "Enter search space name",
|
||||||
"general_name_description": "A unique name for your search space.",
|
"general_name_description": "A unique name for your search space.",
|
||||||
|
|
|
||||||
|
|
@ -716,6 +716,8 @@
|
||||||
"nav_role_assignments_desc": "为代理角色分配配置",
|
"nav_role_assignments_desc": "为代理角色分配配置",
|
||||||
"nav_system_instructions": "系统指令",
|
"nav_system_instructions": "系统指令",
|
||||||
"nav_system_instructions_desc": "搜索空间级别的 AI 指令",
|
"nav_system_instructions_desc": "搜索空间级别的 AI 指令",
|
||||||
|
"nav_public_links": "公开聊天链接",
|
||||||
|
"nav_public_links_desc": "管理公开分享的聊天链接",
|
||||||
"general_name_label": "名称",
|
"general_name_label": "名称",
|
||||||
"general_name_placeholder": "输入搜索空间名称",
|
"general_name_placeholder": "输入搜索空间名称",
|
||||||
"general_name_description": "您的搜索空间的唯一名称。",
|
"general_name_description": "您的搜索空间的唯一名称。",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue