mirror of
https://github.com/grafana/grafana.git
synced 2025-02-15 01:53:33 -06:00
* only update the state if this is the most recent request * fix empty state as well * improve perf of recent dashboards
38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import { useEffect, useState } from 'react';
|
|
|
|
import { useSelector } from 'app/types';
|
|
|
|
import { CommandPaletteAction } from '../types';
|
|
|
|
import { getRecentDashboardActions } from './dashboardActions';
|
|
import getStaticActions from './staticActions';
|
|
|
|
export default function useActions(searchQuery: string) {
|
|
const [navTreeActions, setNavTreeActions] = useState<CommandPaletteAction[]>([]);
|
|
const [recentDashboardActions, setRecentDashboardActions] = useState<CommandPaletteAction[]>([]);
|
|
|
|
const { navBarTree } = useSelector((state) => {
|
|
return {
|
|
navBarTree: state.navBarTree,
|
|
};
|
|
});
|
|
// Load standard static actions
|
|
useEffect(() => {
|
|
const staticActionsResp = getStaticActions(navBarTree);
|
|
setNavTreeActions(staticActionsResp);
|
|
}, [navBarTree]);
|
|
|
|
// Load recent dashboards - we don't want them to reload when the nav tree changes
|
|
useEffect(() => {
|
|
if (!searchQuery) {
|
|
getRecentDashboardActions()
|
|
.then((recentDashboardActions) => setRecentDashboardActions(recentDashboardActions))
|
|
.catch((err) => {
|
|
console.error('Error loading recent dashboard actions', err);
|
|
});
|
|
}
|
|
}, [searchQuery]);
|
|
|
|
return searchQuery ? navTreeActions : [...recentDashboardActions, ...navTreeActions];
|
|
}
|