1
0
Fork 0
mirror of https://github.com/muerwre/vault-frontend.git synced 2025-04-24 20:36:40 +07:00

(nextjs) fixed eslint warnings

This commit is contained in:
Fedor Katurov 2022-01-19 12:03:54 +07:00
parent c469722a86
commit e5f8d5a551
29 changed files with 56 additions and 59 deletions

4
.eslintignore Normal file
View file

@ -0,0 +1,4 @@
build
.next
.husky
node_modules

View file

@ -29,6 +29,29 @@ module.exports = {
allowSeparatedGroups: false, allowSeparatedGroups: false,
}, },
], ],
'import/order': [
'error',
{
groups: ['builtin', 'external', 'internal', 'sibling', 'type', 'object'],
pathGroups: [
{
pattern: '~/**',
group: 'internal',
},
{
pattern: '../**',
group: 'sibling',
position: 'after',
},
{
pattern: './**',
group: 'sibling',
position: 'after',
},
],
'newlines-between': 'always',
},
],
}, },
}, },
jest: { jest: {

View file

@ -1,9 +1,4 @@
import React, { import React, { forwardRef, KeyboardEventHandler, TextareaHTMLAttributes, useCallback } from 'react';
forwardRef,
KeyboardEventHandler,
TextareaHTMLAttributes,
useCallback,
} from 'react';
import { Textarea } from '~/components/input/Textarea'; import { Textarea } from '~/components/input/Textarea';
import { useCommentFormContext } from '~/hooks/comments/useCommentFormFormik'; import { useCommentFormContext } from '~/hooks/comments/useCommentFormFormik';
import { useRandomPhrase } from '~/constants/phrases'; import { useRandomPhrase } from '~/constants/phrases';

View file

@ -6,10 +6,10 @@ import { Link } from 'react-router-dom';
interface AnchorProps extends LinkProps {} interface AnchorProps extends LinkProps {}
const Anchor: VFC<AnchorProps> = ({ ref, href, ...rest }) => const Anchor: VFC<AnchorProps> = ({ ref, href, children, ...rest }) =>
CONFIG.isNextEnvironment ? ( CONFIG.isNextEnvironment ? (
<NextLink href={href ?? ''} passHref> <NextLink href={href ?? ''} passHref>
<a {...rest} /> <a {...rest}>{children}</a>
</NextLink> </NextLink>
) : ( ) : (
<Link {...rest} to={href ?? ''} /> <Link {...rest} to={href ?? ''} />

View file

@ -1,4 +1,4 @@
import React, { FC, forwardRef, useCallback } from 'react'; import React, { forwardRef, useCallback } from 'react';
import { getURLFromString } from '~/utils/dom'; import { getURLFromString } from '~/utils/dom';
import { PRESETS } from '~/constants/urls'; import { PRESETS } from '~/constants/urls';
import styles from './styles.module.scss'; import styles from './styles.module.scss';

View file

@ -32,20 +32,18 @@ const Grid: FC<IProps> = ({
[styles.horizontal]: horizontal, [styles.horizontal]: horizontal,
[styles.vertical]: !horizontal, [styles.vertical]: !horizontal,
[styles.square]: square, [styles.square]: square,
[styles.stretchy]: stretchy [styles.stretchy]: stretchy,
})} })}
style={{ style={{
...style, ...style,
gridTemplateColumns: square gridTemplateColumns: square
? `repeat(auto-fill, ${(columns !== 'auto' && columns) || size})` ? `repeat(auto-fill, ${(columns !== 'auto' && columns) || size})`
: columns, : columns,
gridTemplateRows: square gridTemplateRows: square ? `repeat(auto-fill, ${(rows !== 'auto' && rows) || size})` : rows,
? `repeat(auto-fill, ${(rows !== 'auto' && rows) || size})`
: rows,
gridAutoRows: rows, gridAutoRows: rows,
gridAutoColumns: columns, gridAutoColumns: columns,
gridRowGap: gap, gridRowGap: gap,
gridColumnGap: gap gridColumnGap: gap,
}} }}
{...props} {...props}
> >

View file

@ -31,7 +31,7 @@ const Group: FC<IProps> = ({
[styles.wrap]: wrap, [styles.wrap]: wrap,
[styles.seamless]: seamless, [styles.seamless]: seamless,
}, },
className, className
)} )}
{...props} {...props}
> >

View file

