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

fix eslint

This commit is contained in:
Fedor Katurov 2023-10-30 21:49:10 +06:00
parent e4b158dada
commit a26e4168fd
80 changed files with 199 additions and 205 deletions

View file

@ -86,6 +86,7 @@ const LoginAnimatedScene: FC<LoginSceneProps> = memo(() => {
const listener = throttle(100, onMouseMove);
document.addEventListener('mousemove', listener);
return () => document.removeEventListener('mousemove', listener);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
if (isTablet) {

View file

@ -1,10 +1,8 @@
import React, { FC, ReactNode, useCallback } from 'react';
import { FC, ReactNode } from 'react';
import { WithDescription } from '~/components/common/WithDescription';
import { Icon } from '~/components/input/Icon';
import styles from './styles.module.scss';
interface Props {
icon: string;
title: string;
@ -22,12 +20,6 @@ const BorisContactItem: FC<Props> = ({
prefix,
suffix,
}) => {
const onClick = useCallback(() => {
if (!link) return;
window.open(link);
}, []);
return (
<div>
{prefix}

View file

@ -1,7 +1,6 @@
import React, { FC } from 'react';
import { BorisContactItem } from '~/components/boris/BorisContactItem';
import { Group } from '~/components/containers/Group';
import { Padder } from '~/components/containers/Padder';
import { Button } from '~/components/input/Button';

View file

@ -1,10 +1,7 @@
import React, { VFC } from 'react';
import { parseISO } from 'date-fns';
import { StatsCountdownCard } from '~/components/charts/StatsCountdownCard';
import { StatsGraphCard } from '~/components/charts/StatsGraphCard';
import { foundationDate } from '~/constants/boris/constants';
import styles from './styles.module.scss';

View file

@ -20,7 +20,7 @@ const BorisStatsBackend: FC<IProps> = ({ isLoading, stats }) => {
);
const nodesByMonth = useMemo(
() => stats.nodes.by_month?.slice(0, -1),
[stats.comments.by_month],
[stats.nodes.by_month],
);
if (!stats && !isLoading) {

View file

@ -1,7 +1,5 @@
import React, { useMemo, VFC } from 'react';
import { lighten } from 'color2k';
import { makeBezierCurve, PathPoint } from '~/utils/dom/makeBezierCurve';
import { SVGProps } from '~/utils/types';
@ -40,7 +38,7 @@ const BasicCurveChart: VFC<BasicCurveChartProps> = ({
],
[],
),
[height, width, items, gap],
[items, borderGap, height, max, width],
);
if (!points.length) {

View file

@ -11,15 +11,13 @@ import React, {
import classnames from 'classnames';
import { CommentForm } from '~/components/comment/CommentForm';
import { Authorized } from '~/components/containers/Authorized';
import { Group } from '~/components/containers/Group';
import { AudioPlayer } from '~/components/media/AudioPlayer';
import { COMMENT_BLOCK_RENDERERS } from '~/constants/comment';
import { UploadType } from '~/constants/uploads';
import { imagePresets } from '~/constants/urls';
import { IComment, IFile } from '~/types';
import { formatCommentText, getPrettyDate, getURL } from '~/utils/dom';
import { formatCommentText, getPrettyDate } from '~/utils/dom';
import { append, assocPath, path, reduce } from '~/utils/ramda';
import { CommentEditingForm } from '../CommentEditingForm';

View file

@ -10,23 +10,25 @@ interface CommentDistanceProps {
secondDate?: Date;
}
const CommentDistance: FC<CommentDistanceProps> = memo(({ firstDate, secondDate }) => {
const distance = useMemo(() => {
if (!firstDate || !secondDate) {
return undefined;
const CommentDistance: FC<CommentDistanceProps> = memo(
({ firstDate, secondDate }) => {
const distance = useMemo(() => {
if (!firstDate || !secondDate) {
return undefined;
}
return formatDistance(secondDate, firstDate, {
locale: ru,
addSuffix: false,
});
}, [firstDate, secondDate]);
if (!distance) {
return null;
}
return formatDistance(secondDate, firstDate, {
locale: ru,
addSuffix: false,
});
}, []);
if (!distance) {
return null;
}
return <div className={styles.bar}>прошло {distance}</div>;
});
return <div className={styles.bar}>прошло {distance}</div>;
},
);
export { CommentDistance };

View file

@ -1,4 +1,4 @@
import { FC, useCallback, useMemo, useState } from 'react';
import { FC, useCallback, useState } from 'react';
import { FormikProvider } from 'formik';
import { observer } from 'mobx-react-lite';
@ -9,14 +9,12 @@ import { CommentFormFormatButtons } from '~/components/comment/CommentFormFormat
import { LocalCommentFormTextarea } from '~/components/comment/LocalCommentFormTextarea';
import { Filler } from '~/components/containers/Filler';
import { Button } from '~/components/input/Button';
import { UploadDropzone } from '~/components/upload/UploadDropzone';
import { ERROR_LITERAL } from '~/constants/errors';
import { EMPTY_COMMENT } from '~/constants/node';
import { useCommentFormFormik } from '~/hooks/comments/useCommentFormFormik';
import { useInputPasteUpload } from '~/hooks/dom/useInputPasteUpload';
import { IComment, INode } from '~/types';
import { IComment } from '~/types';
import {
UploaderContextProvider,
useUploaderContext,
} from '~/utils/context/UploaderContextProvider';

View file

@ -30,14 +30,14 @@ const CommentFormAttaches: FC = () => {
(newFiles: IFile[]) => {
setFiles([...filesAudios, ...newFiles.filter((it) => it)]);
},
[setFiles, filesImages, filesAudios],
[setFiles, filesAudios],
);
const onAudioMove = useCallback(
(newFiles: IFile[]) => {
setFiles([...filesImages, ...newFiles]);
},
[setFiles, filesImages, filesAudios],
[setFiles, filesImages],
);
const onFileDelete = useCallback(

View file

@ -115,7 +115,7 @@ const CommentFormFormatButtons: FC<IProps> = ({ element, handler }) => {
label="Коммент"
className={styles.button}
>
{`/ /`}
{'/ /'}
</Button>
</ButtonGroup>
);

View file

@ -4,7 +4,6 @@ import classNames from 'classnames';
import { Square } from '~/components/common/Square';
import { imagePresets } from '~/constants/urls';
import { useColorGradientFromString } from '~/hooks/color/useColorGradientFromString';
import { getURLFromString } from '~/utils/dom';
import { DivProps } from '~/utils/types';

View file

@ -1,10 +1,8 @@
import React, {
CSSProperties,
FC,
useCallback,
useMemo,
useReducer,
useState,
} from 'react';
import classNames from 'classnames';

View file

@ -16,7 +16,7 @@ const WithDescription: FC<Props> = ({ icon, title, subtitle, link }) => {
if (!link) return;
window.open(link);
}, []);
}, [link]);
return (
<div

View file

@ -1,4 +1,4 @@
import React, { FC, useEffect, useLayoutEffect, useRef, useState } from 'react';
import React, { FC, useEffect, useRef, useState } from 'react';
import Masonry from 'react-masonry-css';
@ -34,6 +34,7 @@ const Columns: FC<ColumnsProps> = ({
const timeout = setTimeout(() => setColumns([...childs]), 150);
return () => clearTimeout(timeout);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [ref.current]);
useScrollEnd(columns, onScrollEnd, { active: hasMore, threshold: 2 });

View file

@ -15,7 +15,7 @@ const AudioGrid: FC<IProps> = ({ files, setFiles, locked }) => {
(newFiles: IFile[]) => {
setFiles(newFiles);
},
[setFiles, files],
[setFiles],
);
const onDrop = useCallback(

View file

@ -18,7 +18,7 @@ const ImageGrid: FC<IProps> = ({ files, setFiles, locked }) => {
(newFiles: IFile[]) => {
setFiles(newFiles.filter((it) => it));
},
[setFiles, files],
[setFiles],
);
const onDrop = useCallback(

View file

@ -25,12 +25,16 @@ const CellShade: FC<Props> = ({ color, size = 50, angle = 7, ...rest }) => {
return `linear-gradient(${angle}deg, ${normalized} ${size}px, ${transparentize(
normalized,
1
1,
)} ${size * 5}px)`;
}, [color, size]);
}, [angle, color, size]);
return (
<div {...rest} className={classNames(rest.className, styles.shade)} style={{ background }} />
<div
{...rest}
className={classNames(rest.className, styles.shade)}
style={{ background }}
/>
);
};

View file

@ -1,4 +1,4 @@
import React, { FC, useCallback } from 'react';
import React, { useCallback } from 'react';
import { Filler } from '~/components/containers/Filler';
import { Button } from '~/components/input/Button';
@ -10,7 +10,7 @@ import styles from './styles.module.scss';
const FlowLoginStamp = () => {
const showModal = useShowModal(Dialog.Login);
const onClick = useCallback(() => showModal({}), []);
const onClick = useCallback(() => showModal({}), [showModal]);
return (
<div className={styles.stamp}>

View file

@ -1,7 +1,6 @@
import React, { FC, useCallback, useMemo, useState } from 'react';
import classNames from 'classnames';
import Image from 'next/image';
import SwiperCore, { Autoplay, EffectFade, Lazy, Navigation } from 'swiper';
import { Swiper, SwiperSlide } from 'swiper/react';
import SwiperClass from 'swiper/types/swiper-class';

View file

@ -90,7 +90,7 @@ const Button: FC<IButtonProps> = memo(
}
return 24;
}, []);
}, [size]);
return (
<Tippy content={label || ''} disabled={!label}>

View file

@ -3,7 +3,6 @@ import React, { FC } from 'react';
import Image from 'next/future/image';
import SwiperCore, { A11y, Navigation, Pagination } from 'swiper';
import { ImagePreloader } from '~/components/media/ImagePreloader';
import { Placeholder } from '~/components/placeholders/Placeholder';
import { INodeComponentProps } from '~/constants/node';
import { imagePresets } from '~/constants/urls';

View file

@ -61,6 +61,7 @@ const MenuButton: FC<MenuButtonProps> = ({
useEffect(() => {
popper.update?.();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [visible]);
return (

View file

@ -2,7 +2,6 @@ import { PropsWithChildren } from 'react';
import classNames from 'classnames';
import { Anchor } from '~/components/common/Anchor';
import { DivProps, LinkProps } from '~/utils/types';
import styles from './styles.module.scss';

View file

@ -89,6 +89,7 @@ const NodeImageSwiperBlock: FC<IProps> = observer(({ node }) => {
useEffect(() => {
controlledSwiper?.slideTo(0, 0);
return () => controlledSwiper?.slideTo(0, 0);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [images, node?.id]);
useEffect(() => {
@ -97,6 +98,7 @@ const NodeImageSwiperBlock: FC<IProps> = observer(({ node }) => {
} else {
controlledSwiper?.keyboard.enable();
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [isModalActive]);
if (!images?.length) {

View file

@ -1,14 +1,11 @@
import React, { FC, useCallback } from 'react';
import React, { FC } from 'react';
import { Pressable } from '~/components/common/Pressable';
import { NodeRelated } from '~/components/node/NodeRelated';
import { NodeRelatedPlaceholder } from '~/components/node/NodeRelated/placeholder';
import { Dialog } from '~/constants/modal';
import { useShowModal } from '~/hooks/modal/useShowModal';
import { useTagSidebar } from '~/hooks/sidebar/useTagSidebar';
import { INode, ITag } from '~/types';
import { INode } from '~/types';
import { INodeRelated } from '~/types/node';
import { useSidebar } from '~/utils/providers/SidebarProvider';
interface IProps {
isLoading: boolean;

View file

@ -25,14 +25,14 @@ const NoteCard: VFC<NoteCardProps> = ({
}) => {
const [editing, setEditing] = useState(false);
const toggleEditing = useCallback(() => setEditing(v => !v), []);
const toggleEditing = useCallback(() => setEditing((v) => !v), []);
const onUpdate = useCallback(
(text: string, callback?: () => void) =>
update(text, () => {
setEditing(false);
callback?.();
}),
[],
[update],
);
return (

View file

@ -3,8 +3,6 @@ import React, { FC } from 'react';
import { Anchor } from '~/components/common/Anchor';
import { InlineUsername } from '~/components/common/InlineUsername';
import { Square } from '~/components/common/Square';
import { Card } from '~/components/containers/Card';
import { FlowRecentItem } from '~/components/flow/FlowRecentItem';
import { NotificationItem, NotificationType } from '~/types/notifications';
import { formatText, getPrettyDate, getURLFromString } from '~/utils/dom';

View file

@ -2,9 +2,7 @@ import React, { ChangeEvent, FC, useCallback } from 'react';
import { Avatar } from '~/components/common/Avatar';
import { Button } from '~/components/input/Button';
import { imagePresets } from '~/constants/urls';
import { IFile } from '~/types';
import { getURL } from '~/utils/dom';
import styles from './styles.module.scss';

View file

@ -2,7 +2,6 @@ import { useState, VFC } from 'react';
import { Group } from '~/components/containers/Group';
import { Button } from '~/components/input/Button';
import { Icon } from '~/components/input/Icon';
import { HorizontalMenu } from '~/components/menu/HorizontalMenu';
import { useStackContext } from '~/components/sidebar/SidebarStack';
import { SidebarStackCard } from '~/components/sidebar/SidebarStackCard';

View file

@ -38,7 +38,7 @@ const SidebarCards: FC = ({ children }) => {
return [];
}
return Array.isArray(children) ? children.filter(it => it) : [children];
return Array.isArray(children) ? children.filter((it) => it) : [children];
}, [children]);
if (isNil(activeTab) || !nonEmptyChildren[activeTab]) {
@ -48,7 +48,7 @@ const SidebarCards: FC = ({ children }) => {
return <div className={styles.card}>{nonEmptyChildren[activeTab]}</div>;
};
const SidebarStack = function({
const SidebarStack = function ({
children,
tab,
onTabChange,
@ -58,7 +58,7 @@ const SidebarStack = function({
const closeAllTabs = useCallback(() => {
setActiveTab(undefined);
onTabChange?.(undefined);
}, []);
}, [onTabChange]);
const onChangeTab = useCallback(
(index: number) => {