mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-28 09:33:46 +00:00
fix: remove dead store code and add search input maxLength
- Remove unused networkData, searchQuery, searchResults from zustand store
- Remove setNetworkData write in NetworkGraph
- Add maxLength={200} to search input
This commit is contained in:
@@ -113,8 +113,6 @@ export function NetworkGraph({ data, className }: NetworkGraphProps) {
|
|||||||
const hoveredNodeId = useReferralNetworkStore((s) => s.hoveredNodeId);
|
const hoveredNodeId = useReferralNetworkStore((s) => s.hoveredNodeId);
|
||||||
const highlightedNodes = useReferralNetworkStore((s) => s.highlightedNodes);
|
const highlightedNodes = useReferralNetworkStore((s) => s.highlightedNodes);
|
||||||
const filters = useReferralNetworkStore((s) => s.filters);
|
const filters = useReferralNetworkStore((s) => s.filters);
|
||||||
const setNetworkData = useReferralNetworkStore((s) => s.setNetworkData);
|
|
||||||
|
|
||||||
const killFA2 = useCallback(() => {
|
const killFA2 = useCallback(() => {
|
||||||
if (fa2TimerRef.current !== null) {
|
if (fa2TimerRef.current !== null) {
|
||||||
clearTimeout(fa2TimerRef.current);
|
clearTimeout(fa2TimerRef.current);
|
||||||
@@ -140,8 +138,6 @@ export function NetworkGraph({ data, className }: NetworkGraphProps) {
|
|||||||
const graph = buildFullGraph(data);
|
const graph = buildFullGraph(data);
|
||||||
graphRef.current = graph;
|
graphRef.current = graph;
|
||||||
|
|
||||||
setNetworkData(data);
|
|
||||||
|
|
||||||
// Compute initial hidden set from current filters
|
// Compute initial hidden set from current filters
|
||||||
const initialFilters = useReferralNetworkStore.getState().filters;
|
const initialFilters = useReferralNetworkStore.getState().filters;
|
||||||
hiddenNodesRef.current = computeHiddenNodes(graph, initialFilters);
|
hiddenNodesRef.current = computeHiddenNodes(graph, initialFilters);
|
||||||
@@ -301,7 +297,7 @@ export function NetworkGraph({ data, className }: NetworkGraphProps) {
|
|||||||
setSigmaInstance(null);
|
setSigmaInstance(null);
|
||||||
setGraphInstance(null);
|
setGraphInstance(null);
|
||||||
};
|
};
|
||||||
}, [data, setSelectedNode, setHoveredNode, setNetworkData, killFA2]);
|
}, [data, setSelectedNode, setHoveredNode, killFA2]);
|
||||||
|
|
||||||
// Recompute hidden nodes when filters change, then refresh sigma
|
// Recompute hidden nodes when filters change, then refresh sigma
|
||||||
// (no graph rebuild — positions and Sigma instance preserved)
|
// (no graph rebuild — positions and Sigma instance preserved)
|
||||||
|
|||||||
@@ -117,6 +117,7 @@ export function NetworkSearch({ className }: NetworkSearchProps) {
|
|||||||
ref={inputRef}
|
ref={inputRef}
|
||||||
type="text"
|
type="text"
|
||||||
value={inputValue}
|
value={inputValue}
|
||||||
|
maxLength={200}
|
||||||
onChange={(e) => setInputValue(e.target.value)}
|
onChange={(e) => setInputValue(e.target.value)}
|
||||||
onFocus={() => {
|
onFocus={() => {
|
||||||
if (searchResults && debouncedQuery.length >= 2) setIsDropdownOpen(true);
|
if (searchResults && debouncedQuery.length >= 2) setIsDropdownOpen(true);
|
||||||
|
|||||||
@@ -1,11 +1,5 @@
|
|||||||
import { create } from 'zustand';
|
import { create } from 'zustand';
|
||||||
import type {
|
import type { SelectedNode, NetworkFilters } from '@/types/referralNetwork';
|
||||||
NetworkGraphData,
|
|
||||||
SelectedNode,
|
|
||||||
NetworkFilters,
|
|
||||||
NetworkUserNode,
|
|
||||||
NetworkCampaignNode,
|
|
||||||
} from '@/types/referralNetwork';
|
|
||||||
|
|
||||||
const DEFAULT_FILTERS: NetworkFilters = {
|
const DEFAULT_FILTERS: NetworkFilters = {
|
||||||
campaigns: [],
|
campaigns: [],
|
||||||
@@ -14,51 +8,33 @@ const DEFAULT_FILTERS: NetworkFilters = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
interface ReferralNetworkState {
|
interface ReferralNetworkState {
|
||||||
networkData: NetworkGraphData | null;
|
|
||||||
selectedNode: SelectedNode;
|
selectedNode: SelectedNode;
|
||||||
hoveredNodeId: string | null;
|
hoveredNodeId: string | null;
|
||||||
highlightedNodes: Set<string>;
|
highlightedNodes: Set<string>;
|
||||||
searchQuery: string;
|
|
||||||
searchResults: { users: NetworkUserNode[]; campaigns: NetworkCampaignNode[] };
|
|
||||||
filters: NetworkFilters;
|
filters: NetworkFilters;
|
||||||
isFiltersOpen: boolean;
|
isFiltersOpen: boolean;
|
||||||
|
|
||||||
setNetworkData: (data: NetworkGraphData) => void;
|
|
||||||
setSelectedNode: (node: SelectedNode) => void;
|
setSelectedNode: (node: SelectedNode) => void;
|
||||||
setHoveredNode: (id: string | null) => void;
|
setHoveredNode: (id: string | null) => void;
|
||||||
setHighlightedNodes: (nodes: Set<string>) => void;
|
setHighlightedNodes: (nodes: Set<string>) => void;
|
||||||
setSearchQuery: (query: string) => void;
|
|
||||||
setSearchResults: (results: {
|
|
||||||
users: NetworkUserNode[];
|
|
||||||
campaigns: NetworkCampaignNode[];
|
|
||||||
}) => void;
|
|
||||||
updateFilters: (filters: Partial<NetworkFilters>) => void;
|
updateFilters: (filters: Partial<NetworkFilters>) => void;
|
||||||
resetFilters: () => void;
|
resetFilters: () => void;
|
||||||
setIsFiltersOpen: (open: boolean) => void;
|
setIsFiltersOpen: (open: boolean) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const useReferralNetworkStore = create<ReferralNetworkState>()((set) => ({
|
export const useReferralNetworkStore = create<ReferralNetworkState>()((set) => ({
|
||||||
networkData: null,
|
|
||||||
selectedNode: null,
|
selectedNode: null,
|
||||||
hoveredNodeId: null,
|
hoveredNodeId: null,
|
||||||
highlightedNodes: new Set<string>(),
|
highlightedNodes: new Set<string>(),
|
||||||
searchQuery: '',
|
|
||||||
searchResults: { users: [], campaigns: [] },
|
|
||||||
filters: { ...DEFAULT_FILTERS },
|
filters: { ...DEFAULT_FILTERS },
|
||||||
isFiltersOpen: false,
|
isFiltersOpen: false,
|
||||||
|
|
||||||
setNetworkData: (data) => set({ networkData: data }),
|
|
||||||
|
|
||||||
setSelectedNode: (node) => set({ selectedNode: node }),
|
setSelectedNode: (node) => set({ selectedNode: node }),
|
||||||
|
|
||||||
setHoveredNode: (id) => set({ hoveredNodeId: id }),
|
setHoveredNode: (id) => set({ hoveredNodeId: id }),
|
||||||
|
|
||||||
setHighlightedNodes: (nodes) => set({ highlightedNodes: nodes }),
|
setHighlightedNodes: (nodes) => set({ highlightedNodes: nodes }),
|
||||||
|
|
||||||
setSearchQuery: (query) => set({ searchQuery: query }),
|
|
||||||
|
|
||||||
setSearchResults: (results) => set({ searchResults: results }),
|
|
||||||
|
|
||||||
updateFilters: (partial) =>
|
updateFilters: (partial) =>
|
||||||
set((state) => ({
|
set((state) => ({
|
||||||
filters: { ...state.filters, ...partial },
|
filters: { ...state.filters, ...partial },
|
||||||
|
|||||||
Reference in New Issue
Block a user