@ -6,15 +6,9 @@ import classNames from 'classnames';
type IProps = HTMLAttributes<HTMLDivElement> & { type IProps = HTMLAttributes<HTMLDivElement> & {
seamless?: boolean; seamless?: boolean;
stretchy?: boolean; stretchy?: boolean;
} };
const Panel: FC<IProps> = ({ const Panel: FC<IProps> = ({ className, children, seamless, stretchy, ...props }) => (
className,
children,
seamless,
stretchy,
...props
}) => (
<div className={classNames(styles.panel, className, { seamless, stretchy })} {...props}> <div className={classNames(styles.panel, className, { seamless, stretchy })} {...props}>
{children} {children}
</div> </div>

View file

@ -1,6 +1,5 @@
import React, { FC } from 'react'; import React, { FC } from 'react';
import styles from './styles.module.scss'; import styles from './styles.module.scss';
import { NavLink } from 'react-router-dom';
import { CellShade } from '~/components/flow/CellShade'; import { CellShade } from '~/components/flow/CellShade';
import { FlowDisplay, INode } from '~/types'; import { FlowDisplay, INode } from '~/types';
import { FlowCellText } from '~/components/flow/FlowCellText'; import { FlowCellText } from '~/components/flow/FlowCellText';

View file

@ -8,7 +8,6 @@ import { getURLFromString } from '~/utils/dom';
import { PRESETS, URLS } from '~/constants/urls'; import { PRESETS, URLS } from '~/constants/urls';
import SwiperClass from 'swiper/types/swiper-class'; import SwiperClass from 'swiper/types/swiper-class';
import { LoaderCircle } from '~/components/input/LoaderCircle'; import { LoaderCircle } from '~/components/input/LoaderCircle';
import { useHistory } from 'react-router';
import classNames from 'classnames'; import classNames from 'classnames';
import { IFlowNode } from '~/types'; import { IFlowNode } from '~/types';
import { useWindowSize } from '~/hooks/dom/useWindowSize'; import { useWindowSize } from '~/hooks/dom/useWindowSize';

View file

@ -7,7 +7,6 @@ import { INode } from '~/types';
import { Icon } from '~/components/input/Icon'; import { Icon } from '~/components/input/Icon';
import classNames from 'classnames'; import classNames from 'classnames';
import { Grid } from '~/components/containers/Grid'; import { Grid } from '~/components/containers/Grid';
import { useHistory } from 'react-router';
import { URLS } from '~/constants/urls'; import { URLS } from '~/constants/urls';
import { Placeholder } from '~/components/placeholders/Placeholder'; import { Placeholder } from '~/components/placeholders/Placeholder';
import { useNavigation } from '~/hooks/navigation/useNavigation'; import { useNavigation } from '~/hooks/navigation/useNavigation';

View file

@ -6,7 +6,6 @@ import styles from './styles.module.scss';
import { INode } from '~/types'; import { INode } from '~/types';
import { getPrettyDate } from '~/utils/dom'; import { getPrettyDate } from '~/utils/dom';
import { URLS } from '~/constants/urls'; import { URLS } from '~/constants/urls';
import { useHistory } from 'react-router-dom';
import { useNavigation } from '~/hooks/navigation/useNavigation'; import { useNavigation } from '~/hooks/navigation/useNavigation';
interface IProps { interface IProps {

View file

@ -1,9 +1,8 @@
import React, { FC, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react'; import React, { FC, memo, useEffect, useMemo, useRef, useState } from 'react';
import styles from './styles.module.scss'; import styles from './styles.module.scss';
import classNames from 'classnames'; import classNames from 'classnames';
import { INode } from '~/types'; import { INode } from '~/types';
import { PRESETS, URLS } from '~/constants/urls'; import { PRESETS } from '~/constants/urls';
import { RouteComponentProps } from 'react-router';
import { getURL, getURLFromString } from '~/utils/dom'; import { getURL, getURLFromString } from '~/utils/dom';
import { useColorGradientFromString } from '~/hooks/color/useColorGradientFromString'; import { useColorGradientFromString } from '~/hooks/color/useColorGradientFromString';
import { Square } from '~/components/common/Square'; import { Square } from '~/components/common/Square';

View file

@ -1,7 +1,5 @@
import React, { FC, useMemo } from 'react'; import React, { FC, useMemo } from 'react';
import styles from './styles.module.scss'; import styles from './styles.module.scss';
import { Button } from '~/components/input/Button';
import { Filler } from '~/components/containers/Filler';
interface SidebarStackProps {} interface SidebarStackProps {}

View file

@ -10,7 +10,7 @@ export const COMMENT_BLOCK_TYPES = {
export const COMMENT_BLOCK_DETECTORS = [ export const COMMENT_BLOCK_DETECTORS = [
{ {
type: COMMENT_BLOCK_TYPES.EMBED, type: COMMENT_BLOCK_TYPES.EMBED,
test: /(https?:\/\/(www\.)?(youtube\.com|youtu\.be)\/(watch)?(\?v=)?[\w\-\&\=]+)/gim, test: /(https?:\/\/(www\.)?(youtube\.com|youtu\.be)\/(watch)?(\?v=)?[\w\-&=]+)/gim,
}, },
{ {
type: COMMENT_BLOCK_TYPES.MARK, type: COMMENT_BLOCK_TYPES.MARK,

View file

@ -26,7 +26,7 @@ const EditorDialog: FC<Props> = observer(({ node, onRequestClose, onSubmit }) =>
const uploader = useUploader(UploadSubject.Editor, UploadTarget.Nodes, node.files); const uploader = useUploader(UploadSubject.Editor, UploadTarget.Nodes, node.files);
const formik = useNodeFormFormik(node, uploader, onRequestClose, onSubmit); const formik = useNodeFormFormik(node, uploader, onRequestClose, onSubmit);
const { values, handleSubmit, dirty, status } = formik; const { values, handleSubmit, dirty } = formik;
const component = useMemo(() => node.type && prop(node.type, NODE_EDITORS), [node.type]); const component = useMemo(() => node.type && prop(node.type, NODE_EDITORS), [node.type]);

View file

@ -6,7 +6,6 @@ import { NodeCommentForm } from '~/components/node/NodeCommentForm';
import { NodeRelatedBlock } from '~/components/node/NodeRelatedBlock'; import { NodeRelatedBlock } from '~/components/node/NodeRelatedBlock';
import { useNodeBlocks } from '~/hooks/node/useNodeBlocks'; import { useNodeBlocks } from '~/hooks/node/useNodeBlocks';
import { NodeTagsBlock } from '~/components/node/NodeTagsBlock'; import { NodeTagsBlock } from '~/components/node/NodeTagsBlock';
import StickyBox from 'react-sticky-box';
import styles from './styles.module.scss'; import styles from './styles.module.scss';
import { NodeAuthorBlock } from '~/components/node/NodeAuthorBlock'; import { NodeAuthorBlock } from '~/components/node/NodeAuthorBlock';
import { useNodeContext } from '~/utils/context/NodeContextProvider'; import { useNodeContext } from '~/utils/context/NodeContextProvider';

View file

@ -3,8 +3,6 @@ import { ERRORS } from '~/constants/errors';
import { useCallback } from 'react'; import { useCallback } from 'react';
import { FormikConfig, useFormik } from 'formik'; import { FormikConfig, useFormik } from 'formik';
import { IUser } from '~/types/auth'; import { IUser } from '~/types/auth';
import { showToastSuccess } from '~/utils/toast';
import { getRandomPhrase } from '~/constants/phrases';
import { showErrorToast } from '~/utils/errors/showToast'; import { showErrorToast } from '~/utils/errors/showToast';
import { getValidationErrors } from '~/utils/errors/getValidationErrors'; import { getValidationErrors } from '~/utils/errors/getValidationErrors';

View file

@ -1,9 +1,8 @@
import { useAuthStore } from '~/store/auth/useAuthStore'; import { useAuthStore } from '~/store/auth/useAuthStore';
import { useCallback } from 'react'; import { useCallback } from 'react';
import { apiUserLogin } from '~/api/auth'; import { apiUserLogin } from '~/api/auth';
import { showErrorToast } from '~/utils/errors/showToast';
import { getRandomPhrase } from '~/constants/phrases'; import { getRandomPhrase } from '~/constants/phrases';
import { showToastInfo, showToastSuccess } from '~/utils/toast'; import { showToastInfo } from '~/utils/toast';
export const useLoginLogoutRestore = () => { export const useLoginLogoutRestore = () => {
const auth = useAuthStore(); const auth = useAuthStore();

View file

@ -16,6 +16,7 @@ export const useScrollToTop = (deps?: any[]) => {
top: bounds.top - 100, top: bounds.top - 100,
}); });
}, },
// eslint-disable-next-line react-hooks/exhaustive-deps
deps && Array.isArray(deps) ? deps : [] deps && Array.isArray(deps) ? deps : []
); );
}; };

View file

@ -2,7 +2,7 @@ import { useCallback, useState } from 'react';
import { getNodeDiff } from '~/api/node'; import { getNodeDiff } from '~/api/node';
import { uniq } from 'ramda'; import { uniq } from 'ramda';
import { useFlowStore } from '~/store/flow/useFlowStore'; import { useFlowStore } from '~/store/flow/useFlowStore';
import { runInAction, toJS } from 'mobx'; import { runInAction } from 'mobx';
import { showErrorToast } from '~/utils/errors/showToast'; import { showErrorToast } from '~/utils/errors/showToast';
export const useFlowLoader = () => { export const useFlowLoader = () => {

View file

@ -1,5 +1,5 @@
import useSWR from 'swr'; import useSWR from 'swr';
import { ApiGetNodeRequest, ApiGetNodeResponse } from '~/types/node'; import { ApiGetNodeResponse } from '~/types/node';
import { API } from '~/constants/api'; import { API } from '~/constants/api';
import { useOnNodeSeen } from '~/hooks/node/useOnNodeSeen'; import { useOnNodeSeen } from '~/hooks/node/useOnNodeSeen';
import { apiGetNode } from '~/api/node'; import { apiGetNode } from '~/api/node';

View file

@ -41,7 +41,10 @@ export const useNodeActions = (node: INode, update: (node: Partial<INode>) => Pr
} }
}, [node.deleted_at, node.id, update]); }, [node.deleted_at, node.id, update]);
const onEdit = useCallback(() => showModal(Dialog.EditNode, { nodeId: node.id! }), [node]); const onEdit = useCallback(() => showModal(Dialog.EditNode, { nodeId: node.id! }), [
node,
showModal,
]);
return { onLike, onStar, onLock, onEdit }; return { onLike, onStar, onLock, onEdit };
}; };

