MCPcopy Create free account
hub / github.com/aagentah/nw_wrld / AddModuleModal

Function AddModuleModal

src/dashboard/modals/AddModuleModal.tsx:66–739  ·  view source on GitHub ↗
({
  isOpen,
  onClose,
  trackIndex,
  userData,
  setUserData,
  predefinedModules,
  skippedWorkspaceModules,
  onCreateNewModule: _onCreateNewModule,
  onEditModule,
  onConfirmRewrite,
  mode = "add-to-track",
}: AddModuleModalProps)

Source from the content-addressed store, hash-verified

64
65export const AddModuleModal = ({
66 isOpen,
67 onClose,
68 trackIndex,
69 userData,
70 setUserData,
71 predefinedModules,
72 skippedWorkspaceModules,
73 onEditModule,
74 onConfirmRewrite,
75 mode = "add-to-track",
76}: AddModuleModalProps) => {
77 const sendToProjector = useIPCSend("dashboard-to-projector");
78 const [hoveredPreviewModuleId, setHoveredPreviewModuleId] = useState<string | null>(null);
79 const [loadingPreviewModuleId, setLoadingPreviewModuleId] = useState<string | null>(null);
80 const [rewritingModuleId, setRewritingModuleId] = useState<string | null>(null);
81 const [rewriteError, setRewriteError] = useState<string | null>(null);
82 const hoveredPreviewModuleIdRef = useRef<string | null>(null);
83 const loadingPreviewModuleIdRef = useRef<string | null>(null);
84 const previewRequestRef = useRef<{ moduleId: string | null; requestId: string | null }>({
85 moduleId: null,
86 requestId: null,
87 });
88 const previewDispatchedRequestIdRef = useRef<string | null>(null);
89 const lastAutoPreviewSentRef = useRef<string | null>(null);
90 const previewClearTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);
91 const pendingClearAfterLoadRef = useRef(false);
92 const wasOpenRef = useRef(false);
93
94 const clearPreviewNow = useCallback(() => {
95 setHoveredPreviewModuleId(null);
96 setLoadingPreviewModuleId(null);
97 hoveredPreviewModuleIdRef.current = null;
98 loadingPreviewModuleIdRef.current = null;
99 previewRequestRef.current = {
100 moduleId: null,
101 requestId: null,
102 };
103 previewDispatchedRequestIdRef.current = null;
104 lastAutoPreviewSentRef.current = null;
105 pendingClearAfterLoadRef.current = false;
106 sendToProjector("clear-preview", {});
107 }, [sendToProjector]);
108
109 const schedulePreviewClear = useCallback(() => {
110 if (previewClearTimeoutRef.current) {
111 clearTimeout(previewClearTimeoutRef.current);
112 previewClearTimeoutRef.current = null;
113 }
114 previewClearTimeoutRef.current = setTimeout(() => {
115 previewClearTimeoutRef.current = null;
116 if (
117 hoveredPreviewModuleIdRef.current &&
118 hoveredPreviewModuleIdRef.current === loadingPreviewModuleIdRef.current
119 ) {
120 pendingClearAfterLoadRef.current = true;
121 return;
122 }
123 clearPreviewNow();

Callers

nothing calls this directly

Calls 5

useIPCSendFunction · 0.90
getActiveSetTracksFunction · 0.90
useIPCListenerFunction · 0.90
confirmActionFunction · 0.85
handleAddToTrackFunction · 0.85

Tested by

no test coverage detected