mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-07-04 22:02:16 +02:00
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:
parent
553843ab06
commit
90ed853a26
5 changed files with 18 additions and 49 deletions
|
|
@ -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({
|
||||||
|
|
|
||||||
|
|
@ -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(() => {
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue