Skip to content

Commit 82e98e0

Browse files
committed
feat(grid): integrate pubsub for item close and move events
1 parent 21eb493 commit 82e98e0

File tree

1 file changed

+14
-4
lines changed
  • electron/renderer/components/grid

1 file changed

+14
-4
lines changed

electron/renderer/components/grid/grid.tsx

+14-4
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import type { ReactNode } from 'react';
66
import { useCallback, useMemo, useState } from 'react';
77
import { useLogger } from '../../hooks/logger.jsx';
8+
import { usePubSub } from '../../hooks/pubsub.jsx';
89
import type {
910
GridItemBoundary,
1011
GridItemContent,
@@ -21,6 +22,7 @@ export const Grid: React.FC<GridProps> = (props: GridProps): ReactNode => {
2122
const { boundary, contentItems } = props;
2223

2324
const logger = useLogger('renderer:cmp:grid');
25+
const { publish } = usePubSub();
2426

2527
const [focusedItemId, setFocusedItemId] = useState<string>(() => {
2628
const focusedItem = contentItems.find((contentItem) => {
@@ -41,17 +43,25 @@ export const Grid: React.FC<GridProps> = (props: GridProps): ReactNode => {
4143
const onItemClose = useCallback(
4244
(item: GridItemInfo) => {
4345
logger.debug('closed item', { item });
44-
// TODO remove from layout
46+
publish('layout:item:closed', {
47+
itemId: item.itemId,
48+
});
4549
},
46-
[logger]
50+
[logger, publish]
4751
);
4852

4953
const onItemMoveResize = useCallback(
5054
(item: GridItemInfo) => {
5155
logger.debug('moved item', { item });
52-
// TODO auto-save layout or require user to save manually?
56+
publish('layout:item:moved', {
57+
itemId: item.itemId,
58+
x: item.layout.x,
59+
y: item.layout.y,
60+
width: item.layout.width,
61+
height: item.layout.height,
62+
});
5363
},
54-
[logger]
64+
[logger, publish]
5565
);
5666

5767
const gridItems = useMemo(() => {

0 commit comments

Comments
 (0)