Skip to content

Commit e316c44

Browse files
committed
improvement(sidebar): remove unnecessary useCallback and useMemo wrappers
1 parent e883e05 commit e316c44

1 file changed

Lines changed: 55 additions & 79 deletions

File tree

  • apps/sim/app/workspace/[workspaceId]/w/components/sidebar

apps/sim/app/workspace/[workspaceId]/w/components/sidebar/sidebar.tsx

Lines changed: 55 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,14 @@ const SidebarNavItem = memo(function SidebarNavItem({
321321
/** Event name for sidebar scroll operations - centralized for consistency */
322322
export const SIDEBAR_SCROLL_EVENT = 'sidebar-scroll-to-item'
323323

324+
const HIDDEN_STYLE = { display: 'none' } as const
325+
326+
const WORKFLOW_ICON_STYLE: React.CSSProperties = {
327+
backgroundColor: 'var(--text-icon)',
328+
borderColor: 'color-mix(in srgb, var(--text-icon) 60%, transparent)',
329+
backgroundClip: 'padding-box',
330+
}
331+
324332
/**
325333
* Sidebar component with resizable width that persists across page refreshes.
326334
*
@@ -368,7 +376,7 @@ export const Sidebar = memo(function Sidebar() {
368376
isCollapsedRef.current = isCollapsed
369377
}, [isCollapsed])
370378

371-
const isMac = useMemo(() => isMacPlatform(), [])
379+
const isMac = isMacPlatform()
372380

373381
const [showCollapsedTooltips, setShowCollapsedTooltips] = useState(isCollapsed)
374382

@@ -775,11 +783,11 @@ export const Sidebar = memo(function Sidebar() {
775783
[navigateToSettings, getSettingsHref, setSidebarWidth]
776784
)
777785

778-
const handleStartTour = useCallback(() => {
786+
const handleStartTour = () => {
779787
window.dispatchEvent(
780788
new CustomEvent(isOnWorkflowPage ? START_WORKFLOW_TOUR_EVENT : START_NAV_TOUR_EVENT)
781789
)
782-
}, [isOnWorkflowPage])
790+
}
783791

784792
const {
785793
data: fetchedTasks = [],
@@ -879,7 +887,7 @@ export const Sidebar = memo(function Sidebar() {
879887
[setSidebarWidth, router]
880888
)
881889

882-
const handleConfirmDeleteTasks = useCallback(() => {
890+
const handleConfirmDeleteTasks = () => {
883891
const { taskIds: taskIdsToDelete } = contextMenuSelectionRef.current
884892
if (taskIdsToDelete.length === 0) return
885893

@@ -901,7 +909,7 @@ export const Sidebar = memo(function Sidebar() {
901909
deleteTasksMutation.mutate(taskIdsToDelete, { onSuccess: onDeleteSuccess })
902910
}
903911
setIsTaskDeleteModalOpen(false)
904-
}, [pathname, workspaceId, navigateToPage])
912+
}
905913

906914
const [visibleTaskCount, setVisibleTaskCount] = useState(5)
907915
const taskFlyoutRename = useFlyoutInlineRename({
@@ -1038,9 +1046,9 @@ export const Sidebar = memo(function Sidebar() {
10381046
}
10391047
}, [createFolder])
10401048

1041-
const handleImportWorkflow = useCallback(() => {
1049+
const handleImportWorkflow = () => {
10421050
fileInputRef.current?.click()
1043-
}, [])
1051+
}
10441052

10451053
const handleWorkspaceSwitch = useCallback(
10461054
async (workspace: Workspace) => {
@@ -1054,17 +1062,14 @@ export const Sidebar = memo(function Sidebar() {
10541062
[workspaceId, switchWorkspace]
10551063
)
10561064

1057-
const handleSidebarClick = useCallback(
1058-
(e: React.MouseEvent<HTMLElement>) => {
1059-
const target = e.target as HTMLElement
1060-
if (target.tagName === 'BUTTON' || target.closest('button, [role="button"], a')) {
1061-
return
1062-
}
1063-
const { selectOnly, clearAllSelection } = useFolderStore.getState()
1064-
workflowId ? selectOnly(workflowId) : clearAllSelection()
1065-
},
1066-
[workflowId]
1067-
)
1065+
const handleSidebarClick = (e: React.MouseEvent<HTMLElement>) => {
1066+
const target = e.target as HTMLElement
1067+
if (target.tagName === 'BUTTON' || target.closest('button, [role="button"], a')) {
1068+
return
1069+
}
1070+
const { selectOnly, clearAllSelection } = useFolderStore.getState()
1071+
workflowId ? selectOnly(workflowId) : clearAllSelection()
1072+
}
10681073

10691074
const handleRenameWorkspace = useCallback(
10701075
async (workspaceIdToRename: string, newName: string) => {
@@ -1127,43 +1132,31 @@ export const Sidebar = memo(function Sidebar() {
11271132
workspaceFileInputRef.current?.click()
11281133
}, [])
11291134

1130-
const handleWorkspaceFileChange = useCallback(
1131-
async (event: React.ChangeEvent<HTMLInputElement>) => {
1132-
const files = event.target.files
1133-
if (!files || files.length === 0) return
1135+
const handleWorkspaceFileChange = async (event: React.ChangeEvent<HTMLInputElement>) => {
1136+
const files = event.target.files
1137+
if (!files || files.length === 0) return
11341138

1135-
const zipFile = files[0]
1136-
await importWorkspace(zipFile)
1139+
const zipFile = files[0]
1140+
await importWorkspace(zipFile)
11371141

1138-
if (event.target) {
1139-
event.target.value = ''
1140-
}
1141-
},
1142-
[importWorkspace]
1143-
)
1142+
if (event.target) {
1143+
event.target.value = ''
1144+
}
1145+
}
11441146

11451147
const tasksCollapsedIcon = useMemo(
11461148
() => <Blimp className='h-[16px] w-[16px] flex-shrink-0 text-[var(--text-icon)]' />,
11471149
[]
11481150
)
11491151

1150-
const workflowIconStyle = useMemo<React.CSSProperties>(
1151-
() => ({
1152-
backgroundColor: 'var(--text-icon)',
1153-
borderColor: 'color-mix(in srgb, var(--text-icon) 60%, transparent)',
1154-
backgroundClip: 'padding-box',
1155-
}),
1156-
[]
1157-
)
1158-
11591152
const workflowsCollapsedIcon = useMemo(
11601153
() => (
11611154
<div
11621155
className='h-[16px] w-[16px] flex-shrink-0 rounded-sm border-[2.5px]'
1163-
style={workflowIconStyle}
1156+
style={WORKFLOW_ICON_STYLE}
11641157
/>
11651158
),
1166-
[workflowIconStyle]
1159+
[]
11671160
)
11681161

11691162
const tasksPrimaryAction = useMemo(
@@ -1182,53 +1175,36 @@ export const Sidebar = memo(function Sidebar() {
11821175
[handleCreateWorkflow]
11831176
)
11841177

1185-
const handleExpandSidebar = useCallback(
1186-
(e: React.MouseEvent) => {
1187-
e.preventDefault()
1188-
toggleCollapsed()
1189-
},
1190-
[toggleCollapsed]
1191-
)
1178+
const handleExpandSidebar = (e: React.MouseEvent) => {
1179+
e.preventDefault()
1180+
toggleCollapsed()
1181+
}
11921182

1193-
const handleNewTask = useCallback(
1194-
() => navigateToPage(`/workspace/${workspaceId}/home`),
1195-
[navigateToPage, workspaceId]
1196-
)
1183+
const handleNewTask = () => navigateToPage(`/workspace/${workspaceId}/home`)
11971184

1198-
const handleSeeMoreTasks = useCallback(() => setVisibleTaskCount((prev) => prev + 5), [])
1185+
const handleSeeMoreTasks = () => setVisibleTaskCount((prev) => prev + 5)
11991186

1200-
const handleCloseTaskDeleteModal = useCallback(() => setIsTaskDeleteModalOpen(false), [])
1187+
const handleCloseTaskDeleteModal = () => setIsTaskDeleteModalOpen(false)
12011188

1202-
const handleEdgeKeyDown = useCallback(
1203-
(e: React.KeyboardEvent) => {
1204-
if (isCollapsed && (e.key === 'Enter' || e.key === ' ')) {
1205-
e.preventDefault()
1206-
toggleCollapsed()
1207-
}
1208-
},
1209-
[isCollapsed, toggleCollapsed]
1210-
)
1189+
const handleEdgeKeyDown = (e: React.KeyboardEvent) => {
1190+
if (isCollapsed && (e.key === 'Enter' || e.key === ' ')) {
1191+
e.preventDefault()
1192+
toggleCollapsed()
1193+
}
1194+
}
12111195

1212-
const handleOpenHelpFromMenu = useCallback(() => setIsHelpModalOpen(true), [])
1196+
const handleOpenHelpFromMenu = () => setIsHelpModalOpen(true)
12131197

1214-
const handleOpenDocs = useCallback(() => {
1198+
const handleOpenDocs = () => {
12151199
window.open('https://docs.sim.ai', '_blank', 'noopener,noreferrer')
12161200
captureEvent(posthog, 'docs_opened', { source: 'help_menu' })
1217-
}, [posthog])
1218-
1219-
const handleTaskRenameBlur = useCallback(
1220-
() => void taskFlyoutRename.saveRename(),
1221-
[taskFlyoutRename.saveRename]
1222-
)
1201+
}
12231202

1224-
const handleWorkflowRenameBlur = useCallback(
1225-
() => void workflowFlyoutRename.saveRename(),
1226-
[workflowFlyoutRename.saveRename]
1227-
)
1203+
const handleTaskRenameBlur = () => void taskFlyoutRename.saveRename()
12281204

1229-
const hiddenStyle = useMemo(() => ({ display: 'none' }) as const, [])
1205+
const handleWorkflowRenameBlur = () => void workflowFlyoutRename.saveRename()
12301206

1231-
const resolveWorkspaceIdFromPath = useCallback((): string | undefined => {
1207+
const resolveWorkspaceIdFromPath = (): string | undefined => {
12321208
if (workspaceId) return workspaceId
12331209
if (typeof window === 'undefined') return undefined
12341210

@@ -1237,7 +1213,7 @@ export const Sidebar = memo(function Sidebar() {
12371213
if (idx === -1) return undefined
12381214

12391215
return parts[idx + 1]
1240-
}, [workspaceId])
1216+
}
12411217

12421218
useRegisterGlobalCommands(() =>
12431219
createCommands([
@@ -1893,7 +1869,7 @@ export const Sidebar = memo(function Sidebar() {
18931869
ref={workspaceFileInputRef}
18941870
type='file'
18951871
accept='.zip'
1896-
style={hiddenStyle}
1872+
style={HIDDEN_STYLE}
18971873
onChange={handleWorkspaceFileChange}
18981874
/>
18991875
</>

0 commit comments

Comments
 (0)