From 9cf09cafc61301d430e62811ed4f7480c1a7a803 Mon Sep 17 00:00:00 2001 From: foxplorer Date: Fri, 11 Apr 2025 23:03:58 -0500 Subject: [PATCH 1/2] NoMncModal --- frontend/src/App.tsx | 27 ++- frontend/src/components/NoMncModal.css | 14 ++ frontend/src/components/NoMncModal.tsx | 183 ++++++++++++++++++++ frontend/src/utils/checkForMetaNetClient.ts | 14 ++ 4 files changed, 237 insertions(+), 1 deletion(-) create mode 100644 frontend/src/components/NoMncModal.css create mode 100644 frontend/src/components/NoMncModal.tsx create mode 100644 frontend/src/utils/checkForMetaNetClient.ts diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 292cc01..d56fed8 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,14 +1,39 @@ -import React from "react" +import React, { useState, useEffect} from "react" import { BrowserRouter as Router, Routes, Route, Link } from "react-router-dom" import { Typography, Container, Button, Box, Grid } from "@mui/material" import ActivePollsPage from "./components/ActivePollsPage" import CreatePoll from "./components/CreatePollForm" import MyPolls from "./components/MyPollsPage" import CompletedPolls from "./components/CompletePollsPage" +import checkForMetaNetClient from './utils/checkForMetaNetClient' +import NoMncModal from './components/NoMncModal' + const App: React.FC = () => { + const [isMncMissing, setIsMncMissing] = useState(false) + + useEffect(() => { + const intervalId = setInterval(() => { + checkForMetaNetClient().then(hasMNC => { + if (hasMNC === 0) { + setIsMncMissing(true) // Open modal if MNC is not found + } else { + setIsMncMissing(false) // Ensure modal is closed if MNC is found + clearInterval(intervalId) + } + }).catch(error => { + console.error('Error checking for MetaNet Client:', error) + }) + }, 1000) + // Return a cleanup function + return () => { + clearInterval(intervalId) + } + }, []) + return ( + { setIsMncMissing(false) }} /> Pollr diff --git a/frontend/src/components/NoMncModal.css b/frontend/src/components/NoMncModal.css new file mode 100644 index 0000000..8874337 --- /dev/null +++ b/frontend/src/components/NoMncModal.css @@ -0,0 +1,14 @@ +.focusBorderNone { + &:focus { + outline: none; + } +} + +a { + color: #1976d2; + text-decoration: none; + + &:hover { + text-decoration: underline; + } +} \ No newline at end of file diff --git a/frontend/src/components/NoMncModal.tsx b/frontend/src/components/NoMncModal.tsx new file mode 100644 index 0000000..10aa975 --- /dev/null +++ b/frontend/src/components/NoMncModal.tsx @@ -0,0 +1,183 @@ +import React from 'react' +import { Modal, Box, Typography, Button, IconButton } from '@mui/material' +import './NoMncModal.css' + +const style = { + position: 'absolute', + top: '40%', + left: '50%', + transform: 'translate(-50%, -50%)', + width: { xs: '90%', sm: 500 }, + bgcolor: 'background.paper', + borderRadius: '12px', + boxShadow: '0 8px 32px rgba(0, 0, 0, 0.2)', + p: 4, + border: '1px solid rgba(255, 255, 255, 0.1)', + background: 'linear-gradient(145deg, #1a1a1a, #2a2a2a)', + color: 'white', + overflow: 'hidden', + '&::before': { + content: '""', + position: 'absolute', + top: 0, + left: 0, + right: 0, + height: '4px', + background: 'linear-gradient(90deg, #40E0D0, #00CED1)', + } +} + +interface NoMncModalProps { + open: boolean + onClose: () => void +} + +const NoMncModal: React.FC = ({ open, onClose }) => { + return ( + + + + + + + + + + + + + + + + + + MetaNet Client Required + + + + + Pollr requires the MetaNet Client to function properly. If you don't have it yet, you can download it for your platform: + + + + + + + + + + + + + + ) +} + +export default NoMncModal diff --git a/frontend/src/utils/checkForMetaNetClient.ts b/frontend/src/utils/checkForMetaNetClient.ts new file mode 100644 index 0000000..9d7bdd5 --- /dev/null +++ b/frontend/src/utils/checkForMetaNetClient.ts @@ -0,0 +1,14 @@ +import { WalletClient } from '@bsv/sdk' + +export default async function checkForMetaNetClient (): Promise { + try { + const result = (await new WalletClient('json-api', 'non-admin.com').getNetwork()).network + if (result === 'mainnet' || result === 'testnet') { + return 1 + } else { + return -1 + } + } catch (e) { + return 0 + } +} From 7565c3fd3aba6f2000bfb7f1ab422e91e8685300 Mon Sep 17 00:00:00 2001 From: foxplorer Date: Fri, 11 Apr 2025 23:54:09 -0500 Subject: [PATCH 2/2] NoMncModal white font --- frontend/src/components/NoMncModal.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/NoMncModal.tsx b/frontend/src/components/NoMncModal.tsx index 10aa975..16c570e 100644 --- a/frontend/src/components/NoMncModal.tsx +++ b/frontend/src/components/NoMncModal.tsx @@ -77,7 +77,7 @@ const NoMncModal: React.FC = ({ open, onClose }) => { - + MetaNet Client Required