View file

@ -4,6 +4,8 @@ import { CONFIG } from '~/utils/config';
export const useNodePageParams = () => { export const useNodePageParams = () => {
return CONFIG.isNextEnvironment return CONFIG.isNextEnvironment
? (useRouter().query.id as string) ? // eslint-disable-next-line react-hooks/rules-of-hooks
: useRouteMatch<{ id: string }>().params.id; (useRouter().query.id as string)
: // eslint-disable-next-line react-hooks/rules-of-hooks
useRouteMatch<{ id: string }>().params.id;
}; };

View file

@ -1,5 +1,4 @@
import React, { FC } from 'react'; import React, { FC } from 'react';
import { Route } from 'react-router';
import { Card } from '~/components/containers/Card'; import { Card } from '~/components/containers/Card';
import { Footer } from '~/components/main/Footer'; import { Footer } from '~/components/main/Footer';
@ -9,8 +8,6 @@ import { Container } from '~/containers/main/Container';
import { useNodeBlocks } from '~/hooks/node/useNodeBlocks'; import { useNodeBlocks } from '~/hooks/node/useNodeBlocks';
import { NodeBottomBlock } from '~/containers/node/NodeBottomBlock'; import { NodeBottomBlock } from '~/containers/node/NodeBottomBlock';
import { useNodeCoverImage } from '~/hooks/node/useNodeCoverImage'; import { useNodeCoverImage } from '~/hooks/node/useNodeCoverImage';
import { URLS } from '~/constants/urls';
import { EditorEditDialog } from '~/containers/dialogs/EditorEditDialog';
import styles from './styles.module.scss'; import styles from './styles.module.scss';
import { useNodeContext } from '~/utils/context/NodeContextProvider'; import { useNodeContext } from '~/utils/context/NodeContextProvider';

