feat: support guest session (#919)
This commit is contained in:
parent
24cb2ce19b
commit
9279135355
34 changed files with 741 additions and 288 deletions
|
|
@ -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 (
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue