{"version":3,"sources":["images/logo_light.svg","images/bitcoin.svg","images/login.svg","images/reachOut.svg","images/tipRequest.svg","images/pay.svg","images/delivered.svg","components/Common.tsx","components/Button.tsx","components/Home.tsx","components/Invoice/invoiceRepo.ts","images/lightning.svg","components/Invoice/QR.tsx","components/Invoice/utils.ts","components/Invoice/Invoice.tsx","components/Invoice/index.ts","util/useInterval.ts","components/Services/userRepo.ts","components/Setup/index.ts","components/Setup/Setup.tsx","components/MyReacher.tsx","App.tsx","serviceWorkerRegistration.js","reportWebVitals.js","index.tsx","components/Invoice/QRCode.module.css"],"names":["orangeColor","isTest","find","f","window","location","host","indexOf","reacherSuffix","ReacherFooter","pb","pt","fontSize","href","isExternal","Button","children","onClick","secondary","rest","props","borderColor","color","variant","backgroundColor","colorScheme","_hover","opacity","toSetup","spacing","base","md","lg","Home","minH","p","style","textAlign","src","logo","height","display","as","size","border","borderRadius","padding","maxW","mb","columns","login","alt","reachOut","bitcoin","tipRequest","pay","delivered","fetchInvoiceIsPaid","strikeInvoiceId","a","fetch","response","json","fetchInvoice","emailId","createLnInvoice","method","QRCode","data","expired","animationDuration","imageSettings","lightning","width","excavate","position","w","viewBox","x","y","fill","stroke","strokeWidth","rx","top","left","className","styles","rect","strokeDashoffset","strokeDasharray","h","bg","alignItems","justifyContent","boxSizing","undefined","value","renderAs","normalizeCurrency","currency","userColor","Invoice","id","useParams","useState","error","isExpired","setExpired","copied","setCopied","invoice","setInvoice","lnInvoice","setLnInvoice","isPaid","setIsPaid","useEffect","getInvoice","refreshLnInvoice","callback","delay","savedCallback","useRef","current","setInterval","clearInterval","useInterval","checkInvoiceStatus","paid","console","result","expirationInSeconds","setTimeout","ReacherName","fontWeight","reachable","name","inner","displayAmount","amount","locales","Intl","NumberFormat","format","replace","formatCurrency","costUsd","navigator","language","mt","lnInvoiceId","QR","clipboard","writeText","getUserModel","redirect","status","getCurrency","strikeUsername","text","getReacherEmailAvailable","prefix","updateSetupConfig","config","body","JSON","stringify","headers","updateWhitelist","whitelist","emailAddresses","Setup","sc","setupConfig","onComplete","onEdit","edit","React","reacherPrefixInvalid","setReacherPrefixInvalid","reacherPrefixTaken","setReacherPrefixTaken","usernameInvalid","setUsernameInvalid","isSaving","setSaving","setError","setSetupConfigTemp","setSetupConfig","action","handleSubmit","event","preventDefault","updateCurrency","c","checkReacherEmail","reacherEmailPrefix","test","available","isNew","reacherPrefix","tipAmount","price","toFixed","onSubmit","placeholder","onChange","v","target","required","autoComplete","isInvalid","onBlur","textColor","type","destinationEmail","defaultValue","parseFloat","htmlFor","isChecked","disabled","checked","isLoading","Whitelist","wl","emails","recentSenders","saved","setSaved","setWhitelist","noOfLines","currentTarget","length","isNumeric","map","r","fromName","emailAddress","messageCount","MyReacher","editing","setEditing","userModel","setUserModel","setLoading","reloadAccount","onSaved","user","initialColorMode","useSystemColorMode","fonts","heading","theme","extendTheme","global","mode","App","avatarRedirectUrl","exact","path","component","displayName","Boolean","hostname","match","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","baseUrl","document","getElementsByTagName","getAttribute","rootElement","getElementById","ReactDOM","render","basename","serviceWorker","ready","registration","unregister","catch","message","module","exports"],"mappings":"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","file":"static/js/main.969e8b79.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/logo_light.bd63028f.svg\";","export default __webpack_public_path__ + \"static/media/bitcoin.e25496aa.svg\";","export default __webpack_public_path__ + \"static/media/login.5188d4b4.svg\";","export default __webpack_public_path__ + \"static/media/reachOut.870b0a4f.svg\";","export default __webpack_public_path__ + \"static/media/tipRequest.9c491b54.svg\";","export default __webpack_public_path__ + \"static/media/pay.a32e7161.svg\";","export default __webpack_public_path__ + \"static/media/delivered.ad10f668.svg\";","import * as React from 'react';\r\nimport { Center, Link, Text } from \"@chakra-ui/react\";\r\n\r\nexport const orangeColor = \"#fdaa26\";\r\nexport const isTest = !![\"localhost\", \"test\"].find(f => window.location.host.indexOf(f) > -1);\r\nexport const reacherSuffix = `@${(isTest ? \"testing.\" : \"\")}reacher.me`;\r\n\r\nexport const ReacherFooter = () => (\r\n
\r\n \r\n \r\n Privacy Notice\r\n {\" | \"}\r\n \r\n Terms of Service\r\n {\" | \"}\r\n \r\n Support\r\n {\" | \"}\r\n \r\n GitHub\r\n \r\n \r\n
\r\n);\r\n","import { Button as ChakraButton, ButtonProps } from \"@chakra-ui/react\";\r\nimport * as React from 'react';\r\n\r\nimport { orangeColor } from './Common';\r\nexport const Button: React.FC = ({\r\n children,\r\n onClick,\r\n href,\r\n secondary,\r\n ...rest\r\n}) => {\r\n if (href && !onClick) {\r\n onClick = () => { window.location.href = href;}\r\n }\r\n const props: ButtonProps = secondary ? { borderColor: orangeColor, color: orangeColor, variant: \"outline\" } : { backgroundColor: orangeColor, color: \"black\" };\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nexport default Button;","import {\r\n Box, Center, Grid, Heading, Image, Link, SimpleGrid, Text, VStack, Divider\r\n} from \"@chakra-ui/react\";\r\nimport * as React from 'react';\r\nimport logo from '../images/logo_light.svg';\r\nimport bitcoin from '../images/bitcoin.svg';\r\nimport login from '../images/login.svg';\r\nimport reachOut from '../images/reachOut.svg';\r\nimport tipRequest from '../images/tipRequest.svg';\r\nimport pay from '../images/pay.svg';\r\nimport delivered from '../images/delivered.svg';\r\n\r\nimport { orangeColor, ReacherFooter } from './Common';\r\nimport Button from './Button';\r\n\r\nconst toSetup =\r\n (\r\n \r\n to set up your Reacher email\r\n );\r\n\r\nconst spacing = { base: 3, md: 5, lg: 10 };\r\n\r\nconst Home: React.FC = () => {\r\n return (<>\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Get Paid to Get Reached\r\n \r\n \r\n Filter out the noise\r\n \r\n \r\n
\r\n {toSetup}\r\n \r\n \r\n How it works\r\n \r\n \r\n \r\n \r\n Step 1\r\n Sign up for a free Reacher email address that forwards to your actual email address.\r\n \r\n Sign up for Reacher email\r\n Someone sends an email\r\n \r\n Step 2\r\n Someone sends an email to your Reacher email address.\r\n \r\n \r\n Step 3\r\n They get an email from Reacher requesting a Bitcoin tip to ensure you see their email.\r\n \r\n They get a tip request\r\n Reacher website for payment\r\n \r\n Step 4\r\n They get directed to the Reacher website to pay the tip.\r\n \r\n \r\n Step 5\r\n You receive an email from Reacher with their message.\r\n You can reply to this email to respond to them.\r\n \r\n Their email gets delivered\r\n \r\n \r\n {toSetup}\r\n \r\n New to Bitcoin?{\" \"}\r\n \r\n Click here\r\n {\" \"}\r\n to download Strike and get started.\r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\nexport default Home;","\r\nexport async function fetchInvoiceIsPaid(strikeInvoiceId: string) {\r\n const response = await fetch(`/api/invoice/${strikeInvoiceId}/paid`);\r\n return response.json() as Promise;\r\n}\r\n\r\nexport async function fetchInvoice(emailId: string) {\r\n const response = await fetch(`/api/invoice/${emailId}`);\r\n return response.json() as Promise;\r\n}\r\n\r\nexport async function createLnInvoice(strikeInvoiceId: string) {\r\n const response = await fetch(`/api/invoice/${strikeInvoiceId}/lnInvoice`, { method: \"post\" });\r\n return response.json() as Promise;\r\n}\r\nexport interface Invoice {\r\n id: string;\r\n strikeInvoiceId: string;\r\n costUsd: number;\r\n paid: boolean;\r\n reachable: Reachable;\r\n}\r\ninterface Reachable {\r\n id: string;\r\n name: string;\r\n description: string;\r\n emailAddress: string;\r\n}\r\n\r\ninterface InvoiceStatus {\r\n paid: boolean;\r\n}\r\n\r\nexport interface LightningInvoice {\r\n lnInvoiceId: string;\r\n expirationInSeconds: number;\r\n}","export default __webpack_public_path__ + \"static/media/lightning.42b6a822.svg\";","import * as React from \"react\";\r\n//import qrCodeConfig from \"./qrCodeConfig\";\r\nimport styles from \"./QRCode.module.css\";\r\nimport QRCodeReact from 'qrcode.react';\r\nimport lightning from '../../images/lightning.svg';\r\nimport { Center, Box, Flex } from \"@chakra-ui/react\";\r\n\r\nconst QRCode: React.FC<{ data: string, color: string, expired?: boolean, animationDuration: number, onClick?: (a: any) => any }> = ({\r\n data,\r\n color,\r\n expired,\r\n animationDuration,\r\n onClick,\r\n}) => {\r\n const size = 280;\r\n\r\n const imageSettings = {\r\n src: lightning,\r\n height: 48,\r\n width: 48,\r\n excavate: true,\r\n };\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n );\r\n}\r\nexport default QRCode;","const normalizeCurrency = (currency: string) => {\r\n switch (currency) {\r\n case \"USDT\":\r\n return \"USD\";\r\n default:\r\n return currency;\r\n }\r\n};\r\n\r\nexport const formatCurrency = ({ amount, currency = \"USD\", locales = \"en\" }: { amount: number, currency: string, locales: string }) => {\r\n return new Intl.NumberFormat(locales, {\r\n style: \"currency\",\r\n currency: normalizeCurrency(currency),\r\n })\r\n .format(amount)\r\n .replace(/\\.00$/, \"\");\r\n};\r\n","import { Box, Center, Grid, Image, Link, Text, VStack } from \"@chakra-ui/react\";\r\nimport * as React from \"react\";\r\nimport { FC, ReactNode, useEffect, useState } from \"react\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport { ToastContainer } from 'react-toastify';\r\nimport logo from '../../images/logo_light.svg';\r\nimport useInterval from '../../util/useInterval';\r\nimport bitcoin from '../../images/bitcoin.svg';\r\nimport { createLnInvoice, fetchInvoice, fetchInvoiceIsPaid, Invoice, LightningInvoice } from './invoiceRepo';\r\nimport QRCode from \"./QR\";\r\nimport { formatCurrency } from \"./utils\";\r\nimport Button from '../Button';\r\nimport { ReacherFooter } from '../Common';\r\n\r\nconst userColor = \"#fdaa26\";\r\n\r\nconst InvoiceComponent: FC = () => {\r\n let { id } = useParams<{ id: string }>();\r\n const [error, setError] = useState();\r\n const [isExpired, setExpired] = useState();\r\n const [copied, setCopied] = useState();\r\n let [invoice, setInvoice] = useState();\r\n const [lnInvoice, setLnInvoice] = useState();\r\n const [isPaid, setIsPaid] = useState();\r\n useEffect(() => {\r\n getInvoice();\r\n }, [])\r\n useEffect(() => {\r\n if (!invoice) {\r\n return;\r\n }\r\n refreshLnInvoice();\r\n }, [invoice]);\r\n useInterval(() => checkInvoiceStatus(), 2000);\r\n\r\n const checkInvoiceStatus = async () => {\r\n if (isPaid)\r\n return;\r\n if (invoice && !isExpired) {\r\n try {\r\n const result = await fetchInvoiceIsPaid(invoice.strikeInvoiceId);\r\n if (result.paid) {\r\n setIsPaid(true);\r\n return;\r\n }\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n const getInvoice = async () => {\r\n const result = await fetchInvoice(id);\r\n if (result.paid) {\r\n setIsPaid(true);\r\n }\r\n setInvoice(result);\r\n }\r\n const refreshLnInvoice = async () => {\r\n if (isPaid) {\r\n return;\r\n }\r\n const result = await createLnInvoice(invoice!.strikeInvoiceId);\r\n setExpired(false);\r\n result.expirationInSeconds -= 10;\r\n setLnInvoice(result);\r\n setTimeout(() => setExpired(true), (result.expirationInSeconds) * 1000)\r\n }\r\n\r\n const ReacherName = () => {invoice?.reachable.name}\r\n\r\n let inner: ReactNode = null;\r\n if (error) {\r\n inner = \r\n Error occured. Please try again later.\r\n \r\n }\r\n else if (isPaid) {\r\n inner = \r\n \r\n Thank you. Your email has been delivered to .\r\n \r\n \r\n \r\n Click here\r\n {\" \"}\r\n to get your own Reacher email address.\r\n \r\n \r\n }\r\n else if (!invoice || !lnInvoice) {\r\n inner = \r\n Loading details. Please wait...\r\n \r\n }\r\n else {\r\n const displayAmount = formatCurrency({\r\n amount: invoice.costUsd,\r\n currency: \"USD\",\r\n locales: window.navigator.language,\r\n });\r\n\r\n inner =\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n Tip {displayAmount}\r\n \r\n \r\n then Reacher will deliver your email\r\n \r\n Just scan or click the QR code below\r\n \r\n \r\n {lnInvoice.expirationInSeconds && (\r\n \r\n )}\r\n \r\n \r\n or paste it in your Bitcoin lightning wallet\r\n \r\n {isExpired ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n All tips go directly to \r\n \r\n \r\n New to Bitcoin?{\" \"}\r\n \r\n Click here\r\n {\" \"}\r\n to get started with Strike.\r\n \r\n \r\n \r\n \r\n }\r\n\r\n return (\r\n <>\r\n \r\n
\r\n {inner}\r\n
\r\n
\r\n \r\n \r\n );\r\n}\r\nexport default InvoiceComponent;","import Invoice from \"./Invoice\";\r\n\r\nexport default Invoice;\r\n","import { useEffect, useRef } from 'react'\r\n\r\nexport default function useInterval(callback: () => any, delay: number) {\r\n const savedCallback = useRef(callback)\r\n\r\n // Remember the latest callback if it changes.\r\n useEffect(() => {\r\n savedCallback.current = callback\r\n }, [callback])\r\n\r\n // Set up the timeout.\r\n useEffect(() => {\r\n const tick = () => {\r\n savedCallback.current();\r\n }\r\n if (delay !== null) {\r\n let id = setInterval(tick, delay);\r\n return () => clearInterval(id);\r\n }\r\n }, [delay]);\r\n}","\r\nexport async function getUserModel() {\r\n const response = await fetch(`/api/user`, { redirect: 'manual' });\r\n if (!response.status || response.status === 302) {\r\n return null;\r\n }\r\n return response.json() as Promise;\r\n}\r\n\r\nexport async function getCurrency(strikeUsername: string) {\r\n const response = await fetch(`/api/user/currency?strikeUsername=${strikeUsername}`);\r\n return response.status === 204 ? null : response.text();\r\n}\r\nexport async function getReacherEmailAvailable(prefix: string) {\r\n const response = await fetch(`/api/user/isavailable?prefix=${prefix}`);\r\n return response.status === 204 ? false : response.json() as Promise;\r\n}\r\n\r\nexport async function updateSetupConfig(config?: SetupConfig) {\r\n await fetch(`/api/user`, {\r\n method: 'post',\r\n body: JSON.stringify(config),\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n}\r\n\r\nexport async function updateWhitelist(whitelist: string) {\r\n await fetch(`/api/user/whitelist`, {\r\n method: 'put',\r\n body: JSON.stringify({ emailAddresses: whitelist }),\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n}\r\n\r\nexport interface UserModel {\r\n user: LoggedInUser;\r\n config: SetupConfig;\r\n recentSenders: RecentSender[];\r\n whitelist: Whitelist\r\n}\r\n\r\nexport interface RecentSender {\r\n emailAddress: string,\r\n fromName: string,\r\n messageCount: number\r\n}\r\n\r\nexport interface Whitelist {\r\n emailAddresses: string;\r\n}\r\n\r\nexport interface SetupConfig {\r\n name?: string;\r\n strikeUsername?: string;\r\n price?: number;\r\n reacherEmailPrefix?: string;\r\n destinationEmail?: string;\r\n currency?: string;\r\n disabled: boolean;\r\n}\r\n\r\nexport interface LoggedInUser {\r\n email: string;\r\n id: string;\r\n name: string;\r\n strikeUsername: string;\r\n}","import Setup from \"./Setup\";\r\n\r\nexport default Setup;\r\n","import {\r\n FormControl, FormHelperText, FormLabel, Input, InputGroup,\r\n InputLeftAddon,\r\n InputRightAddon, Link, SimpleGrid, Switch, Text, VStack,\r\n Heading, Center\r\n} from \"@chakra-ui/react\";\r\nimport * as React from 'react';\r\nimport Button from '../Button';\r\nimport { orangeColor, reacherSuffix } from \"../Common\";\r\nimport { getCurrency, getReacherEmailAvailable, SetupConfig, updateSetupConfig } from '../Services/userRepo';\r\n\r\nconst Setup: React.FC<{ setupConfig: SetupConfig, onComplete: (saved?: boolean) => any, onEdit: () => any, edit: boolean }> = ({ setupConfig: sc, onComplete, onEdit, edit }) => {\r\n let [reacherPrefixInvalid, setReacherPrefixInvalid] = React.useState(false);\r\n let [reacherPrefixTaken, setReacherPrefixTaken] = React.useState(false);\r\n let [usernameInvalid, setUsernameInvalid] = React.useState(false);\r\n let [isSaving, setSaving] = React.useState(false);\r\n let [error, setError] = React.useState(false);\r\n let [setupConfig, setSetupConfigTemp] = React.useState(sc);\r\n const setSetupConfig = (action: (config: SetupConfig) => SetupConfig) => {\r\n setSetupConfigTemp(action as any)\r\n }\r\n const handleSubmit = async (event: React.FormEvent) => {\r\n event.preventDefault();\r\n try {\r\n setSaving(true);\r\n setError(false);\r\n await updateSetupConfig(setupConfig);\r\n onComplete(true);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n setError(true);\r\n }\r\n finally {\r\n setSaving(false);\r\n }\r\n }\r\n const updateCurrency = async () => {\r\n const currency = await getCurrency(setupConfig!.strikeUsername!);\r\n setUsernameInvalid(!currency);\r\n if (currency) {\r\n setSetupConfig(c => ({ ...c, currency }))\r\n }\r\n }\r\n const checkReacherEmail = async () => {\r\n setReacherPrefixTaken(false);\r\n setReacherPrefixInvalid(false);\r\n if (!setupConfig.reacherEmailPrefix) {\r\n return;\r\n }\r\n const patternMatches = /[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+)*/.test(setupConfig!.reacherEmailPrefix!);\r\n if (!patternMatches) {\r\n setReacherPrefixInvalid(true);\r\n return;\r\n }\r\n const available = await getReacherEmailAvailable(setupConfig!.reacherEmailPrefix!);\r\n setReacherPrefixTaken(!available);\r\n }\r\n const isNew = !sc.reacherEmailPrefix;\r\n const reacherPrefix = setupConfig!.reacherEmailPrefix ?? \"\";\r\n const tipAmount = setupConfig!.price?.toFixed(2);\r\n return (<>\r\n \r\n
\r\n {edit ? \"Update \" : isNew ? \"Set Up \" : \"\"} Your Reacher Profile\r\n
\r\n {edit ? (\r\n To set up your Reacher email address, provide the details below, and hit 'Submit' to save your changes.\r\n ) : (\r\n See your Reacher profile below. Hit 'Update Profile' to change any of the values below.\r\n )}\r\n
\r\n \r\n \r\n Reacher Email:\r\n {edit ? \r\n setSetupConfig(c => ({ ...c, reacherEmailPrefix: v.target.value }))}\r\n required\r\n autoComplete=\"off\"\r\n isInvalid={reacherPrefixTaken}\r\n onBlur={checkReacherEmail}\r\n />\r\n \r\n : {reacherPrefix}{reacherSuffix}}\r\n {reacherPrefixInvalid ?\r\n ({setupConfig.reacherEmailPrefix}{reacherSuffix} is not a valid email prefix. Try something else) :\r\n reacherPrefixTaken ? ({setupConfig.reacherEmailPrefix}{reacherSuffix} is taken. Try something else) :\r\n (This is your reacher email where people can pay a tip to reach you.)\r\n }\r\n \r\n \r\n Display Name:\r\n {edit ? setSetupConfig(c => ({ ...c, name: v.target.value }))}\r\n required\r\n autoComplete=\"off\"\r\n /> : {setupConfig!.name}}\r\n This is the name people will see when referring to you in emails we send.\r\n \r\n \r\n Strike Username:\r\n {edit ? setSetupConfig(c => ({ ...c, strikeUsername: v.target.value }))}\r\n onBlur={() => updateCurrency()}\r\n required\r\n autoComplete=\"off\"\r\n /> : {setupConfig!.strikeUsername}}\r\n {usernameInvalid ? (We couldn't find this strike user, so there's a good chance the username is invalid.) :\r\n (This is the the username of the Strike account that will receive the funds.)}\r\n \r\n \r\n Destination Email:\r\n {edit ? setSetupConfig(c => ({ ...c, destinationEmail: v.target.value }))}\r\n required\r\n autoComplete=\"off\"\r\n /> : {setupConfig!.destinationEmail}}\r\n This is the inbox emails will go to once a tip has been paid.\r\n \r\n \r\n Tip Amount ({setupConfig.currency}):\r\n {edit ? \r\n \r\n {\r\n var value = parseFloat(v.target.value);\r\n if (value > 0) {\r\n setSetupConfig(c => ({ ...c, price: parseFloat(value.toFixed(2)) }))\r\n }\r\n }}\r\n required\r\n autoComplete=\"off\"\r\n />\r\n : ${tipAmount}}\r\n This is the amount people must tip in order to get their emails delivered to your inbox.\r\n \r\n \r\n \r\n Enabled?\r\n \r\n {edit ? {\r\n setSetupConfig(c => ({ ...c, disabled: !v.target.checked }))\r\n }} /> : {setupConfig.disabled ? \"NO\" : \"YES\"}}\r\n You can disable your reacher email and nothing will happen if someone sends an email to that address. \r\n \r\n {edit && \r\n By hitting 'Submit' below, you are agreeing to the {\" \"}\r\n \r\n Terms of Service\r\n {\" and \"}\r\n \r\n Privacy Policy\r\n \r\n }\r\n {error && \r\n An error occurred. Please try again or see console for details.\r\n }\r\n {isNew ? : edit ? \r\n \r\n \r\n : }\r\n \r\n
\r\n
\r\n );\r\n}\r\nexport default Setup;","import {\r\n Box, Center, Grid, Heading, Image, Link, Spinner, Text, VStack, Divider, Textarea, FormLabel, FormControl, SimpleGrid, TableContainer, Table, Thead, Tr, Th, Tbody, Td, FormHelperText\r\n} from \"@chakra-ui/react\";\r\nimport * as React from 'react';\r\nimport logo from '../images/logo_light.svg';\r\nimport { ReacherFooter, orangeColor } from './Common';\r\nimport { getUserModel, RecentSender, SetupConfig, updateWhitelist, UserModel } from \"./Services/userRepo\";\r\nimport Setup from \"./Setup\";\r\nimport Button from \"./Button\";\r\n\r\nconst MyReacher: React.FC = () => {\r\n const [editing, setEditing] = React.useState(false);\r\n const [userModel, setUserModel] = React.useState();\r\n const [error, setError] = React.useState(false);\r\n const [saved, setSaved] = React.useState(false);\r\n let [isLoading, setLoading] = React.useState(false);\r\n const reloadAccount = async () => {\r\n try {\r\n setLoading(true);\r\n var userModel = await getUserModel();\r\n if (!userModel) {\r\n window.location.href = '/account/login';\r\n return;\r\n }\r\n const { config } = userModel!;\r\n setEditing(!config.reacherEmailPrefix);\r\n setUserModel(userModel!);\r\n }\r\n catch (e: any) {\r\n console.error(e);\r\n setError(true);\r\n }\r\n finally {\r\n setLoading(false);\r\n }\r\n }\r\n const onSaved = async (saved?: boolean) => {\r\n setSaved(!!saved);\r\n if (saved) {\r\n setTimeout(() => setSaved(false), 2000);\r\n }\r\n reloadAccount();\r\n }\r\n const onEdit = async () => {\r\n setEditing(true);\r\n }\r\n\r\n React.useEffect(() => {\r\n reloadAccount();\r\n }, []);\r\n\r\n if (error)\r\n return \r\n An error occurred. Please try again later or see console for details.\r\n ;\r\n\r\n if (!userModel || isLoading)\r\n return
;\r\n\r\n const { user, config, whitelist, recentSenders } = userModel;\r\n\r\n return (<>\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n My Reacher\r\n
\r\n \r\n You are logged in as Strike user, {user.name} ({user.strikeUsername}).
\r\n
\r\n \r\n Not you? Click Here to log out.\r\n \r\n \r\n \r\n {saved && \r\n Success! Profile successfully saved.\r\n }\r\n {config.reacherEmailPrefix && !editing && }\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nconst Whitelist: React.FC<{ emails: string, recentSenders: RecentSender[] }> = ({ emails: wl, recentSenders }) => {\r\n const [saved, setSaved] = React.useState(false);\r\n const [isSaving, setSaving] = React.useState(false);\r\n const [error, setError] = React.useState(false);\r\n const [whitelist, setWhitelist] = React.useState(wl);\r\n const handleSubmit = async (event: React.FormEvent) => {\r\n event.preventDefault();\r\n setSaving(true);\r\n setError(false);\r\n setSaved(false);\r\n try {\r\n await updateWhitelist(whitelist);\r\n setSaved(true);\r\n setTimeout(() => setSaved(false), 3000);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n setError(true);\r\n }\r\n finally {\r\n setSaving(false);\r\n }\r\n }\r\n return (\r\n \r\n \r\n Your Whitelist\r\n \r\n \r\n \r\n Reacher will automatically forward emails sent by anyone with an email address that ends with the text specified.\r\n Add one line per pattern you want to match.\r\n \r\n
\r\n \r\n \r\n Whitelist\r\n