Skip to content

Commit 57fe0af

Browse files
committed
Fix widget re-renders on dashboard select open
1 parent 21708a6 commit 57fe0af

File tree

1 file changed

+6
-15
lines changed

1 file changed

+6
-15
lines changed

frontend/src/pages/dashboard.js

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ const Dashboard = () => {
5454
const [dashboards, setDashboards] = useState([]);
5555
const [filteredDashboards, setFilteredDashboards] = useState([]);
5656
const [selectedDashboard, setSelectedDashboard] = useState();
57-
const [isDashboardOpen, setIsDashboardOpen] = useState(false);
5857
const [isNewDBOpen, setIsNewDBOpen] = useState(false);
5958
const [isDeleteDBOpen, setIsDeleteDBOpen] = useState(false);
6059

@@ -75,12 +74,12 @@ const Dashboard = () => {
7574
const selectInputRef = useRef();
7675
const [loadKey, setLoadKey] = useState(nanoid(6));
7776

78-
const onDeleteWidgetClick = (id) => {
77+
const onDeleteWidgetClick = useCallback((id) => {
7978
setIsDeleteWidgetOpen(true);
8079
setCurrentWidget(id);
81-
};
80+
}, []);
8281

83-
const onEditWidgetClick = (id) => {
82+
const onEditWidgetClick = useCallback((id) => {
8483
setIsEditModalOpen(true);
8584

8685
const fetchWidgetData = async (id) => {
@@ -106,7 +105,7 @@ const Dashboard = () => {
106105
return () => {
107106
clearTimeout(debouncer);
108107
};
109-
};
108+
}, []);
110109

111110
// update widgets
112111
const { widgets, widgetComponents } = useWidgets({
@@ -171,7 +170,6 @@ const Dashboard = () => {
171170
const paramDashboard = dashboards.find((db) => db.id === dashboard_id);
172171
if (paramDashboard) {
173172
setSelectedDashboard(paramDashboard);
174-
setIsDashboardOpen(false);
175173
setSelectInputValue(paramDashboard.title);
176174
setProcessedDashboardId(dashboard_id);
177175
}
@@ -210,9 +208,7 @@ const Dashboard = () => {
210208
useEffect(() => {
211209
let filteredOptions = [...dashboards];
212210
if (selectFilterValue && dashboards.length) {
213-
filteredOptions = [...dashboards];
214-
215-
filteredOptions = filteredOptions.filter((dashboard) =>
211+
filteredOptions = dashboards.filter((dashboard) =>
216212
dashboard.title.toLowerCase().includes(selectFilterValue.toLowerCase()),
217213
);
218214
if (!filteredOptions.length) {
@@ -223,13 +219,10 @@ const Dashboard = () => {
223219
},
224220
];
225221
}
226-
if (!isDashboardOpen) {
227-
setIsDashboardOpen(true);
228-
}
229222
}
230223

231224
setFilteredDashboards(filteredOptions);
232-
}, [selectFilterValue, dashboards, isDashboardOpen]);
225+
}, [selectFilterValue, dashboards]);
233226

234227
const onDashboardSelect = useCallback(
235228
(_event, selection) => {
@@ -250,7 +243,6 @@ const Dashboard = () => {
250243
const onDashboardClear = useCallback(() => {
251244
// state update
252245
setSelectedDashboard();
253-
setIsDashboardOpen(false);
254246
setSelectInputValue('');
255247
setSelectFilterValue('');
256248
setProcessedDashboardId(null); // Reset processed dashboard ID
@@ -434,7 +426,6 @@ const Dashboard = () => {
434426
aria-label="New dashboard"
435427
variant="plain"
436428
title="New dashboard"
437-
isDisabled={isDashboardOpen}
438429
onClick={() => {
439430
setIsNewDBOpen(true);
440431
}}

0 commit comments

Comments
 (0)