MCPcopy Create free account
hub / github.com/AmazingAng/PolyWorld / AlertManagerContent

Function AlertManagerContent

src/components/AlertManager.tsx:53–906  ·  view source on GitHub ↗
({
  open,
  onClose,
  alerts,
  history,
  onAddAlert,
  onRemoveAlert,
  onToggleAlert,
  onMarkRead,
  onMarkAllRead,
  onClearHistory,
  allMarkets,
  prefill,
  notifPermission,
  onRequestPermission,
  onHoverEnter,
  onHoverLeave,
}: AlertManagerProps)

Source from the content-addressed store, hash-verified

51}
52
53function AlertManagerContent({
54 open,
55 onClose,
56 alerts,
57 history,
58 onAddAlert,
59 onRemoveAlert,
60 onToggleAlert,
61 onMarkRead,
62 onMarkAllRead,
63 onClearHistory,
64 allMarkets,
65 prefill,
66 notifPermission,
67 onRequestPermission,
68 onHoverEnter,
69 onHoverLeave,
70}: AlertManagerProps) {
71 const { t } = useI18n();
72 const [activeTab, setActiveTab] = useState<Tab>("alerts");
73
74 // Create form state
75 const [formType, setFormType] = useState<AlertType>("price_cross");
76 const [formMarketSearch, setFormMarketSearch] = useState(prefill?.marketTitle || "");
77 const [formMarketId, setFormMarketId] = useState(prefill?.marketId || "");
78 const [formMarketTitle, setFormMarketTitle] = useState(prefill?.marketTitle || "");
79 const [formThreshold, setFormThreshold] = useState("50");
80 const [formDirection, setFormDirection] = useState<"above" | "below">("above");
81 const [formCategory, setFormCategory] = useState<Category | "">("");
82 const [formTag, setFormTag] = useState("");
83 const [formSignalType, setFormSignalType] = useState<SignalType | "">("");
84 const [formSignalStrength, setFormSignalStrength] = useState<"strong" | "moderate" | "weak">("moderate");
85 const [formMinUsdcSize, setFormMinUsdcSize] = useState("5000");
86 const [formHoursBeforeEnd, setFormHoursBeforeEnd] = useState("24");
87 const [showForm, setShowForm] = useState(!!prefill);
88
89 const handleKeyDown = useCallback(
90 (e: KeyboardEvent) => {
91 if (e.key === "Escape") onClose();
92 },
93 [onClose]
94 );
95
96 useEffect(() => {
97 if (!open) return;
98 document.addEventListener("keydown", handleKeyDown);
99 return () => document.removeEventListener("keydown", handleKeyDown);
100 }, [open, handleKeyDown]);
101
102 if (!open) return null;
103
104 // Market search results
105 const searchResults = formMarketSearch.length >= 2
106 ? allMarkets
107 .filter((m) => m.title.toLowerCase().includes(formMarketSearch.toLowerCase()))
108 .slice(0, 5)
109 : [];
110

Callers

nothing calls this directly

Calls 2

useI18nFunction · 0.90
formatTimeFunction · 0.85

Tested by

no test coverage detected