From f249e7b497c40aabf1b4f34afccbc9a8522600cd Mon Sep 17 00:00:00 2001 From: Mark Sinclair Date: Thu, 10 Mar 2022 11:48:57 +0000 Subject: [PATCH] linting fixes --- nym-wallet/package.json | 1 + .../src/pages/settings/system-variables.tsx | 73 ++++++++-------- nym-wallet/src/pages/settings/tabs.tsx | 3 +- .../src/pages/settings/useSettingsState.ts | 20 +++-- nym-wallet/src/pages/unbond/index.tsx | 2 +- .../src/pages/undelegate/UndelegateForm.tsx | 5 +- nym-wallet/src/pages/undelegate/index.tsx | 19 ++--- .../pages/welcome/_legacy_create-account.tsx | 6 +- .../src/pages/welcome/_legacy_sign-in.tsx | 35 ++------ .../welcome/components/password-strength.tsx | 14 +-- .../pages/welcome/components/word-tiles.tsx | 66 +++++++------- nym-wallet/src/pages/welcome/index.tsx | 26 +++--- .../pages/welcome/pages/create-password.tsx | 2 +- .../pages/welcome/pages/existing-account.tsx | 2 +- .../pages/welcome/pages/mnemonic-words.tsx | 3 +- .../pages/welcome/pages/verify-mnemonic.tsx | 16 ++-- .../pages/welcome/pages/welcome-content.tsx | 1 - nym-wallet/src/requests/vesting.ts | 2 +- nym-wallet/src/svg-icons/node.tsx | 4 +- nym-wallet/src/theme/theme.tsx | 2 +- nym-wallet/src/types/global.ts | 2 +- nym-wallet/src/utils/index.ts | 85 +++++++++---------- 22 files changed, 178 insertions(+), 211 deletions(-) diff --git a/nym-wallet/package.json b/nym-wallet/package.json index 5bd320ff80..166e3ca89a 100644 --- a/nym-wallet/package.json +++ b/nym-wallet/package.json @@ -8,6 +8,7 @@ "webpack:prod": "yarn webpack --progress --config webpack.prod.js", "tauri:dev": "yarn tauri dev", "tauri:build": "yarn tauri build", + "tsc": "tsc --noEmit true", "dev": "yarn run webpack:dev & yarn run tauri:dev", "build": "run-s webpack:prod tauri:build", "lint": "eslint src", diff --git a/nym-wallet/src/pages/settings/system-variables.tsx b/nym-wallet/src/pages/settings/system-variables.tsx index 1ec2e6454f..6fc43cc702 100644 --- a/nym-wallet/src/pages/settings/system-variables.tsx +++ b/nym-wallet/src/pages/settings/system-variables.tsx @@ -3,17 +3,51 @@ import { Box, Button, CircularProgress, Grid, LinearProgress, Stack, TextField, import { PercentOutlined } from '@mui/icons-material'; import { yupResolver } from '@hookform/resolvers/yup'; import { useForm } from 'react-hook-form'; -import { InfoTooltip } from '../../components/InfoToolTip'; +import { Fee, InfoTooltip } from '../../components'; import { InclusionProbabilityResponse, TMixnodeBondDetails } from '../../types'; import { validationSchema } from './validationSchema'; import { updateMixnode } from '../../requests'; import { ClientContext } from '../../context/main'; -import { Fee } from '../../components'; type TFormData = { profitMarginPercent: number; }; +const DataField = ({ title, info, Indicator }: { title: string; info: string; Indicator: React.ReactElement }) => ( + + + + + {title} + + + + + + {Indicator} + + + +); + +const PercentIndicator = ({ value, warning }: { value: number; warning?: boolean }) => ( + + + + {value}% + + + + + + +); + export const SystemVariables = ({ mixnodeDetails, saturation, @@ -127,38 +161,3 @@ export const SystemVariables = ({ ); }; - -const DataField = ({ title, info, Indicator }: { title: string; info: string; Indicator: React.ReactElement }) => ( - - - - - {title} - - - - - - {Indicator} - - - -); - -const PercentIndicator = ({ value, warning }: { value: number; warning?: boolean }) => ( - - - - {value}% - - - - - - -); diff --git a/nym-wallet/src/pages/settings/tabs.tsx b/nym-wallet/src/pages/settings/tabs.tsx index ce9dfd46fa..4a845add9b 100644 --- a/nym-wallet/src/pages/settings/tabs.tsx +++ b/nym-wallet/src/pages/settings/tabs.tsx @@ -1,6 +1,5 @@ import React from 'react'; -import { Box } from '@mui/system'; -import { Tab, Tabs as MuiTabs } from '@mui/material'; +import { Tab, Tabs as MuiTabs, Box } from '@mui/material'; export const Tabs: React.FC<{ tabs: string[]; diff --git a/nym-wallet/src/pages/settings/useSettingsState.ts b/nym-wallet/src/pages/settings/useSettingsState.ts index 8c23f01dcc..1b2492e8dd 100644 --- a/nym-wallet/src/pages/settings/useSettingsState.ts +++ b/nym-wallet/src/pages/settings/useSettingsState.ts @@ -21,30 +21,32 @@ export const useSettingsState = (shouldUpdate: boolean) => { const { mixnodeDetails } = useContext(ClientContext); const getStatus = async (mixnodeKey: string) => { - const status = await getMixnodeStatus(mixnodeKey); - setStatus(status.status); + const newStatus = await getMixnodeStatus(mixnodeKey); + setStatus(newStatus.status); }; const getStakeSaturation = async (mixnodeKey: string) => { - const saturation = await getMixnodeStakeSaturation(mixnodeKey); + const newSaturation = await getMixnodeStakeSaturation(mixnodeKey); - if (saturation) { - setSaturation(Math.round(saturation.saturation * 100)); + if (newSaturation) { + setSaturation(Math.round(newSaturation.saturation * 100)); } }; const getRewardEstimation = async (mixnodeKey: string) => { - const rewardEstimation = await getMixnodeRewardEstimation(mixnodeKey); - if (rewardEstimation) { - const toMajor = await minorToMajor(rewardEstimation.estimated_total_node_reward.toString()); - setRewardEstimation(parseInt(toMajor.amount)); + const newRewardEstimation = await getMixnodeRewardEstimation(mixnodeKey); + if (newRewardEstimation) { + const toMajor = await minorToMajor(newRewardEstimation.estimated_total_node_reward.toString()); + setRewardEstimation(parseInt(toMajor.amount, Number(10))); } }; const getMixnodeInclusionProbability = async (mixnodeKey: string) => { const probability = await getInclusionProbability(mixnodeKey); if (probability) { + // eslint-disable-next-line @typescript-eslint/naming-convention const in_active = Math.round(probability.in_active * 100); + // eslint-disable-next-line @typescript-eslint/naming-convention const in_reserve = Math.round(probability.in_reserve * 100); setInclusionProbability({ in_active, in_reserve }); } diff --git a/nym-wallet/src/pages/unbond/index.tsx b/nym-wallet/src/pages/unbond/index.tsx index 96bee0d5a5..ac727d1531 100644 --- a/nym-wallet/src/pages/unbond/index.tsx +++ b/nym-wallet/src/pages/unbond/index.tsx @@ -54,7 +54,7 @@ export const Unbond = () => { ) : ( - You don't currently have a bonded node + You do not currently have a bonded node )} {isLoading && ( diff --git a/nym-wallet/src/pages/undelegate/UndelegateForm.tsx b/nym-wallet/src/pages/undelegate/UndelegateForm.tsx index 80f3716bcc..9fe2f6eeb1 100644 --- a/nym-wallet/src/pages/undelegate/UndelegateForm.tsx +++ b/nym-wallet/src/pages/undelegate/UndelegateForm.tsx @@ -1,6 +1,6 @@ import React, { useContext, useEffect } from 'react'; -import { useForm, Controller } from 'react-hook-form'; -import { Box, Autocomplete, Button, CircularProgress, FormControl, Grid, TextField, Typography } from '@mui/material'; +import { Controller, useForm } from 'react-hook-form'; +import { Autocomplete, Box, Button, CircularProgress, FormControl, Grid, TextField } from '@mui/material'; import { yupResolver } from '@hookform/resolvers/yup'; import { validationSchema } from './validationSchema'; import { EnumNodeType, TDelegation, TFee } from '../../types'; @@ -19,7 +19,6 @@ const defaultValues = { }; export const UndelegateForm = ({ - fees, delegations, onError, onSuccess, diff --git a/nym-wallet/src/pages/undelegate/index.tsx b/nym-wallet/src/pages/undelegate/index.tsx index 52bdbee14e..7dd1a73853 100644 --- a/nym-wallet/src/pages/undelegate/index.tsx +++ b/nym-wallet/src/pages/undelegate/index.tsx @@ -1,8 +1,7 @@ import React, { useContext, useEffect, useState } from 'react'; import { Alert, AlertTitle, Box, Button, CircularProgress } from '@mui/material'; -import { NymCard } from '../../components'; +import { EnumRequestStatus, NymCard, RequestStatus } from '../../components'; import { UndelegateForm } from './UndelegateForm'; -import { EnumRequestStatus, RequestStatus } from '../../components/RequestStatus'; import { getGasFee, getReverseMixDelegations } from '../../requests'; import { TFee, TPagedDelegations } from '../../types'; import { ClientContext } from '../../context/main'; @@ -17,10 +16,6 @@ export const Undelegate = () => { const { clientDetails } = useContext(ClientContext); - useEffect(() => { - initialize(); - }, [clientDetails]); - const initialize = async () => { setStatus(EnumRequestStatus.initial); setIsLoading(true); @@ -44,6 +39,10 @@ export const Undelegate = () => { setIsLoading(false); }; + useEffect(() => { + initialize(); + }, [clientDetails]); + return ( @@ -63,12 +62,12 @@ export const Undelegate = () => { { - setMessage(message); + onError={(m) => { + setMessage(m); setStatus(EnumRequestStatus.error); }} - onSuccess={(message) => { - setMessage(message); + onSuccess={(m) => { + setMessage(m); setStatus(EnumRequestStatus.success); }} /> diff --git a/nym-wallet/src/pages/welcome/_legacy_create-account.tsx b/nym-wallet/src/pages/welcome/_legacy_create-account.tsx index 551a81beba..7c1997a584 100644 --- a/nym-wallet/src/pages/welcome/_legacy_create-account.tsx +++ b/nym-wallet/src/pages/welcome/_legacy_create-account.tsx @@ -4,9 +4,7 @@ import { createAccount } from '../../requests'; import { TCreateAccount } from '../../types'; import { CopyToClipboard } from '../../components'; -export const CreateAccountContent: React.FC<{ page: 'legacy create account'; showSignIn: () => void }> = ({ - showSignIn, -}) => { +export const CreateAccountContent: React.FC<{ showSignIn: () => void }> = ({ showSignIn }) => { const [accountDetails, setAccountDetails] = useState(); const [error, setError] = useState(); @@ -33,7 +31,7 @@ export const CreateAccountContent: React.FC<{ page: 'legacy create account'; sho Account setup complete! - Please store your mnemonic in a safe place. You'll need it to access your account! + Please store your mnemonic in a safe place. You will need it to access your account! diff --git a/nym-wallet/src/pages/welcome/_legacy_sign-in.tsx b/nym-wallet/src/pages/welcome/_legacy_sign-in.tsx index 31e738be5e..9d245682de 100644 --- a/nym-wallet/src/pages/welcome/_legacy_sign-in.tsx +++ b/nym-wallet/src/pages/welcome/_legacy_sign-in.tsx @@ -1,12 +1,10 @@ import React, { useContext, useState } from 'react'; -import { Button, CircularProgress, Grid, Stack, TextField, Typography, Alert } from '@mui/material'; -import { styled } from '@mui/material/styles'; -import { signInWithMnemonic } from '../../requests'; +import { Alert, Button, CircularProgress, Grid, Stack, Typography } from '@mui/material'; import { ClientContext } from '../../context/main'; import { NymLogo } from '../../components'; -export const SignInContent: React.FC<{ showCreateAccount: () => void }> = ({ showCreateAccount }) => { - const [mnemonic, setMnemonic] = useState(''); +export const SignInContent: React.FC = () => { + const [mnemonic] = useState(''); const [inputError, setInputError] = useState(); const [isLoading, setIsLoading] = useState(false); @@ -19,12 +17,11 @@ export const SignInContent: React.FC<{ showCreateAccount: () => void }> = ({ sho setInputError(undefined); try { - await signInWithMnemonic(mnemonic || ''); + await logIn(mnemonic || ''); setIsLoading(false); - logIn(); - } catch (e: any) { + } catch (error: any) { setIsLoading(false); - setInputError(e); + setInputError(error); } }; @@ -67,23 +64,3 @@ export const SignInContent: React.FC<{ showCreateAccount: () => void }> = ({ sho ); }; - -const StyledInput = styled((props) => )(({ theme }) => ({ - '& input': { - color: theme.palette.nym.text.light, - }, - '& label': { - color: theme.palette.nym.text.light, - }, - '& label.Mui-focused': { - color: theme.palette.primary.main, - }, - '& .MuiOutlinedInput-root': { - '& fieldset': { - borderColor: theme.palette.common.white, - }, - '&:hover fieldset': { - borderColor: theme.palette.primary.main, - }, - }, -})); diff --git a/nym-wallet/src/pages/welcome/components/password-strength.tsx b/nym-wallet/src/pages/welcome/components/password-strength.tsx index c91372f98e..9eff1aabf4 100644 --- a/nym-wallet/src/pages/welcome/components/password-strength.tsx +++ b/nym-wallet/src/pages/welcome/components/password-strength.tsx @@ -1,11 +1,10 @@ import React, { useEffect, useState } from 'react'; import { LockOutlined } from '@mui/icons-material'; -import { LinearProgress, Stack, Typography } from '@mui/material'; -import { Box } from '@mui/system'; +import { LinearProgress, Stack, Typography, Box } from '@mui/material'; type TStrength = 'weak' | 'medium' | 'strong' | 'init'; -const strong = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})/; +const strong = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*])(?=.{8,})/; const medium = /^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})/; const colorMap = { @@ -46,15 +45,18 @@ export const PasswordStrength = ({ password }: { password: string }) => { useEffect(() => { if (password.length === 0) { - return setStrength('init'); + setStrength('init'); + return; } if (password.match(strong)) { - return setStrength('strong'); + setStrength('strong'); + return; } if (password.match(medium)) { - return setStrength('medium'); + setStrength('medium'); + return; } setStrength('weak'); }, [password]); diff --git a/nym-wallet/src/pages/welcome/components/word-tiles.tsx b/nym-wallet/src/pages/welcome/components/word-tiles.tsx index fcaf70ff47..4f0f70d807 100644 --- a/nym-wallet/src/pages/welcome/components/word-tiles.tsx +++ b/nym-wallet/src/pages/welcome/components/word-tiles.tsx @@ -2,35 +2,6 @@ import React from 'react'; import { Box, Card, CardHeader, Grid, Typography, Stack, Fade } from '@mui/material'; import { THiddenMnemonicWord, THiddenMnemonicWords, TMnemonicWords } from '../types'; -export const WordTiles = ({ - mnemonicWords, - showIndex, - onClick, -}: { - mnemonicWords?: TMnemonicWords; - showIndex?: boolean; - onClick?: ({ name, index }: { name: string; index: number }) => void; -}) => { - if (mnemonicWords) { - return ( - - {mnemonicWords.map(({ name, index, disabled }) => ( - onClick?.({ name, index })}> - - - ))} - - ); - } - - return null; -}; - export const WordTile = ({ mnemonicWord, index, @@ -65,18 +36,32 @@ export const WordTile = ({ ); -export const HiddenWords = ({ mnemonicWords }: { mnemonicWords?: THiddenMnemonicWords }) => { +export const WordTiles = ({ + mnemonicWords, + showIndex, + onClick, +}: { + mnemonicWords?: TMnemonicWords; + showIndex?: boolean; + onClick?: ({ name, index }: { name: string; index: number }) => void; +}) => { if (mnemonicWords) { return ( - {mnemonicWords.map((mnemonicWord) => ( - - + {mnemonicWords.map(({ name, index, disabled }) => ( + onClick?.({ name, index })}> + ))} ); } + return null; }; @@ -92,3 +77,18 @@ const HiddenWord = ({ mnemonicWord }: { mnemonicWord: THiddenMnemonicWord }) => {mnemonicWord.index}. ); + +export const HiddenWords = ({ mnemonicWords }: { mnemonicWords?: THiddenMnemonicWords }) => { + if (mnemonicWords) { + return ( + + {mnemonicWords.map((mnemonicWord) => ( + + + + ))} + + ); + } + return null; +}; diff --git a/nym-wallet/src/pages/welcome/index.tsx b/nym-wallet/src/pages/welcome/index.tsx index d2d0e0b76b..d4df7fa877 100644 --- a/nym-wallet/src/pages/welcome/index.tsx +++ b/nym-wallet/src/pages/welcome/index.tsx @@ -1,24 +1,23 @@ import React, { useContext, useState } from 'react'; -import { Box } from '@mui/system'; -import { CircularProgress, Stack } from '@mui/material'; -import { WelcomeContent, VerifyMnemonic, MnemonicWords, CreatePassword, ExistingAccount } from './pages'; +import { CircularProgress, Stack, Box } from '@mui/material'; +import { ExistingAccount, WelcomeContent } from './pages'; import { NymLogo } from '../../components'; -import { TMnemonicWords, TPages } from './types'; +import { TPages } from './types'; import { RenderPage } from './components'; import { CreateAccountContent } from './_legacy_create-account'; import { ClientContext } from '../../context/main'; -const testMnemonic = - 'futuristic big receptive caption saw hug odd spoon internal dime bike rake helpless left distribution gusty eyes beg enormous word influence trashy pets curl'; - -const mnemonicToArray = (mnemonic: string): TMnemonicWords => - mnemonic - .split(' ') - .reduce((a, c: string, index) => [...a, { name: c, index: index + 1, disabled: false }], [] as TMnemonicWords); +// const testMnemonic = +// 'futuristic big receptive caption saw hug odd spoon internal dime bike rake helpless left distribution gusty eyes beg enormous word influence trashy pets curl'; +// +// const mnemonicToArray = (mnemonic: string): TMnemonicWords => +// mnemonic +// .split(' ') +// .reduce((a, c: string, index) => [...a, { name: c, index: index + 1, disabled: false }], [] as TMnemonicWords); export const Welcome = () => { const [page, setPage] = useState('welcome'); - const [mnemonicWords, setMnemonicWords] = useState(); + // const [mnemonicWords, setMnemonicWords] = useState(); const { isLoading } = useContext(ClientContext); @@ -56,7 +55,6 @@ export const Welcome = () => { setPage('existing account')} onCreateAccountComplete={() => setPage('legacy create account')} - page="welcome" /> setPage('existing account')} /> @@ -72,7 +70,7 @@ export const Welcome = () => { page="verify mnemonic" /> */} - setPage('welcome')} /> + setPage('welcome')} /> )} diff --git a/nym-wallet/src/pages/welcome/pages/create-password.tsx b/nym-wallet/src/pages/welcome/pages/create-password.tsx index a499866104..9d1ee759e5 100644 --- a/nym-wallet/src/pages/welcome/pages/create-password.tsx +++ b/nym-wallet/src/pages/welcome/pages/create-password.tsx @@ -3,7 +3,7 @@ import { Button, FormControl, Grid, IconButton, Stack, TextField } from '@mui/ma import { VisibilityOff, Visibility } from '@mui/icons-material'; import { Subtitle, Title, PasswordStrength } from '../components'; -export const CreatePassword = ({}: { page: 'create password' }) => { +export const CreatePassword = () => { const [password, setPassword] = useState(''); const [confirmedPassword, setConfirmedPassword] = useState(); const [showPassword, setShowPassword] = useState(false); diff --git a/nym-wallet/src/pages/welcome/pages/existing-account.tsx b/nym-wallet/src/pages/welcome/pages/existing-account.tsx index 0e5aaafd96..82343e1533 100644 --- a/nym-wallet/src/pages/welcome/pages/existing-account.tsx +++ b/nym-wallet/src/pages/welcome/pages/existing-account.tsx @@ -3,7 +3,7 @@ import { Alert, Button, Stack, TextField } from '@mui/material'; import { Subtitle } from '../components'; import { ClientContext } from '../../../context/main'; -export const ExistingAccount: React.FC<{ page: 'existing account'; onPrev: () => void }> = ({ onPrev }) => { +export const ExistingAccount: React.FC<{ onPrev: () => void }> = ({ onPrev }) => { const [mnemonic, setMnemonic] = useState(''); const { logIn, error } = useContext(ClientContext); diff --git a/nym-wallet/src/pages/welcome/pages/mnemonic-words.tsx b/nym-wallet/src/pages/welcome/pages/mnemonic-words.tsx index ec3649f79b..efad61b414 100644 --- a/nym-wallet/src/pages/welcome/pages/mnemonic-words.tsx +++ b/nym-wallet/src/pages/welcome/pages/mnemonic-words.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { Alert, Button, Typography } from '@mui/material'; -import { WordTiles } from '../components/word-tiles'; +import { WordTiles } from '../components'; import { TMnemonicWords } from '../types'; export const MnemonicWords = ({ @@ -9,7 +9,6 @@ export const MnemonicWords = ({ onPrev, }: { mnemonicWords?: TMnemonicWords; - page: 'create account'; onNext: () => void; onPrev: () => void; }) => ( diff --git a/nym-wallet/src/pages/welcome/pages/verify-mnemonic.tsx b/nym-wallet/src/pages/welcome/pages/verify-mnemonic.tsx index b80692e485..594a593269 100644 --- a/nym-wallet/src/pages/welcome/pages/verify-mnemonic.tsx +++ b/nym-wallet/src/pages/welcome/pages/verify-mnemonic.tsx @@ -1,9 +1,8 @@ import React, { useEffect, useState } from 'react'; import { Button } from '@mui/material'; -import { WordTiles, HiddenWords } from '../components/word-tiles'; -import { THiddenMnemonicWords, THiddenMnemonicWord, TMnemonicWord, TMnemonicWords } from '../types'; +import { HiddenWords, Subtitle, Title, WordTiles } from '../components'; +import { THiddenMnemonicWord, THiddenMnemonicWords, TMnemonicWord, TMnemonicWords } from '../types'; import { randomNumberBetween } from '../../../utils'; -import { Title, Subtitle } from '../components'; const numberOfRandomWords = 4; @@ -11,7 +10,6 @@ export const VerifyMnemonic = ({ mnemonicWords, onComplete, }: { - page: 'verify mnemonic'; mnemonicWords?: TMnemonicWords; onComplete: () => void; }) => { @@ -21,10 +19,10 @@ export const VerifyMnemonic = ({ useEffect(() => { if (mnemonicWords) { - const randomWords = getRandomEntriesFromArray(mnemonicWords, numberOfRandomWords); - const withHiddenProperty = randomWords.map((word) => ({ ...word, hidden: true })); + const newRandomWords = getRandomEntriesFromArray(mnemonicWords, numberOfRandomWords); + const withHiddenProperty = newRandomWords.map((word) => ({ ...word, hidden: true })); const shuffled = getRandomEntriesFromArray(withHiddenProperty, numberOfRandomWords); - setRandomWords(randomWords); + setRandomWords(newRandomWords); setHiddenRandomWords(shuffled); } }, [mnemonicWords]); @@ -34,8 +32,8 @@ export const VerifyMnemonic = ({ setHiddenRandomWords((hiddenWords) => hiddenWords?.map((word) => (word.name === name ? { ...word, hidden: false } : word)), ); - setRandomWords((randomWords) => - randomWords?.map((word) => (word.name === name ? { ...word, disabled: true } : word)), + setRandomWords((argRandomWords) => + argRandomWords?.map((word) => (word.name === name ? { ...word, disabled: true } : word)), ); setCurrentSelection((current) => current + 1); } diff --git a/nym-wallet/src/pages/welcome/pages/welcome-content.tsx b/nym-wallet/src/pages/welcome/pages/welcome-content.tsx index 81182d5ddd..b7778e5a17 100644 --- a/nym-wallet/src/pages/welcome/pages/welcome-content.tsx +++ b/nym-wallet/src/pages/welcome/pages/welcome-content.tsx @@ -3,7 +3,6 @@ import { Button, Stack } from '@mui/material'; import { SubtitleSlick, Title } from '../components'; export const WelcomeContent: React.FC<{ - page: 'welcome'; onUseExisting: () => void; onCreateAccountComplete: () => void; }> = ({ onUseExisting, onCreateAccountComplete }) => ( diff --git a/nym-wallet/src/requests/vesting.ts b/nym-wallet/src/requests/vesting.ts index fb45004335..9259e7be26 100644 --- a/nym-wallet/src/requests/vesting.ts +++ b/nym-wallet/src/requests/vesting.ts @@ -1,6 +1,6 @@ import { invoke } from '@tauri-apps/api'; import { VestingAccountInfo } from 'src/types/rust/vestingaccountinfo'; -import { majorToMinor, minorToMajor } from '.'; +import { majorToMinor, minorToMajor } from './coin'; import { Coin, DelegationResult, OriginalVestingResponse, Period } from '../types'; export const getLockedCoins = async (address: string): Promise => { diff --git a/nym-wallet/src/svg-icons/node.tsx b/nym-wallet/src/svg-icons/node.tsx index 5939385222..e0ae33eb34 100644 --- a/nym-wallet/src/svg-icons/node.tsx +++ b/nym-wallet/src/svg-icons/node.tsx @@ -1,13 +1,13 @@ import React from 'react'; import { SvgIcon, SvgIconProps } from '@mui/material'; -export const Node = (props: SvgIconProps) => ( +export const Node: React.FC = ({ color, ...props }) => ( ); diff --git a/nym-wallet/src/theme/theme.tsx b/nym-wallet/src/theme/theme.tsx index e002f7a4c9..add15b3491 100644 --- a/nym-wallet/src/theme/theme.tsx +++ b/nym-wallet/src/theme/theme.tsx @@ -65,7 +65,7 @@ const lightMode: NymPaletteVariant = { * IMPORTANT: do not export this constant, always use the MUI `useTheme` hook to get the correct * colours for dark/light mode. */ -const nymWalletPalette = (variant: NymPaletteVariant): NymWalletPalette => ({ +const nymWalletPalette = (_variant: NymPaletteVariant): NymWalletPalette => ({ nymWallet: {}, }); diff --git a/nym-wallet/src/types/global.ts b/nym-wallet/src/types/global.ts index f9c600d5ea..f05a9f6bc5 100644 --- a/nym-wallet/src/types/global.ts +++ b/nym-wallet/src/types/global.ts @@ -1,4 +1,4 @@ -import { Coin, Denom, MixNode } from '.'; +import { Coin, Denom, MixNode } from './rust'; export enum EnumNodeType { mixnode = 'mixnode', diff --git a/nym-wallet/src/utils/index.ts b/nym-wallet/src/utils/index.ts index 3adad9e09a..ddceff874a 100644 --- a/nym-wallet/src/utils/index.ts +++ b/nym-wallet/src/utils/index.ts @@ -2,8 +2,8 @@ import { invoke } from '@tauri-apps/api'; import { appWindow } from '@tauri-apps/api/window'; import bs58 from 'bs58'; import { minor, valid } from 'semver'; -import { userBalance, majorToMinor, getGasFee } from '../requests'; -import { Coin, Network, Period, TCurrency } from '../types'; +import { majorToMinor, userBalance } from '../requests'; +import { Coin, Network, TCurrency } from '../types'; export const validateKey = (key: string, bytesLength: number): boolean => { // it must be a valid base58 key @@ -17,6 +17,23 @@ export const validateKey = (key: string, bytesLength: number): boolean => { } }; +export const basicRawCoinValueValidation = (rawAmount: string): boolean => { + const amountFloat = parseFloat(rawAmount); + + // it cannot have more than 6 decimal places + if (amountFloat !== parseInt(amountFloat.toFixed(6), Number(10))) { + return false; + } + + // it cannot be larger than the total supply + if (amountFloat > 1_000_000_000_000_000) { + return false; + } + + // it can't be lower than one micro coin + return amountFloat >= 0.000001; +}; + export const validateAmount = async (amount: string, minimum: string): Promise => { // tests basic coin value requirements, like no more than 6 decimal places, value lower than total supply, etc if (!Number(amount)) { @@ -32,34 +49,17 @@ export const validateAmount = async (amount: string, minimum: string): Promise= parseInt(minimum); + return minorValue >= parseInt(minimum, Number(10)); } catch (e) { - console.log(e); + console.error(e); return false; } // this conversion seems really iffy but I'm not sure how to better approach it }; -export const basicRawCoinValueValidation = (rawAmount: string): boolean => { - const amountFloat = parseFloat(rawAmount); - - // it cannot have more than 6 decimal places - if (amountFloat !== parseInt(amountFloat.toFixed(6))) { - return false; - } - - // it cannot be larger than the total supply - if (amountFloat > 1_000_000_000_000_000) { - return false; - } - - // it can't be lower than one micro coin - return amountFloat >= 0.000001; -}; - export const isValidHostname = (value: string) => { // regex for ipv4 and ipv6 and hhostname- source http://jsfiddle.net/DanielD/8S4nq/ const hostnameRegex = @@ -82,55 +82,52 @@ export const validateLocation = (location: string): boolean => // right now only perform the stupid check of whether the user copy-pasted the tooltip... (with or without brackets) !location.trim().includes('physical location of your node'); -export const validateRawPort = (rawPort: number): boolean => !isNaN(rawPort) && rawPort >= 1 && rawPort <= 65535; +export const validateRawPort = (rawPort: number): boolean => !Number.isNaN(rawPort) && rawPort >= 1 && rawPort <= 65535; export const truncate = (text: string, trim: number) => `${text.substring(0, trim)}...`; export const isGreaterThan = (a: number, b: number) => a > b; -export const checkHasEnoughFunds = async (allocationValue: string) => { +export const checkHasEnoughFunds = async (allocationValue: string): Promise => { try { const walletValue = await userBalance(); const minorValue = await majorToMinor(allocationValue); const remainingBalance = +walletValue.coin.amount - +minorValue.amount; return isGreaterThan(remainingBalance, 0); } catch (e) { - console.log(e); + console.error(e); } + return false; }; export const randomNumberBetween = (min: number, max: number) => { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min + 1) + min); + const minCeil = Math.ceil(min); + const maxFloor = Math.floor(max); + return Math.floor(Math.random() * (maxFloor - minCeil + 1) + minCeil); }; -export const currencyMap = (network?: Network) => { - const currency = { - minor: 'UNYM', - major: 'NYM', - } as TCurrency; - +export const currencyMap = (network?: Network): TCurrency => { switch (network) { case 'MAINNET': - currency.minor = 'UNYM'; - currency.major = 'NYM'; - break; - case 'SANDBOX': - currency.minor = 'UNYMT'; - currency.major = 'NYMT'; - break; + return { + minor: 'UNYM', + major: 'NYM', + }; + default: + return { + minor: 'UNYMT', + major: 'NYMT', + }; } - - return currency; }; -export const splice = (start: number, deleteCount: number, address?: string) => { +export const splice = (start: number, deleteCount: number, address?: string): string => { if (address) { const array = address.split(''); array.splice(start, deleteCount, '...'); return array.join(''); } + return ''; }; export const maximizeWindow = async () => {