Skip to content

Commit 5776cf8

Browse files
committed
bit of hookage
1 parent 3af3c14 commit 5776cf8

File tree

2 files changed

+36
-31
lines changed

2 files changed

+36
-31
lines changed

src/renderer/components/tasks/TaskList.tsx

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import { Box, Button, Flex, Spinner, Text } from "@radix-ui/themes";
22
import type { Task } from "@shared/types";
3-
import { useCallback, useEffect, useRef, useState } from "react";
3+
import { useCallback, useEffect, useRef } from "react";
44
import { useTasks } from "../../hooks/useTasks";
55
import { useUsers } from "../../hooks/useUsers";
66
import { useAuthStore } from "../../stores/authStore";
77
import { useLayoutStore } from "../../stores/layoutStore";
88
import { useStatusBarStore } from "../../stores/statusBarStore";
99
import { useTaskStore } from "../../stores/taskStore";
1010
import { CliTaskPanel } from "./CliTaskPanel";
11+
import { useCliPanelResize } from "./hooks/useCliPanelResize";
1112
import { useTaskDragDrop } from "./hooks/useTaskDragDrop";
1213
import { useTaskFiltering } from "./hooks/useTaskFiltering";
1314
import { useTaskGrouping } from "./hooks/useTaskGrouping";
@@ -50,9 +51,6 @@ export function TaskList({ onSelectTask }: TaskListProps) {
5051
const setCliPanelWidth = useLayoutStore((state) => state.setCliPanelWidth);
5152
const listRef = useRef<HTMLDivElement>(null);
5253

53-
// Resize state
54-
const [isResizing, setIsResizing] = useState(false);
55-
5654
// Custom hooks
5755
const filteredTasks = useTaskFiltering(
5856
tasks,
@@ -61,6 +59,7 @@ export function TaskList({ onSelectTask }: TaskListProps) {
6159
filter,
6260
);
6361
const groupedTasks = useTaskGrouping(filteredTasks, groupBy, users);
62+
const { isResizing, handleMouseDown } = useCliPanelResize(setCliPanelWidth);
6463

6564
const handleMoveTask = useCallback(
6665
(fromIndex: number, toIndex: number) => {
@@ -94,33 +93,6 @@ export function TaskList({ onSelectTask }: TaskListProps) {
9493

9594
useTaskScrolling(listRef, selectedIndex, filteredTasks.length);
9695

97-
// Resize handler
98-
const handleMouseDown = useCallback(() => {
99-
setIsResizing(true);
100-
}, []);
101-
102-
useEffect(() => {
103-
if (!isResizing) return;
104-
105-
const handleMouseMove = (e: MouseEvent) => {
106-
const newWidth =
107-
((window.innerWidth - e.clientX) / window.innerWidth) * 100;
108-
setCliPanelWidth(Math.max(20, Math.min(50, newWidth))); // clamp between 20% and 50%
109-
};
110-
111-
const handleMouseUp = () => {
112-
setIsResizing(false);
113-
};
114-
115-
document.addEventListener("mousemove", handleMouseMove);
116-
document.addEventListener("mouseup", handleMouseUp);
117-
118-
return () => {
119-
document.removeEventListener("mousemove", handleMouseMove);
120-
document.removeEventListener("mouseup", handleMouseUp);
121-
};
122-
}, [isResizing, setCliPanelWidth]);
123-
12496
// Status bar
12597
useEffect(() => {
12698
setStatusBar({
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import { useCallback, useEffect, useState } from "react";
2+
3+
export function useCliPanelResize(setCliPanelWidth: (width: number) => void) {
4+
const [isResizing, setIsResizing] = useState(false);
5+
6+
const handleMouseDown = useCallback(() => {
7+
setIsResizing(true);
8+
}, []);
9+
10+
useEffect(() => {
11+
if (!isResizing) return;
12+
13+
const handleMouseMove = (e: MouseEvent) => {
14+
const newWidth =
15+
((window.innerWidth - e.clientX) / window.innerWidth) * 100;
16+
setCliPanelWidth(Math.max(20, Math.min(50, newWidth)));
17+
};
18+
19+
const handleMouseUp = () => {
20+
setIsResizing(false);
21+
};
22+
23+
document.addEventListener("mousemove", handleMouseMove);
24+
document.addEventListener("mouseup", handleMouseUp);
25+
26+
return () => {
27+
document.removeEventListener("mousemove", handleMouseMove);
28+
document.removeEventListener("mouseup", handleMouseUp);
29+
};
30+
}, [isResizing, setCliPanelWidth]);
31+
32+
return { isResizing, handleMouseDown };
33+
}

0 commit comments

Comments
 (0)