perf: remove unnecessary useMemo wrapping simple boolean expressions

Replace useMemo calls that wrap trivial boolean checks with plain
const expressions. The memo overhead exceeds the cost of these
simple permission checks and mode comparisons.

Fixes #1052
This commit is contained in:
Matt Van Horn 2026-04-08 01:36:24 -07:00
parent 553843ab06
commit 90ed853a26
5 changed files with 18 additions and 49 deletions

View file

@ -4,7 +4,7 @@ import { useQuery, useQueryClient } from "@tanstack/react-query";
import { useAtomValue, useSetAtom } from "jotai"; import { useAtomValue, useSetAtom } from "jotai";
import { Earth, User, Users } from "lucide-react"; import { Earth, User, Users } from "lucide-react";
import { useCallback, useMemo, useState } from "react"; import { useCallback, useState } from "react";
import { toast } from "sonner"; import { toast } from "sonner";
import { currentThreadAtom, setThreadVisibilityAtom } from "@/atoms/chat/current-thread.atom"; import { currentThreadAtom, setThreadVisibilityAtom } from "@/atoms/chat/current-thread.atom";
import { myAccessAtom } from "@/atoms/members/members-query.atoms"; import { myAccessAtom } from "@/atoms/members/members-query.atoms";
@ -63,11 +63,8 @@ export function ChatShareButton({ thread, onVisibilityChange, className }: ChatS
// Permission check for public sharing // Permission check for public sharing
const { data: access } = useAtomValue(myAccessAtom); const { data: access } = useAtomValue(myAccessAtom);
const canCreatePublicLink = useMemo(() => { const canCreatePublicLink =
if (!access) return false; !!access && (access.is_owner || (access.permissions?.includes("public_sharing:create") ?? false));
if (access.is_owner) return true;
return access.permissions?.includes("public_sharing:create") ?? false;
}, [access]);
// Query to check if thread has public snapshots // Query to check if thread has public snapshots
const { data: snapshotsData } = useQuery({ const { data: snapshotsData } = useQuery({

View file

@ -121,9 +121,8 @@ export function ModelSelector({
return llmUserConfigs?.find((c) => c.id === agentLlmId) ?? null; return llmUserConfigs?.find((c) => c.id === agentLlmId) ?? null;
}, [preferences, llmGlobalConfigs, llmUserConfigs]); }, [preferences, llmGlobalConfigs, llmUserConfigs]);
const isLLMAutoMode = useMemo(() => { const isLLMAutoMode =
return currentLLMConfig && "is_auto_mode" in currentLLMConfig && currentLLMConfig.is_auto_mode; currentLLMConfig && "is_auto_mode" in currentLLMConfig && currentLLMConfig.is_auto_mode;
}, [currentLLMConfig]);
// ─── Image current config ─── // ─── Image current config ───
const currentImageConfig = useMemo(() => { const currentImageConfig = useMemo(() => {
@ -135,11 +134,8 @@ export function ModelSelector({
return imageUserConfigs?.find((c) => c.id === id) ?? null; return imageUserConfigs?.find((c) => c.id === id) ?? null;
}, [preferences, imageGlobalConfigs, imageUserConfigs]); }, [preferences, imageGlobalConfigs, imageUserConfigs]);
const isImageAutoMode = useMemo(() => { const isImageAutoMode =
return ( currentImageConfig && "is_auto_mode" in currentImageConfig && currentImageConfig.is_auto_mode;
currentImageConfig && "is_auto_mode" in currentImageConfig && currentImageConfig.is_auto_mode
);
}, [currentImageConfig]);
// ─── Vision current config ─── // ─── Vision current config ───
const currentVisionConfig = useMemo(() => { const currentVisionConfig = useMemo(() => {

View file

@ -43,17 +43,11 @@ export function PublicChatSnapshotsManager({
// Permissions // Permissions
const { data: access } = useAtomValue(myAccessAtom); const { data: access } = useAtomValue(myAccessAtom);
const canView = useMemo(() => { const canView =
if (!access) return false; !!access && (access.is_owner || (access.permissions?.includes("public_sharing:view") ?? false));
if (access.is_owner) return true;
return access.permissions?.includes("public_sharing:view") ?? false;
}, [access]);
const canDelete = useMemo(() => { const canDelete =
if (!access) return false; !!access && (access.is_owner || (access.permissions?.includes("public_sharing:delete") ?? false));
if (access.is_owner) return true;
return access.permissions?.includes("public_sharing:delete") ?? false;
}, [access]);
// Mutations // Mutations
const { mutateAsync: deleteSnapshot } = useAtomValue(deletePublicChatSnapshotMutationAtom); const { mutateAsync: deleteSnapshot } = useAtomValue(deletePublicChatSnapshotMutationAtom);

View file

@ -78,16 +78,10 @@ export function ImageModelManager({ searchSpaceId }: ImageModelManagerProps) {
}, [members]); }, [members]);
const { data: access } = useAtomValue(myAccessAtom); const { data: access } = useAtomValue(myAccessAtom);
const canCreate = useMemo(() => { const canCreate =
if (!access) return false; !!access && (access.is_owner || (access.permissions?.includes("image_generations:create") ?? false));
if (access.is_owner) return true; const canDelete =
return access.permissions?.includes("image_generations:create") ?? false; !!access && (access.is_owner || (access.permissions?.includes("image_generations:delete") ?? false));
}, [access]);
const canDelete = useMemo(() => {
if (!access) return false;
if (access.is_owner) return true;
return access.permissions?.includes("image_generations:delete") ?? false;
}, [access]);
const canUpdate = canCreate; const canUpdate = canCreate;
const isReadOnly = !canCreate && !canDelete; const isReadOnly = !canCreate && !canDelete;

View file

@ -89,21 +89,9 @@ export function ModelConfigManager({ searchSpaceId }: ModelConfigManagerProps) {
// Permissions // Permissions
const { data: access } = useAtomValue(myAccessAtom); const { data: access } = useAtomValue(myAccessAtom);
const canCreate = useMemo(() => { const canCreate = !!access && (access.is_owner || (access.permissions?.includes("llm_configs:create") ?? false));
if (!access) return false; const canUpdate = !!access && (access.is_owner || (access.permissions?.includes("llm_configs:update") ?? false));
if (access.is_owner) return true; const canDelete = !!access && (access.is_owner || (access.permissions?.includes("llm_configs:delete") ?? false));
return access.permissions?.includes("llm_configs:create") ?? false;
}, [access]);
const canUpdate = useMemo(() => {
if (!access) return false;
if (access.is_owner) return true;
return access.permissions?.includes("llm_configs:update") ?? false;
}, [access]);
const canDelete = useMemo(() => {
if (!access) return false;
if (access.is_owner) return true;
return access.permissions?.includes("llm_configs:delete") ?? false;
}, [access]);
const isReadOnly = !canCreate && !canUpdate && !canDelete; const isReadOnly = !canCreate && !canUpdate && !canDelete;
// Local state // Local state