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:
Fringg
2026-03-19 08:08:18 +03:00
parent 235eaec85f
commit 0f756d633d
3 changed files with 3 additions and 30 deletions

View File

@@ -113,8 +113,6 @@ export function NetworkGraph({ data, className }: NetworkGraphProps) {
const hoveredNodeId = useReferralNetworkStore((s) => s.hoveredNodeId);
const highlightedNodes = useReferralNetworkStore((s) => s.highlightedNodes);
const filters = useReferralNetworkStore((s) => s.filters);
const setNetworkData = useReferralNetworkStore((s) => s.setNetworkData);
const killFA2 = useCallback(() => {
if (fa2TimerRef.current !== null) {
clearTimeout(fa2TimerRef.current);
@@ -140,8 +138,6 @@ export function NetworkGraph({ data, className }: NetworkGraphProps) {
const graph = buildFullGraph(data);
graphRef.current = graph;
setNetworkData(data);
// Compute initial hidden set from current filters
const initialFilters = useReferralNetworkStore.getState().filters;
hiddenNodesRef.current = computeHiddenNodes(graph, initialFilters);
@@ -301,7 +297,7 @@ export function NetworkGraph({ data, className }: NetworkGraphProps) {
setSigmaInstance(null);
setGraphInstance(null);
};
}, [data, setSelectedNode, setHoveredNode, setNetworkData, killFA2]);
}, [data, setSelectedNode, setHoveredNode, killFA2]);
// Recompute hidden nodes when filters change, then refresh sigma
// (no graph rebuild — positions and Sigma instance preserved)

View File

@@ -117,6 +117,7 @@ export function NetworkSearch({ className }: NetworkSearchProps) {
ref={inputRef}
type="text"
value={inputValue}
maxLength={200}
onChange={(e) => setInputValue(e.target.value)}
onFocus={() => {
if (searchResults && debouncedQuery.length >= 2) setIsDropdownOpen(true);

View File

@@ -1,11 +1,5 @@
import { create } from 'zustand';
import type {
NetworkGraphData,
SelectedNode,
NetworkFilters,
NetworkUserNode,
NetworkCampaignNode,
} from '@/types/referralNetwork';
import type { SelectedNode, NetworkFilters } from '@/types/referralNetwork';
const DEFAULT_FILTERS: NetworkFilters = {
campaigns: [],
@@ -14,51 +8,33 @@ const DEFAULT_FILTERS: NetworkFilters = {
};
interface ReferralNetworkState {
networkData: NetworkGraphData | null;
selectedNode: SelectedNode;
hoveredNodeId: string | null;
highlightedNodes: Set<string>;
searchQuery: string;
searchResults: { users: NetworkUserNode[]; campaigns: NetworkCampaignNode[] };
filters: NetworkFilters;
isFiltersOpen: boolean;
setNetworkData: (data: NetworkGraphData) => void;
setSelectedNode: (node: SelectedNode) => void;
setHoveredNode: (id: string | null) => void;
setHighlightedNodes: (nodes: Set<string>) => void;
setSearchQuery: (query: string) => void;
setSearchResults: (results: {
users: NetworkUserNode[];
campaigns: NetworkCampaignNode[];
}) => void;
updateFilters: (filters: Partial<NetworkFilters>) => void;
resetFilters: () => void;
setIsFiltersOpen: (open: boolean) => void;
}
export const useReferralNetworkStore = create<ReferralNetworkState>()((set) => ({
networkData: null,
selectedNode: null,
hoveredNodeId: null,
highlightedNodes: new Set<string>(),
searchQuery: '',
searchResults: { users: [], campaigns: [] },
filters: { ...DEFAULT_FILTERS },
isFiltersOpen: false,
setNetworkData: (data) => set({ networkData: data }),
setSelectedNode: (node) => set({ selectedNode: node }),
setHoveredNode: (id) => set({ hoveredNodeId: id }),
setHighlightedNodes: (nodes) => set({ highlightedNodes: nodes }),
setSearchQuery: (query) => set({ searchQuery: query }),
setSearchResults: (results) => set({ searchResults: results }),
updateFilters: (partial) =>
set((state) => ({
filters: { ...state.filters, ...partial },