dappros/ethora

View on GitHub
client-web/build/static/js/669.9f911ffb.chunk.js.map

Summary

Maintainability
Test Coverage
{"version":3,"file":"static/js/669.9f911ffb.chunk.js","mappings":"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","sources":["pages/Referrals/Referrals.tsx","../node_modules/@mui/icons-material/PersonAddAlt.js","../node_modules/@mui/icons-material/Share.js"],"sourcesContent":["import React, { useState } from \"react\";\nimport { Typography, Box, Button, TextField } from \"@mui/material\";\nimport { useStoreState } from \"../../store\";\nimport PersonAddAltIcon from \"@mui/icons-material/PersonAddAlt\";\nimport ShareIcon from \"@mui/icons-material/Share\";\nimport { useSnackbar } from \"../../context/SnackbarContext\";\nimport { useFormik } from \"formik\";\nimport { getBalance, httpWithAuth } from \"../../http\";\nimport coinImg from \"../../assets/images/coin.png\";\n\nexport interface IReferrals {}\n\ninterface IValues {\n  refLink: string;\n}\n\nconst validate = (values: IValues) => {\n  const errors: IValues = { refLink: \"\" };\n  if (!values.refLink) {\n    errors.refLink = \"Link is required\";\n  }\n\n  return errors;\n};\n\nconst Referrals: React.FC<IReferrals> = ({}) => {\n  const link = useStoreState((state) => state.user._id);\n  const walletAddress = useStoreState((state) => state.user.walletAddress);\n\n  const setBalance = useStoreState((state) => state.setBalance);\n\n  const referrerId = useStoreState((state) => state.user.referrerId);\n  const { showSnackbar } = useSnackbar();\n  const formik = useFormik({\n    initialValues: { refLink: \"\" },\n    validate,\n    onSubmit: async ({ refLink }, { setSubmitting }) => {\n      if (referrerId) {\n        showSnackbar(\"error\", \"You already added your referral\");\n        return;\n      }\n      if (refLink === link) {\n        showSnackbar(\"error\", \"You cannot be your referral\");\n        return;\n      }\n      setSubmitting(true);\n      try {\n        const res = await httpWithAuth().post(\"/users/referral\", {\n          referrerId: refLink,\n        });\n        const balance = await getBalance(walletAddress);\n        setBalance(balance.data.balance);\n        showSnackbar(\"success\", \"Referral successfully added\");\n      } catch (error) {\n        showSnackbar(\"error\", \"Something went wrong\");\n      }\n      setSubmitting(false);\n    },\n  });\n\n  const onShareClick = () => {\n    navigator.clipboard.writeText(link);\n\n    showSnackbar(\"success\", \"Link copied\");\n  };\n  return (\n    <Box\n      sx={{\n        display: \"flex\",\n        justifyContent: \"center\",\n        padding: \"20px\",\n      }}\n    >\n      <Box>\n        <Box\n          sx={{\n            fontSize: 50,\n            display: \"flex\",\n            justifyContent: \"center\",\n            alignItems: \"center\",\n          }}\n        >\n          <PersonAddAltIcon color=\"primary\" fontSize=\"inherit\" />\n        </Box>\n        <Typography\n          sx={{\n            justifyContent: \"center\",\n            alignItems: \"center\",\n            display: \"flex\",\n          }}\n        >\n          Gift friends 25\n          <img alt=\"\" style={{ width: \"16px\", height: \"16px\" }} src={coinImg} />\n          and receive 25\n          <img alt=\"\" style={{ width: \"16px\", height: \"16px\" }} src={coinImg} />\n          . Send friends invite with your personal invitation code\n        </Typography>\n        <Typography\n          sx={{ fontWeight: \"bold\", textAlign: \"center\", fontSize: \"18px\" }}\n        >\n          Your invitation code\n        </Typography>\n        <Box\n          sx={{\n            display: \"flex\",\n            justifyContent: \"center\",\n            alignItems: \"center\",\n            marginTop: \"10px\",\n          }}\n        >\n          <Button\n            onClick={onShareClick}\n            variant={\"contained\"}\n            startIcon={<ShareIcon />}\n          >\n            {link}\n          </Button>\n        </Box>\n        <Typography\n          sx={{\n            fontWeight: \"bold\",\n            textAlign: \"center\",\n            fontSize: \"18px\",\n            margin: \"10px 0\",\n          }}\n        >\n          Or enter your referral code to earn coins.\n        </Typography>\n        <form\n          onSubmit={formik.handleSubmit}\n          style={{\n            flexDirection: \"column\",\n            display: \"flex\",\n            justifyContent: \"center\",\n            alignItems: \"center\",\n          }}\n        >\n          <TextField\n            margin=\"dense\"\n            label=\"Your referral code\"\n            name=\"refLink\"\n            type=\"text\"\n            fullWidth\n            inputProps={{\n              autoComplete: \"off\",\n            }}\n            variant={\"outlined\"}\n            onChange={formik.handleChange}\n            value={formik.values.refLink}\n            error={!!formik.touched.refLink && !!formik.errors.refLink}\n          />\n          <Button\n            disabled={formik.isSubmitting}\n            variant={\"contained\"}\n            type={\"submit\"}\n          >\n            Earn coins\n          </Button>\n        </form>\n      </Box>\n    </Box>\n  );\n};\n\nexport default Referrals;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n  d: \"M13 8c0-2.21-1.79-4-4-4S5 5.79 5 8s1.79 4 4 4 4-1.79 4-4zm-2 0c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zM1 18v2h16v-2c0-2.66-5.33-4-8-4s-8 1.34-8 4zm2 0c.2-.71 3.3-2 6-2 2.69 0 5.78 1.28 6 2H3zm17-3v-3h3v-2h-3V7h-2v3h-3v2h3v3h2z\"\n}), 'PersonAddAlt');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n  d: \"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92 1.61 0 2.92-1.31 2.92-2.92s-1.31-2.92-2.92-2.92z\"\n}), 'Share');\n\nexports.default = _default;"],"names":["validate","values","errors","refLink","link","useStoreState","state","user","_id","walletAddress","setBalance","referrerId","showSnackbar","useSnackbar","formik","useFormik","initialValues","onSubmit","setSubmitting","httpWithAuth","post","getBalance","balance","data","sx","display","justifyContent","padding","fontSize","alignItems","color","alt","style","width","height","src","coinImg","fontWeight","textAlign","marginTop","onClick","navigator","clipboard","writeText","variant","startIcon","margin","handleSubmit","flexDirection","label","name","type","fullWidth","inputProps","autoComplete","onChange","handleChange","value","error","touched","disabled","isSubmitting","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""}