diff --git a/src/pages/ReferralNetwork/components/NetworkGraph.tsx b/src/pages/ReferralNetwork/components/NetworkGraph.tsx index 371cb25..5fa5bfe 100644 --- a/src/pages/ReferralNetwork/components/NetworkGraph.tsx +++ b/src/pages/ReferralNetwork/components/NetworkGraph.tsx @@ -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) diff --git a/src/pages/ReferralNetwork/components/NetworkSearch.tsx b/src/pages/ReferralNetwork/components/NetworkSearch.tsx index 5f30d36..735f0f9 100644 --- a/src/pages/ReferralNetwork/components/NetworkSearch.tsx +++ b/src/pages/ReferralNetwork/components/NetworkSearch.tsx @@ -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); diff --git a/src/store/referralNetwork.ts b/src/store/referralNetwork.ts index db12e20..903f22e 100644 --- a/src/store/referralNetwork.ts +++ b/src/store/referralNetwork.ts @@ -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; - 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) => void; - setSearchQuery: (query: string) => void; - setSearchResults: (results: { - users: NetworkUserNode[]; - campaigns: NetworkCampaignNode[]; - }) => void; updateFilters: (filters: Partial) => void; resetFilters: () => void; setIsFiltersOpen: (open: boolean) => void; } export const useReferralNetworkStore = create()((set) => ({ - networkData: null, selectedNode: null, hoveredNodeId: null, highlightedNodes: new Set(), - 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 },