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:
parent
c469722a86
commit
e5f8d5a551
29 changed files with 56 additions and 59 deletions
4
.eslintignore
Normal file
4
.eslintignore
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
build
|
||||||
|
.next
|
||||||
|
.husky
|
||||||
|
node_modules
|
|
@ -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: {
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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 ?? ''} />
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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}
|
||||||
>
|
>
|
||||||
|
|
|
@ -31,7 +31,7 @@ const Group: FC<IProps> = ({
|
||||||
[styles.wrap]: wrap,
|
[styles.wrap]: wrap,
|
||||||
[styles.seamless]: seamless,
|
[styles.seamless]: seamless,
|
||||||
},
|
},
|
||||||
className,
|
className
|
||||||
)}
|
)}
|
||||||
{...props}
|
{...props}
|
||||||
>
|
>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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 {}
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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]);
|
||||||
|
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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 : []
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -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 = () => {
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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 };
|
||||||
};
|
};
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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';
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue