MCPcopy Index your code
hub / github.com/wavetermdev/waveterm / ModalsRenderer

Function ModalsRenderer

frontend/app/modals/modalsrenderer.tsx:16–57  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

14import { getModalComponent } from "./modalregistry";
15
16const ModalsRenderer = () => {
17 const clientData = jotai.useAtomValue(ClientModel.getInstance().clientAtom);
18 const [newInstallOnboardingOpen, setNewInstallOnboardingOpen] = jotai.useAtom(modalsModel.newInstallOnboardingOpen);
19 const [upgradeOnboardingOpen, setUpgradeOnboardingOpen] = jotai.useAtom(modalsModel.upgradeOnboardingOpen);
20 const [modals] = jotai.useAtom(modalsModel.modalsAtom);
21 const rtn: React.ReactElement[] = [];
22 for (const modal of modals) {
23 const ModalComponent = getModalComponent(modal.displayName);
24 if (ModalComponent) {
25 rtn.push(<ModalComponent key={modal.displayName} {...modal.props} />);
26 }
27 }
28 if (newInstallOnboardingOpen) {
29 rtn.push(<NewInstallOnboardingModal key={NewInstallOnboardingModal.displayName} />);
30 }
31 if (upgradeOnboardingOpen) {
32 rtn.push(<UpgradeOnboardingModal key={UpgradeOnboardingModal.displayName} />);
33 }
34 useEffect(() => {
35 if (!clientData.tosagreed) {
36 setNewInstallOnboardingOpen(true);
37 }
38 }, [clientData]);
39
40 useEffect(() => {
41 if (!globalPrimaryTabStartup) {
42 return;
43 }
44 if (!clientData.tosagreed) {
45 return;
46 }
47 const lastVersion = clientData.meta?.["onboarding:lastversion"] ?? "v0.0.0";
48 if (semver.lt(lastVersion, CurrentOnboardingVersion)) {
49 setUpgradeOnboardingOpen(true);
50 }
51 }, []);
52 useEffect(() => {
53 globalStore.set(atoms.modalOpen, rtn.length > 0);
54 }, [rtn]);
55
56 return <>{rtn}</>;
57};
58
59export { ModalsRenderer };

Callers

nothing calls this directly

Calls 4

getModalComponentFunction · 0.90
pushMethod · 0.80
setMethod · 0.80
getInstanceMethod · 0.45

Tested by

no test coverage detected