View file

@ -15,7 +15,6 @@ import { AudioPlayerProvider } from '~/utils/providers/AudioPlayerProvider';
import { MetadataProvider } from '~/utils/providers/MetadataProvider'; import { MetadataProvider } from '~/utils/providers/MetadataProvider';
import { AuthProvider } from '~/utils/providers/AuthProvider'; import { AuthProvider } from '~/utils/providers/AuthProvider';
import { MainLayout } from '~/containers/main/MainLayout'; import { MainLayout } from '~/containers/main/MainLayout';
import { useGlobalLoader } from '~/hooks/dom/useGlobalLoader';
const mobxStore = getMOBXStore(); const mobxStore = getMOBXStore();

View file

@ -1,4 +1,4 @@
import Document, { Html, Head, Main, NextScript } from 'next/document'; import Document, { Head, Html, Main, NextScript } from 'next/document';
class MyDocument extends Document { class MyDocument extends Document {
static async getInitialProps(ctx) { static async getInitialProps(ctx) {

View file

@ -3,7 +3,7 @@ import { FlowStore } from '~/store/flow/FlowStore';
import { ModalStore } from '~/store/modal/ModalStore'; import { ModalStore } from '~/store/modal/ModalStore';
import { LabStore } from '~/store/lab/LabStore'; import { LabStore } from '~/store/lab/LabStore';
import { AuthStore } from '~/store/auth/AuthStore'; import { AuthStore } from '~/store/auth/AuthStore';
import { enableStaticRendering, useStaticRendering } from 'mobx-react-lite'; import { enableStaticRendering } from 'mobx-react-lite';
export class Store { export class Store {
flow = new FlowStore(); flow = new FlowStore();

View file

@ -1,12 +1,4 @@
import React, { import React, { createContext, FC, useCallback, useContext, useEffect, useRef, useState } from 'react';
createContext,
FC,
useCallback,
useContext,
useEffect,
useRef,
useState,
} from 'react';
import { IFile } from '~/types'; import { IFile } from '~/types';
import { getURL } from '~/utils/dom'; import { getURL } from '~/utils/dom';
import { path } from 'ramda'; import { path } from 'ramda';