feat: support guest session (#919)

This commit is contained in:
Jeremy 2025-04-25 23:40:15 -07:00 committed by GitHub
parent 24cb2ce19b
commit 9279135355
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
34 changed files with 741 additions and 288 deletions

View file

@ -14,20 +14,34 @@ import { chatModels } from '@/lib/ai/models';
import { cn } from '@/lib/utils';
import { CheckCircleFillIcon, ChevronDownIcon } from './icons';
import { entitlementsByUserType } from '@/lib/ai/entitlements';
import type { Session } from 'next-auth';
export function ModelSelector({
session,
selectedModelId,
className,
}: {
session: Session;
selectedModelId: string;
} & React.ComponentProps<typeof Button>) {
const [open, setOpen] = useState(false);
const [optimisticModelId, setOptimisticModelId] =
useOptimistic(selectedModelId);
const userType = session.user.type;
const { availableChatModelIds } = entitlementsByUserType[userType];
const availableChatModels = chatModels.filter((chatModel) =>
availableChatModelIds.includes(chatModel.id),
);
const selectedChatModel = useMemo(
() => chatModels.find((chatModel) => chatModel.id === optimisticModelId),
[optimisticModelId],
() =>
availableChatModels.find(
(chatModel) => chatModel.id === optimisticModelId,
),
[optimisticModelId, availableChatModels],
);
return (
@ -49,7 +63,7 @@ export function ModelSelector({
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="start" className="min-w-[300px]">
{chatModels.map((chatModel) => {
{availableChatModels.map((chatModel) => {
const { id } = chatModel;
return (