diff --git a/.eslintrc.js b/.eslintrc.js
index be4cf89c8e..a75ca6fdc7 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -11,7 +11,6 @@ module.exports = {
},
rules: {
...base.rules,
- '@typescript-eslint/no-explicit-any': 'off',
- 'react-hooks/exhaustive-deps': 'warn'
+ '@typescript-eslint/no-explicit-any': 'off'
}
};
diff --git a/packages/page-accounts/src/Accounts/modals/Identity.tsx b/packages/page-accounts/src/Accounts/modals/Identity.tsx
index 5eda7c2ecb..8af0499ff5 100644
--- a/packages/page-accounts/src/Accounts/modals/Identity.tsx
+++ b/packages/page-accounts/src/Accounts/modals/Identity.tsx
@@ -75,7 +75,7 @@ function Identity ({ address, className, onClose }: Props): React.ReactElement
{
- if (identityOpt?.isSome) {
+ if (identityOpt && identityOpt.isSome) {
const { info } = identityOpt.unwrap();
setData(info.display, null, setValDisplay);
diff --git a/packages/page-contracts/src/Contracts/ValidateAddr.tsx b/packages/page-contracts/src/Contracts/ValidateAddr.tsx
index 89e713f4cf..aeb5f32e90 100644
--- a/packages/page-contracts/src/Contracts/ValidateAddr.tsx
+++ b/packages/page-contracts/src/Contracts/ValidateAddr.tsx
@@ -35,7 +35,7 @@ function ValidateAddr ({ address, onChange }: Props): React.ReactElement
useEffect((): void => {
setIsStored(!!contractInfo?.isSome);
- }, [contractInfo]);
+ }, [contractInfo?.isSome]);
useEffect((): void => {
onChange(isAddress && isStored);
diff --git a/packages/page-council/src/Motions/Slashing.tsx b/packages/page-council/src/Motions/Slashing.tsx
index a094b8418f..95a5ac49b7 100644
--- a/packages/page-council/src/Motions/Slashing.tsx
+++ b/packages/page-council/src/Motions/Slashing.tsx
@@ -48,7 +48,7 @@ function Slashing ({ className, isMember, members }: Props): React.ReactElement<
}, [slashes, t]);
useEffect((): void => {
- const actioned = selectedEra && slashes?.find(([era]): boolean => era.eqn(selectedEra));
+ const actioned = selectedEra && slashes && slashes.find(([era]): boolean => era.eqn(selectedEra));
setProposal((): any =>
actioned
diff --git a/packages/page-council/src/Motions/useAvailableSlashes.ts b/packages/page-council/src/Motions/useAvailableSlashes.ts
index d137617b45..5afc2738a4 100644
--- a/packages/page-council/src/Motions/useAvailableSlashes.ts
+++ b/packages/page-council/src/Motions/useAvailableSlashes.ts
@@ -22,7 +22,7 @@ export default function useAvailableSlashes (): [BN, UnappliedSlash[]][] {
useEffect((): Unsub => {
let unsub: Unsub | undefined;
- if (mountedRef.current && indexes && earliestSlash?.isSome) {
+ if (mountedRef.current && indexes && earliestSlash && earliestSlash.isSome) {
const from = earliestSlash.unwrap();
const range: BN[] = [];
let start = new BN(from);
diff --git a/packages/page-democracy/src/Overview/Fasttrack.tsx b/packages/page-democracy/src/Overview/Fasttrack.tsx
index b5bd4c401e..b585467615 100644
--- a/packages/page-democracy/src/Overview/Fasttrack.tsx
+++ b/packages/page-democracy/src/Overview/Fasttrack.tsx
@@ -42,7 +42,7 @@ function Fasttrack ({ imageHash, threshold }: Props): React.ReactElement
useEffect((): void => {
setProposal(
- () => delayBlocks?.gtn(0) && votingBlocks?.gtn(0)
+ () => delayBlocks && delayBlocks.gtn(0) && votingBlocks && votingBlocks.gtn(0)
? api.tx.democracy.fastTrack(imageHash, votingBlocks, delayBlocks)
: null
);
diff --git a/packages/page-democracy/src/useCounter.ts b/packages/page-democracy/src/useCounter.ts
index 2913045141..9ea951c8d0 100644
--- a/packages/page-democracy/src/useCounter.ts
+++ b/packages/page-democracy/src/useCounter.ts
@@ -18,7 +18,7 @@ export default function useCounter (): number {
(proposals?.length || 0) +
(referenda?.length || 0)
);
- }, [mountedRef, proposals, referenda]);
+ }, [mountedRef, proposals?.length, referenda?.length]);
return counter;
}
diff --git a/packages/page-explorer/src/SummarySession.tsx b/packages/page-explorer/src/SummarySession.tsx
index ea90d4806c..cad8c0f3b4 100644
--- a/packages/page-explorer/src/SummarySession.tsx
+++ b/packages/page-explorer/src/SummarySession.tsx
@@ -27,7 +27,7 @@ function SummarySession ({ withEra = true, withSession = true }: Props): React.R
sessionInfo?.isEpoch
? t('epoch')
: t('session')
- , [sessionInfo, t]);
+ , [sessionInfo?.isEpoch, t]);
return (
<>
diff --git a/packages/page-parachains/src/index.tsx b/packages/page-parachains/src/index.tsx
index 9d67e3f353..c86540cbc6 100644
--- a/packages/page-parachains/src/index.tsx
+++ b/packages/page-parachains/src/index.tsx
@@ -32,7 +32,7 @@ function ParachainsApp ({ basePath }: Props): React.ReactElement {
text: t('Parachains overview')
},
...(
- match?.params.id
+ match && match.params.id
? [{
name: match.params.id,
text: `${match.params.id}: ${parachainName(t, paraInfoRef.current)}`
diff --git a/packages/page-society/src/Overview/Summary.tsx b/packages/page-society/src/Overview/Summary.tsx
index 338c783abd..734966445d 100644
--- a/packages/page-society/src/Overview/Summary.tsx
+++ b/packages/page-society/src/Overview/Summary.tsx
@@ -25,7 +25,7 @@ function Summary ({ className, info }: Props): React.ReactElement {
const bestNumber = useCall(api.derive.chain.bestNumber, []);
const pot = useMemo((): string | null => {
- return info?.pot.gtn(0)
+ return info && info.pot.gtn(0)
? info.pot.toString()
: null;
}, [info]);
diff --git a/packages/page-staking/src/Actions/useInactives.ts b/packages/page-staking/src/Actions/useInactives.ts
index b8c2cfcb71..98f22c8e37 100644
--- a/packages/page-staking/src/Actions/useInactives.ts
+++ b/packages/page-staking/src/Actions/useInactives.ts
@@ -56,7 +56,7 @@ export default function useInactives (stashId: string, nominees?: string[]): Ina
useEffect((): () => void => {
let unsub: (() => void) | undefined;
- if (mountedRef.current && nominees?.length && indexes) {
+ if (mountedRef.current && nominees && nominees.length && indexes) {
api
.queryMulti(
[[api.query.staking.nominators, stashId] as any].concat(
diff --git a/packages/page-staking/src/Actions/useUnbondDuration.ts b/packages/page-staking/src/Actions/useUnbondDuration.ts
index 6ba53160e1..5e9f9a8a40 100644
--- a/packages/page-staking/src/Actions/useUnbondDuration.ts
+++ b/packages/page-staking/src/Actions/useUnbondDuration.ts
@@ -18,7 +18,7 @@ export default function useUnbondDuration (): BN | undefined {
useEffect((): void => {
// We check sessionLength, for aura this is not properly calculated (not exposed),
// so the actual real block value would be invalid here
- sessionInfo?.sessionLength.gt(ONE) && setDuration(
+ sessionInfo && sessionInfo.sessionLength.gt(ONE) && setDuration(
sessionInfo.eraLength.mul(api.consts.staking.bondingDuration)
);
}, [api, sessionInfo]);
diff --git a/packages/page-staking/src/Payouts/useEraBlocks.ts b/packages/page-staking/src/Payouts/useEraBlocks.ts
index 2aaf4ffcba..1bb442e048 100644
--- a/packages/page-staking/src/Payouts/useEraBlocks.ts
+++ b/packages/page-staking/src/Payouts/useEraBlocks.ts
@@ -17,7 +17,7 @@ export default function useEraBlocks (era?: BN): BN | undefined {
const [duration, setDuration] = useState();
useEffect((): void => {
- depth && era && progress?.sessionLength.gt(ONE) && setDuration(
+ depth && era && progress && progress.sessionLength.gt(ONE) && setDuration(
progress.eraLength
.mul(
depth
diff --git a/packages/page-staking/src/Payouts/useStakerPayouts.ts b/packages/page-staking/src/Payouts/useStakerPayouts.ts
index c568a7b848..47424adbaa 100644
--- a/packages/page-staking/src/Payouts/useStakerPayouts.ts
+++ b/packages/page-staking/src/Payouts/useStakerPayouts.ts
@@ -20,7 +20,7 @@ export default function useStakerPayouts (): BN {
const migrateEraOpt = useCall