Commit 5f1d43ef authored by tom's avatar tom

restrict imports from lodash

parent 6af23f3c
...@@ -10,9 +10,14 @@ const RESTRICTED_MODULES = { ...@@ -10,9 +10,14 @@ const RESTRICTED_MODULES = {
importNames: [ 'Popover', 'useToast' ], importNames: [ 'Popover', 'useToast' ],
message: 'Please use corresponding component or hook from ui/shared/chakra component instead', message: 'Please use corresponding component or hook from ui/shared/chakra component instead',
}, },
{
name: 'lodash',
message: 'Please use `import [package] from \'lodash/[package]\'` instead.',
},
], ],
patterns: [ patterns: [
'icons/*', 'icons/*',
'!lodash/*',
], ],
}; };
......
import { uniq } from 'lodash'; import _uniq from 'lodash/uniq';
import isBrowser from './isBrowser'; import isBrowser from './isBrowser';
...@@ -27,7 +27,7 @@ export function saveToRecentKeywords(value: string) { ...@@ -27,7 +27,7 @@ export function saveToRecentKeywords(value: string) {
} }
const keywordsArr = getRecentSearchKeywords(); const keywordsArr = getRecentSearchKeywords();
const result = uniq([ value, ...keywordsArr ]).slice(0, MAX_KEYWORDS_NUMBER - 1); const result = _uniq([ value, ...keywordsArr ]).slice(0, MAX_KEYWORDS_NUMBER - 1);
window.localStorage.setItem(RECENT_KEYWORDS_LS_KEY, JSON.stringify(result)); window.localStorage.setItem(RECENT_KEYWORDS_LS_KEY, JSON.stringify(result));
} }
......
import { inRange } from 'lodash'; import _inRange from 'lodash/inRange';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import React from 'react'; import React from 'react';
...@@ -43,7 +43,11 @@ const UserOp = () => { ...@@ -43,7 +43,11 @@ const UserOp = () => {
if (!userOpQuery.data) { if (!userOpQuery.data) {
return true; return true;
} else { } else {
if (inRange(Number(tt.log_index), userOpQuery.data?.user_logs_start_index, userOpQuery.data?.user_logs_start_index + userOpQuery.data?.user_logs_count)) { if (_inRange(
Number(tt.log_index),
userOpQuery.data?.user_logs_start_index,
userOpQuery.data?.user_logs_start_index + userOpQuery.data?.user_logs_count,
)) {
return true; return true;
} }
return false; return false;
...@@ -54,7 +58,7 @@ const UserOp = () => { ...@@ -54,7 +58,7 @@ const UserOp = () => {
if (!userOpQuery.data) { if (!userOpQuery.data) {
return true; return true;
} else { } else {
if (inRange(log.index, userOpQuery.data?.user_logs_start_index, userOpQuery.data?.user_logs_start_index + userOpQuery.data?.user_logs_count)) { if (_inRange(log.index, userOpQuery.data?.user_logs_start_index, userOpQuery.data?.user_logs_start_index + userOpQuery.data?.user_logs_count)) {
return true; return true;
} }
return false; return false;
......
import { Table, Tbody, Tr, Th, Box, Skeleton, Text, Show, Hide } from '@chakra-ui/react'; import { Table, Tbody, Tr, Th, Box, Skeleton, Text, Show, Hide } from '@chakra-ui/react';
import _ from 'lodash'; import _chunk from 'lodash/chunk';
import React, { useMemo, useState } from 'react'; import React, { useMemo, useState } from 'react';
import type { PaginationParams } from 'ui/shared/pagination/types'; import type { PaginationParams } from 'ui/shared/pagination/types';
...@@ -33,7 +33,7 @@ export default function TxAssetFlows(props: FlowViewProps) { ...@@ -33,7 +33,7 @@ export default function TxAssetFlows(props: FlowViewProps) {
const [ page, setPage ] = useState<number>(1); const [ page, setPage ] = useState<number>(1);
const ViewData = useMemo(() => (queryData ? generateFlowViewData(queryData) : []), [ queryData ]); const ViewData = useMemo(() => (queryData ? generateFlowViewData(queryData) : []), [ queryData ]);
const chunkedViewData = _.chunk(ViewData, 50); const chunkedViewData = _chunk(ViewData, 50);
const paginationProps: PaginationParams = useMemo(() => ({ const paginationProps: PaginationParams = useMemo(() => ({
onNextPageClick: () => setPage(page + 1), onNextPageClick: () => setPage(page + 1),
......
import _ from 'lodash'; import _findIndex from 'lodash/findIndex';
import type { NovesNft, NovesResponseData, NovesSentReceived, NovesToken } from 'types/api/noves'; import type { NovesNft, NovesResponseData, NovesSentReceived, NovesToken } from 'types/api/noves';
...@@ -27,7 +27,7 @@ export function generateFlowViewData(data: NovesResponseData): Array<NovesFlowVi ...@@ -27,7 +27,7 @@ export function generateFlowViewData(data: NovesResponseData): Array<NovesFlowVi
const txItems = [ ...sent, ...received ]; const txItems = [ ...sent, ...received ];
const paidGasIndex = _.findIndex(txItems, (item) => item.action === 'paidGas'); const paidGasIndex = _findIndex(txItems, (item) => item.action === 'paidGas');
if (paidGasIndex >= 0) { if (paidGasIndex >= 0) {
const element = txItems.splice(paidGasIndex, 1)[0]; const element = txItems.splice(paidGasIndex, 1)[0];
element.to.name = 'Validators'; element.to.name = 'Validators';
......
import _ from 'lodash'; import _groupBy from 'lodash/groupBy';
import _keysIn from 'lodash/keysIn';
import _mapValues from 'lodash/mapValues';
import type { NovesResponseData } from 'types/api/noves'; import type { NovesResponseData } from 'types/api/noves';
import type { TokenInfo } from 'types/api/token'; import type { TokenInfo } from 'types/api/token';
...@@ -47,28 +49,28 @@ export function getTokensData(data: NovesResponseData): TokensData { ...@@ -47,28 +49,28 @@ export function getTokensData(data: NovesResponseData): TokensData {
}); });
// Group tokens by property into arrays // Group tokens by property into arrays
const tokensGroupByname = _.groupBy(tokens, 'name'); const tokensGroupByname = _groupBy(tokens, 'name');
const tokensGroupBySymbol = _.groupBy(tokens, 'symbol'); const tokensGroupBySymbol = _groupBy(tokens, 'symbol');
const tokensGroupById = _.groupBy(tokens, 'id'); const tokensGroupById = _groupBy(tokens, 'id');
// Map properties to an object and remove duplicates // Map properties to an object and remove duplicates
const mappedNames = _.mapValues(tokensGroupByname, (i) => { const mappedNames = _mapValues(tokensGroupByname, (i) => {
return i[0]; return i[0];
}); });
const mappedSymbols = _.mapValues(tokensGroupBySymbol, (i) => { const mappedSymbols = _mapValues(tokensGroupBySymbol, (i) => {
return i[0]; return i[0];
}); });
const mappedIds = _.mapValues(tokensGroupById, (i) => { const mappedIds = _mapValues(tokensGroupById, (i) => {
return i[0]; return i[0];
}); });
const filters = [ 'undefined', 'null' ]; const filters = [ 'undefined', 'null' ];
// Array of keys to match in string // Array of keys to match in string
const nameList = _.keysIn(mappedNames).filter(i => !filters.includes(i)); const nameList = _keysIn(mappedNames).filter(i => !filters.includes(i));
const symbolList = _.keysIn(mappedSymbols).filter(i => !filters.includes(i)); const symbolList = _keysIn(mappedSymbols).filter(i => !filters.includes(i));
const idList = _.keysIn(mappedIds).filter(i => !filters.includes(i)); const idList = _keysIn(mappedIds).filter(i => !filters.includes(i));
return { return {
nameList, nameList,
......
import { useQuery } from '@tanstack/react-query'; import { useQuery } from '@tanstack/react-query';
import _ from 'lodash'; import _chunk from 'lodash/chunk';
import _uniq from 'lodash/uniq';
import React from 'react'; import React from 'react';
import type { NovesDescribeTxsResponse } from 'types/api/noves'; import type { NovesDescribeTxsResponse } from 'types/api/noves';
...@@ -15,8 +16,8 @@ const translateEnabled = feature.isEnabled && feature.provider === 'noves'; ...@@ -15,8 +16,8 @@ const translateEnabled = feature.isEnabled && feature.provider === 'noves';
export default function useDescribeTxs(items: Array<Transaction> | undefined, viewAsAccountAddress: string | undefined, isPlaceholderData: boolean) { export default function useDescribeTxs(items: Array<Transaction> | undefined, viewAsAccountAddress: string | undefined, isPlaceholderData: boolean) {
const apiFetch = useApiFetch(); const apiFetch = useApiFetch();
const txsHash = _.uniq(items?.map(i => i.hash)); const txsHash = _uniq(items?.map(i => i.hash));
const txChunks = _.chunk(txsHash, 10); const txChunks = _chunk(txsHash, 10);
const queryKey = { const queryKey = {
viewAsAccountAddress, viewAsAccountAddress,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment