From c5c2816c3ddbff8f062f7af3d044e76c6cd8e559 Mon Sep 17 00:00:00 2001 From: Luke Vella Date: Sat, 16 Apr 2022 10:14:28 +0100 Subject: [PATCH] Add eslint import rules --- .eslintrc.json | 10 ++++++- components/confirm-prompt.tsx | 1 + components/cookie-consent.tsx | 1 + components/crisp-chat.tsx | 4 ++- components/discussion/discussion.tsx | 1 + components/dropdown.tsx | 1 + components/error-page.tsx | 4 ++- .../month-calendar/month-calendar.tsx | 3 ++- components/home.tsx | 3 ++- components/home/bonus.tsx | 6 +++-- components/home/features.tsx | 3 ++- components/home/hero.tsx | 3 ++- components/home/poll-demo.tsx | 1 + components/home/stats.tsx | 2 +- components/modal/modal-provider.tsx | 1 + components/page-layout.tsx | 18 +++++++------ components/page-layout/footer.tsx | 3 ++- components/poll/legacy-poll-notice.tsx | 3 ++- components/poll/manage-poll.tsx | 13 +++++----- components/poll/mobile-poll/mobile-poll.tsx | 6 +++-- components/poll/mutations.ts | 1 + components/poll/notifications-toggle.tsx | 10 ++++--- components/poll/poll-subheader.tsx | 15 ++++++----- components/poll/poll.tsx | 5 ++-- components/poll/truncated-linkify.tsx | 1 + components/popover.tsx | 8 +++--- components/sharing.tsx | 1 + components/standard-layout.tsx | 1 + components/support.tsx | 12 +++++---- .../time-zone-picker/time-zone-picker.tsx | 1 + pages/404.tsx | 3 ++- pages/_app.tsx | 15 ++++++----- pages/_error.tsx | 5 ++-- pages/_middleware.ts | 1 + pages/api/legacy/[urlId].ts | 1 + pages/api/poll/[urlId]/comments/index.ts | 1 + pages/api/poll/[urlId]/index.ts | 1 + .../[urlId]/participant/[participantId].ts | 2 +- pages/api/poll/[urlId]/participant/index.ts | 1 + pages/api/poll/[urlId]/verify.ts | 1 + pages/api/poll/demo.ts | 1 + pages/api/poll/index.ts | 1 + pages/demo.tsx | 3 ++- pages/home.tsx | 1 + pages/new.tsx | 7 ++--- pages/poll.tsx | 26 ++++++++++--------- pages/privacy-policy.tsx | 3 ++- pages/support.tsx | 1 + yarn.lock | 2 +- 49 files changed, 139 insertions(+), 79 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index bffb357a7..6153746e7 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,3 +1,11 @@ { - "extends": "next/core-web-vitals" + "extends": "next/core-web-vitals", + "plugins": ["simple-import-sort"], + "rules": { + "simple-import-sort/imports": "error", + "simple-import-sort/exports": "error", + "import/first": "error", + "import/newline-after-import": "error", + "import/no-duplicates": "error" + } } diff --git a/components/confirm-prompt.tsx b/components/confirm-prompt.tsx index eb66f07a1..bb4cc3a73 100644 --- a/components/confirm-prompt.tsx +++ b/components/confirm-prompt.tsx @@ -1,4 +1,5 @@ import ReactDOM from "react-dom"; + import Modal, { ModalProps } from "./modal/modal"; export const confirmPrompt = (props: ModalProps) => { diff --git a/components/cookie-consent.tsx b/components/cookie-consent.tsx index 1d4c9ab3e..037286933 100644 --- a/components/cookie-consent.tsx +++ b/components/cookie-consent.tsx @@ -4,6 +4,7 @@ import Link from "next/link"; import * as React from "react"; import ReactDOM from "react-dom"; import { getPortal } from "utils/selectors"; + import CookiesIllustration from "./cookie-consent/cookies.svg"; const CookieConsentPopover: React.VoidFunctionComponent = () => { diff --git a/components/crisp-chat.tsx b/components/crisp-chat.tsx index 55655459d..bc32d6664 100644 --- a/components/crisp-chat.tsx +++ b/components/crisp-chat.tsx @@ -1,7 +1,9 @@ import * as React from "react"; -import Button from "./button"; + import Chat from "@/components/icons/chat.svg"; +import Button from "./button"; + const crispWebsiteId = process.env.NEXT_PUBLIC_CRISP_WEBSITE_ID; declare global { diff --git a/components/discussion/discussion.tsx b/components/discussion/discussion.tsx index a7089edb0..2395e0217 100644 --- a/components/discussion/discussion.tsx +++ b/components/discussion/discussion.tsx @@ -7,6 +7,7 @@ import * as React from "react"; import { Controller, useForm } from "react-hook-form"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { useList } from "react-use"; + import { createComment, CreateCommentPayload, diff --git a/components/dropdown.tsx b/components/dropdown.tsx index b39f14b88..ac2a017b6 100644 --- a/components/dropdown.tsx +++ b/components/dropdown.tsx @@ -4,6 +4,7 @@ import clsx from "clsx"; import * as React from "react"; import ReactDOM from "react-dom"; import { usePopper } from "react-popper"; + export interface DropdownProps { trigger?: React.ReactNode; children?: React.ReactNode; diff --git a/components/error-page.tsx b/components/error-page.tsx index 178ef7e02..fe64c7aae 100644 --- a/components/error-page.tsx +++ b/components/error-page.tsx @@ -1,11 +1,13 @@ import Head from "next/head"; import Link from "next/link"; import * as React from "react"; -import StandardLayout from "./standard-layout"; + import Button from "@/components/button"; import Chat from "@/components/icons/chat.svg"; import EmojiSad from "@/components/icons/emoji-sad.svg"; + import { showCrispChat } from "./crisp-chat"; +import StandardLayout from "./standard-layout"; export interface ComponentProps { icon?: React.ComponentType<{ className?: string }>; diff --git a/components/forms/poll-options-form/month-calendar/month-calendar.tsx b/components/forms/poll-options-form/month-calendar/month-calendar.tsx index 8ab73ef0d..a35a00787 100644 --- a/components/forms/poll-options-form/month-calendar/month-calendar.tsx +++ b/components/forms/poll-options-form/month-calendar/month-calendar.tsx @@ -4,7 +4,7 @@ import { addMinutes, setHours } from "date-fns/esm"; import isSameDay from "date-fns/isSameDay"; import { usePlausible } from "next-plausible"; import * as React from "react"; -import { DateTimeOption } from ".."; + import { expectTimeOption, getDateProps, @@ -24,6 +24,7 @@ import PlusSm from "../../../icons/plus-sm.svg"; import Trash from "../../../icons/trash.svg"; import X from "../../../icons/x.svg"; import Switch from "../../../switch"; +import { DateTimeOption } from ".."; import { DateTimePickerProps } from "../types"; import { formatDateWithoutTime, formatDateWithoutTz } from "../utils"; import TimePicker from "./time-picker"; diff --git a/components/home.tsx b/components/home.tsx index c1dfee0f5..018d866b6 100644 --- a/components/home.tsx +++ b/components/home.tsx @@ -1,9 +1,10 @@ import Head from "next/head"; import React from "react"; -import PageLayout from "./page-layout"; + import Bonus from "./home/bonus"; import Features from "./home/features"; import Hero from "./home/hero"; +import PageLayout from "./page-layout"; const Home: React.VoidFunctionComponent = () => { return ( diff --git a/components/home/bonus.tsx b/components/home/bonus.tsx index 01aad879e..8caa46a33 100644 --- a/components/home/bonus.tsx +++ b/components/home/bonus.tsx @@ -1,8 +1,10 @@ import * as React from "react"; -import Ban from "./ban-ads.svg"; + import Code from "@/components/icons/code.svg"; -import Server from "@/components/icons/server.svg"; import CursorClick from "@/components/icons/cursor-click.svg"; +import Server from "@/components/icons/server.svg"; + +import Ban from "./ban-ads.svg"; const Bonus: React.VoidFunctionComponent = () => { return ( diff --git a/components/home/features.tsx b/components/home/features.tsx index 8685bdeec..e62ae47e1 100644 --- a/components/home/features.tsx +++ b/components/home/features.tsx @@ -1,8 +1,9 @@ +import * as React from "react"; + import Bell from "@/components/icons/bell.svg"; import Chat from "@/components/icons/chat.svg"; import Clock from "@/components/icons/clock.svg"; import DeviceMobile from "@/components/icons/device-mobile.svg"; -import * as React from "react"; const Features: React.VoidFunctionComponent = () => { return ( diff --git a/components/home/hero.tsx b/components/home/hero.tsx index 4eba30fd6..6b154ce44 100644 --- a/components/home/hero.tsx +++ b/components/home/hero.tsx @@ -1,7 +1,8 @@ import { motion } from "framer-motion"; -import { useTranslation } from "next-i18next"; import Link from "next/link"; +import { useTranslation } from "next-i18next"; import * as React from "react"; + import { UserAvatarProvider } from "../poll/user-avatar"; import PollDemo from "./poll-demo"; import ScribbleArrow from "./scribble-arrow.svg"; diff --git a/components/home/poll-demo.tsx b/components/home/poll-demo.tsx index d04f25ab4..ddd054ad9 100644 --- a/components/home/poll-demo.tsx +++ b/components/home/poll-demo.tsx @@ -2,6 +2,7 @@ import { format } from "date-fns"; import { useTranslation } from "next-i18next"; import * as React from "react"; import { useTimeoutFn } from "react-use"; + import DateCard from "../date-card"; import Score from "../poll/score"; import UserAvater from "../poll/user-avatar"; diff --git a/components/home/stats.tsx b/components/home/stats.tsx index c6993209c..116abff5b 100644 --- a/components/home/stats.tsx +++ b/components/home/stats.tsx @@ -1,6 +1,6 @@ import Link from "next/link"; -import * as React from "react"; import { useTranslation } from "next-i18next"; +import * as React from "react"; const Stats: React.VoidFunctionComponent = () => { const { t } = useTranslation("homepage"); diff --git a/components/modal/modal-provider.tsx b/components/modal/modal-provider.tsx index 826ee917b..4342a21f8 100644 --- a/components/modal/modal-provider.tsx +++ b/components/modal/modal-provider.tsx @@ -1,5 +1,6 @@ import * as React from "react"; import { useList } from "react-use"; + import { useRequiredContext } from "../use-required-context"; import Modal, { ModalProps } from "./modal"; diff --git a/components/page-layout.tsx b/components/page-layout.tsx index 257911697..20e0c4520 100644 --- a/components/page-layout.tsx +++ b/components/page-layout.tsx @@ -1,15 +1,17 @@ -import Link from "next/link"; -import * as React from "react"; -import Github from "./home/github.svg"; -import Logo from "../public/logo.svg"; -import Footer from "./page-layout/footer"; -import Head from "next/head"; -import { useRouter } from "next/router"; import clsx from "clsx"; -import DotsVertical from "@/components/icons/dots-vertical.svg"; import dynamic from "next/dynamic"; +import Head from "next/head"; +import Link from "next/link"; +import { useRouter } from "next/router"; +import * as React from "react"; import { createBreakpoint } from "react-use"; +import DotsVertical from "@/components/icons/dots-vertical.svg"; + +import Logo from "../public/logo.svg"; +import Github from "./home/github.svg"; +import Footer from "./page-layout/footer"; + const Popover = dynamic(() => import("./popover"), { ssr: false }); export interface PageLayoutProps { children?: React.ReactNode; diff --git a/components/page-layout/footer.tsx b/components/page-layout/footer.tsx index 54b712db1..7870300c7 100644 --- a/components/page-layout/footer.tsx +++ b/components/page-layout/footer.tsx @@ -1,7 +1,8 @@ import Link from "next/link"; +import { Trans, useTranslation } from "next-i18next"; import * as React from "react"; import GitHubButton from "react-github-btn"; -import { Trans, useTranslation } from "next-i18next"; + import Logo from "../../public/logo.svg"; import Vercel from "../../public/vercel-logotype-dark.svg"; diff --git a/components/poll/legacy-poll-notice.tsx b/components/poll/legacy-poll-notice.tsx index 359a29724..a7e6d58e0 100644 --- a/components/poll/legacy-poll-notice.tsx +++ b/components/poll/legacy-poll-notice.tsx @@ -1,7 +1,8 @@ -import Speakerphone from "@/components/icons/speakerphone.svg"; import Cookies from "js-cookie"; import * as React from "react"; +import Speakerphone from "@/components/icons/speakerphone.svg"; + const cookieName = "legacy-poll-notice"; const LegacyPollNotice: React.VoidFunctionComponent<{ show?: boolean }> = ({ diff --git a/components/poll/manage-poll.tsx b/components/poll/manage-poll.tsx index 95e811027..780873d24 100644 --- a/components/poll/manage-poll.tsx +++ b/components/poll/manage-poll.tsx @@ -1,3 +1,9 @@ +import { Placement } from "@popperjs/core"; +import { format } from "date-fns"; +import { Trans,useTranslation } from "next-i18next"; +import * as React from "react"; +import { decodeDateOption, encodeDateOption } from "utils/date-time-utils"; + import Button from "@/components/button"; import Cog from "@/components/icons/cog.svg"; import LockClosed from "@/components/icons/lock-closed.svg"; @@ -5,18 +11,13 @@ import LockOpen from "@/components/icons/lock-open.svg"; import Pencil from "@/components/icons/pencil-alt.svg"; import Save from "@/components/icons/save.svg"; import Table from "@/components/icons/table.svg"; -import { Placement } from "@popperjs/core"; -import { format } from "date-fns"; -import { useTranslation } from "next-i18next"; -import * as React from "react"; -import { decodeDateOption, encodeDateOption } from "utils/date-time-utils"; + import Dropdown, { DropdownItem } from "../dropdown"; import { PollDetailsForm } from "../forms"; import { useModal } from "../modal"; import { useModalContext } from "../modal/modal-provider"; import { usePoll } from "../use-poll"; import { useUpdatePollMutation } from "./mutations"; -import { Trans } from "next-i18next"; const PollOptionsForm = React.lazy(() => import("../forms/poll-options-form")); diff --git a/components/poll/mobile-poll/mobile-poll.tsx b/components/poll/mobile-poll/mobile-poll.tsx index 1354d05a3..29d529e98 100644 --- a/components/poll/mobile-poll/mobile-poll.tsx +++ b/components/poll/mobile-poll/mobile-poll.tsx @@ -1,18 +1,20 @@ -import { usePoll } from "@/components/use-poll"; import { Listbox } from "@headlessui/react"; import { Participant, Vote } from "@prisma/client"; import clsx from "clsx"; import { useTranslation } from "next-i18next"; import * as React from "react"; import { Controller, useForm } from "react-hook-form"; + +import { usePoll } from "@/components/use-poll"; + import { decodeDateOption } from "../../../utils/date-time-utils"; import { requiredString } from "../../../utils/form-validation"; import Button from "../../button"; import DateCard from "../../date-card"; +import CheckCircle from "../../icons/check-circle.svg"; import ChevronDown from "../../icons/chevron-down.svg"; import Pencil from "../../icons/pencil.svg"; import PlusCircle from "../../icons/plus-circle.svg"; -import CheckCircle from "../../icons/check-circle.svg"; import Trash from "../../icons/trash.svg"; import { styleMenuItem } from "../../menu-styles"; import NameInput from "../../name-input"; diff --git a/components/poll/mutations.ts b/components/poll/mutations.ts index 910d8f74b..6702687d9 100644 --- a/components/poll/mutations.ts +++ b/components/poll/mutations.ts @@ -1,6 +1,7 @@ import { updatePoll, UpdatePollPayload } from "api-client/update-poll"; import { usePlausible } from "next-plausible"; import { useMutation, useQuery, useQueryClient } from "react-query"; + import { addParticipant } from "../../api-client/add-participant"; import { deleteParticipant, diff --git a/components/poll/notifications-toggle.tsx b/components/poll/notifications-toggle.tsx index 59a9d104c..8f3b44ef7 100644 --- a/components/poll/notifications-toggle.tsx +++ b/components/poll/notifications-toggle.tsx @@ -1,12 +1,14 @@ -import * as React from "react"; -import Tooltip from "../tooltip"; -import { usePoll } from "../use-poll"; import { Trans, useTranslation } from "next-i18next"; +import { usePlausible } from "next-plausible"; +import * as React from "react"; + import Button from "@/components/button"; import Bell from "@/components/icons/bell.svg"; import BellCrossed from "@/components/icons/bell-crossed.svg"; + +import Tooltip from "../tooltip"; +import { usePoll } from "../use-poll"; import { useUpdatePollMutation } from "./mutations"; -import { usePlausible } from "next-plausible"; export interface NotificationsToggleProps {} diff --git a/components/poll/poll-subheader.tsx b/components/poll/poll-subheader.tsx index 49222db62..d1a502ded 100644 --- a/components/poll/poll-subheader.tsx +++ b/components/poll/poll-subheader.tsx @@ -1,11 +1,12 @@ -import { formatRelative } from "date-fns"; -import * as React from "react"; -import { Trans, useTranslation } from "next-i18next"; -import Button from "../button"; -import { usePoll } from "../use-poll"; -import Popover from "../popover"; -import { useMutation } from "react-query"; import axios from "axios"; +import { formatRelative } from "date-fns"; +import { Trans, useTranslation } from "next-i18next"; +import * as React from "react"; +import { useMutation } from "react-query"; + +import Button from "../button"; +import Popover from "../popover"; +import { usePoll } from "../use-poll"; export interface PollSubheaderProps {} diff --git a/components/poll/poll.tsx b/components/poll/poll.tsx index 7ea53cabc..067fc362f 100644 --- a/components/poll/poll.tsx +++ b/components/poll/poll.tsx @@ -3,6 +3,8 @@ import debounce from "lodash/debounce"; import { useTranslation } from "next-i18next"; import * as React from "react"; import { useMeasure } from "react-use"; +import smoothscroll from "smoothscroll-polyfill"; + import { decodeDateOption } from "../../utils/date-time-utils"; import Button from "../button"; import DateCard from "../date-card"; @@ -11,6 +13,7 @@ import ArrowRight from "../icons/arrow-right.svg"; import PlusCircle from "../icons/plus-circle.svg"; import TimeZonePicker from "../time-zone-picker"; import { TransitionPopInOut } from "../transitions"; +import { usePoll } from "../use-poll"; import { useAddParticipantMutation } from "./mutations"; import ParticipantRow from "./participant-row"; import ParticipantRowForm from "./participant-row-form"; @@ -18,8 +21,6 @@ import { PollContext, usePollContext } from "./poll-context"; import Score from "./score"; import TimeRange from "./time-range"; import { PollProps } from "./types"; -import smoothscroll from "smoothscroll-polyfill"; -import { usePoll } from "../use-poll"; if (typeof window !== "undefined") { smoothscroll.polyfill(); diff --git a/components/poll/truncated-linkify.tsx b/components/poll/truncated-linkify.tsx index 083864357..85056b5a5 100644 --- a/components/poll/truncated-linkify.tsx +++ b/components/poll/truncated-linkify.tsx @@ -1,5 +1,6 @@ import * as React from "react"; import ReactLinkify from "react-linkify"; + import Tooltip from "../tooltip"; export const truncateLink = (href: string, text: string, key: number) => { diff --git a/components/popover.tsx b/components/popover.tsx index 0c76178d8..223d6c28f 100644 --- a/components/popover.tsx +++ b/components/popover.tsx @@ -1,9 +1,9 @@ -import React from "react"; -import { usePopper } from "react-popper"; import { Popover as HeadlessPopover } from "@headlessui/react"; -import clsx from "clsx"; -import ReactDOM from "react-dom"; import { Placement } from "@popperjs/core"; +import clsx from "clsx"; +import React from "react"; +import ReactDOM from "react-dom"; +import { usePopper } from "react-popper"; interface PopoverProps { trigger: React.ReactNode; diff --git a/components/sharing.tsx b/components/sharing.tsx index a0f4c3680..c101c046e 100644 --- a/components/sharing.tsx +++ b/components/sharing.tsx @@ -5,6 +5,7 @@ import { usePlausible } from "next-plausible"; import * as React from "react"; import toast from "react-hot-toast"; import { useCopyToClipboard } from "react-use"; + import Button from "./button"; export interface SharingProps { diff --git a/components/standard-layout.tsx b/components/standard-layout.tsx index 80244a86e..f56f1834c 100644 --- a/components/standard-layout.tsx +++ b/components/standard-layout.tsx @@ -1,5 +1,6 @@ import Link from "next/link"; import React from "react"; + import Logo from "../public/logo.svg"; import Newspaper from "./icons/newspaper.svg"; import Pencil from "./icons/pencil.svg"; diff --git a/components/support.tsx b/components/support.tsx index daa6951cd..4344622a9 100644 --- a/components/support.tsx +++ b/components/support.tsx @@ -1,10 +1,12 @@ -import * as React from "react"; -import PageLayout from "./page-layout"; import { Disclosure } from "@headlessui/react"; -import Chat from "@/components/icons/chat.svg"; -import Button from "@/components/button"; -import { showCrispChat } from "./crisp-chat"; import { Trans, useTranslation } from "next-i18next"; +import * as React from "react"; + +import Button from "@/components/button"; +import Chat from "@/components/icons/chat.svg"; + +import { showCrispChat } from "./crisp-chat"; +import PageLayout from "./page-layout"; const Support: React.VoidFunctionComponent = () => { const { t } = useTranslation("support"); diff --git a/components/time-zone-picker/time-zone-picker.tsx b/components/time-zone-picker/time-zone-picker.tsx index a325a7caf..3272d4efc 100644 --- a/components/time-zone-picker/time-zone-picker.tsx +++ b/components/time-zone-picker/time-zone-picker.tsx @@ -7,6 +7,7 @@ import soft from "timezone-soft"; import ChevronDown from "../../components/icons/chevron-down.svg"; import { styleMenuItem } from "../menu-styles"; import timeZones from "./time-zones.json"; + interface TimeZoneOption { value: string; label: string; diff --git a/pages/404.tsx b/pages/404.tsx index 8369c769e..c843e2da2 100644 --- a/pages/404.tsx +++ b/pages/404.tsx @@ -1,6 +1,7 @@ +import React from "react"; + import ErrorPage from "@/components/error-page"; import DocumentSearch from "@/components/icons/document-search.svg"; -import React from "react"; const Custom404: React.VoidFunctionComponent = () => { return ( diff --git a/pages/_app.tsx b/pages/_app.tsx index 0b4acdf73..1d6b25154 100644 --- a/pages/_app.tsx +++ b/pages/_app.tsx @@ -1,17 +1,20 @@ -import ModalProvider from "@/components/modal/modal-provider"; +import "react-big-calendar/lib/css/react-big-calendar.css"; +import "tailwindcss/tailwind.css"; +import "../style.css"; + import { NextPage } from "next"; -import { appWithTranslation } from "next-i18next"; -import PlausibleProvider from "next-plausible"; import { AppProps } from "next/app"; import dynamic from "next/dynamic"; import Head from "next/head"; -import "react-big-calendar/lib/css/react-big-calendar.css"; +import { appWithTranslation } from "next-i18next"; +import PlausibleProvider from "next-plausible"; import toast, { Toaster } from "react-hot-toast"; import { MutationCache, QueryClient, QueryClientProvider } from "react-query"; import { useSessionStorage } from "react-use"; -import "tailwindcss/tailwind.css"; + +import ModalProvider from "@/components/modal/modal-provider"; + import { UserNameContext } from "../components/user-name-context"; -import "../style.css"; const CrispChat = dynamic(() => import("@/components/crisp-chat"), { ssr: false, diff --git a/pages/_error.tsx b/pages/_error.tsx index 8d86aa186..a65705815 100644 --- a/pages/_error.tsx +++ b/pages/_error.tsx @@ -1,7 +1,6 @@ -import NextErrorComponent, { ErrorProps as NextErrorProps } from "next/error"; -import { NextPage, NextPageContext } from "next"; - import * as Sentry from "@sentry/nextjs"; +import { NextPage, NextPageContext } from "next"; +import NextErrorComponent, { ErrorProps as NextErrorProps } from "next/error"; interface ErrorProps extends NextErrorProps { hasGetInitialPropsRun?: boolean; diff --git a/pages/_middleware.ts b/pages/_middleware.ts index 3c859adb3..2c5f24bc2 100644 --- a/pages/_middleware.ts +++ b/pages/_middleware.ts @@ -1,4 +1,5 @@ import { NextMiddleware, NextResponse } from "next/server"; + import { isInMaintenanceMode } from "../utils/constants"; export const middleware: NextMiddleware = async (req) => { diff --git a/pages/api/legacy/[urlId].ts b/pages/api/legacy/[urlId].ts index 92353e3a1..5399a47f6 100644 --- a/pages/api/legacy/[urlId].ts +++ b/pages/api/legacy/[urlId].ts @@ -4,6 +4,7 @@ import { exclude, getQueryParam } from "utils/api-utils"; import { LegacyPoll } from "utils/legacy-utils"; import { getMongoClient } from "utils/mongodb-client"; import { nanoid } from "utils/nanoid"; + import { prisma } from "../../../db"; export default async function handler( diff --git a/pages/api/poll/[urlId]/comments/index.ts b/pages/api/poll/[urlId]/comments/index.ts index d9bb94772..d6fcf0887 100644 --- a/pages/api/poll/[urlId]/comments/index.ts +++ b/pages/api/poll/[urlId]/comments/index.ts @@ -1,4 +1,5 @@ import absoluteUrl from "utils/absolute-url"; + import { prisma } from "../../../../../db"; import { getAdminLink, diff --git a/pages/api/poll/[urlId]/index.ts b/pages/api/poll/[urlId]/index.ts index cfc24b459..a72a28d84 100644 --- a/pages/api/poll/[urlId]/index.ts +++ b/pages/api/poll/[urlId]/index.ts @@ -1,6 +1,7 @@ import { GetPollApiResponse } from "api-client/get-poll"; import { NextApiResponse } from "next"; import { resetDates } from "utils/legacy-utils"; + import { UpdatePollPayload } from "../../../../api-client/update-poll"; import { prisma } from "../../../../db"; import { exclude, withLink } from "../../../../utils/api-utils"; diff --git a/pages/api/poll/[urlId]/participant/[participantId].ts b/pages/api/poll/[urlId]/participant/[participantId].ts index 334cc7a83..eed0e7b89 100644 --- a/pages/api/poll/[urlId]/participant/[participantId].ts +++ b/pages/api/poll/[urlId]/participant/[participantId].ts @@ -1,5 +1,5 @@ import { prisma } from "../../../../../db"; -import { withLink, getQueryParam } from "../../../../../utils/api-utils"; +import { getQueryParam,withLink } from "../../../../../utils/api-utils"; export default withLink(async (req, res, link) => { const participantId = getQueryParam(req, "participantId"); diff --git a/pages/api/poll/[urlId]/participant/index.ts b/pages/api/poll/[urlId]/participant/index.ts index e0ec4e054..d1d7ca4ac 100644 --- a/pages/api/poll/[urlId]/participant/index.ts +++ b/pages/api/poll/[urlId]/participant/index.ts @@ -1,4 +1,5 @@ import absoluteUrl from "utils/absolute-url"; + import { AddParticipantPayload } from "../../../../../api-client/add-participant"; import { prisma } from "../../../../../db"; import { diff --git a/pages/api/poll/[urlId]/verify.ts b/pages/api/poll/[urlId]/verify.ts index 1c8483915..8f1fa7c03 100644 --- a/pages/api/poll/[urlId]/verify.ts +++ b/pages/api/poll/[urlId]/verify.ts @@ -1,4 +1,5 @@ import absoluteUrl from "utils/absolute-url"; + import { prisma } from "../../../../db"; import { sendEmailTemplate, withLink } from "../../../../utils/api-utils"; diff --git a/pages/api/poll/demo.ts b/pages/api/poll/demo.ts index 3d57ef99d..8fbed276b 100644 --- a/pages/api/poll/demo.ts +++ b/pages/api/poll/demo.ts @@ -1,6 +1,7 @@ import { addMinutes } from "date-fns"; import { NextApiRequest, NextApiResponse } from "next"; import { nanoid } from "utils/nanoid"; + import { prisma } from "../../../db"; const participantData = [ diff --git a/pages/api/poll/index.ts b/pages/api/poll/index.ts index 13dc0355b..765c0b494 100644 --- a/pages/api/poll/index.ts +++ b/pages/api/poll/index.ts @@ -1,6 +1,7 @@ import { NextApiRequest, NextApiResponse } from "next"; import { sendEmailTemplate } from "utils/api-utils"; import { nanoid } from "utils/nanoid"; + import { CreatePollPayload } from "../../../api-client/create-poll"; import { prisma } from "../../../db"; import absoluteUrl from "../../../utils/absolute-url"; diff --git a/pages/demo.tsx b/pages/demo.tsx index 096895603..c8adf0844 100644 --- a/pages/demo.tsx +++ b/pages/demo.tsx @@ -1,10 +1,11 @@ import { GetStaticProps, NextPage } from "next"; +import { useRouter } from "next/router"; import { useTranslation } from "next-i18next"; import { serverSideTranslations } from "next-i18next/serverSideTranslations"; import { usePlausible } from "next-plausible"; -import { useRouter } from "next/router"; import React from "react"; import { useMount } from "react-use"; + import { createDemo } from "../api-client/create-demo"; import FullPageLoader from "../components/full-page-loader"; diff --git a/pages/home.tsx b/pages/home.tsx index 71e353510..aec200105 100644 --- a/pages/home.tsx +++ b/pages/home.tsx @@ -1,5 +1,6 @@ import { GetStaticProps } from "next"; import { serverSideTranslations } from "next-i18next/serverSideTranslations"; + export { default } from "@/components/home"; export const getStaticProps: GetStaticProps = async ({ locale = "en" }) => { diff --git a/pages/new.tsx b/pages/new.tsx index d6fc193de..3e6cce440 100644 --- a/pages/new.tsx +++ b/pages/new.tsx @@ -1,13 +1,14 @@ import { GetServerSideProps, NextPage } from "next"; -import { useTranslation } from "next-i18next"; -import { serverSideTranslations } from "next-i18next/serverSideTranslations"; -import { usePlausible } from "next-plausible"; import dynamic from "next/dynamic"; import Head from "next/head"; import { useRouter } from "next/router"; +import { useTranslation } from "next-i18next"; +import { serverSideTranslations } from "next-i18next/serverSideTranslations"; +import { usePlausible } from "next-plausible"; import React from "react"; import { useMutation } from "react-query"; import { useSessionStorage } from "react-use"; + import { createPoll } from "../api-client/create-poll"; import Button from "../components/button"; import { diff --git a/pages/poll.tsx b/pages/poll.tsx index 0ba7e0adc..cbc051c80 100644 --- a/pages/poll.tsx +++ b/pages/poll.tsx @@ -1,3 +1,16 @@ +import axios from "axios"; +import { GetServerSideProps, NextPage } from "next"; +import Head from "next/head"; +import { useRouter } from "next/router"; +import { useTranslation } from "next-i18next"; +import { serverSideTranslations } from "next-i18next/serverSideTranslations"; +import { usePlausible } from "next-plausible"; +import React from "react"; +import { toast } from "react-hot-toast"; +import { useMutation, useQuery, useQueryClient } from "react-query"; +import { useMount } from "react-use"; +import { preventWidows } from "utils/prevent-widows"; + import Button from "@/components/button"; import ErrorPage from "@/components/error-page"; import FullPageLoader from "@/components/full-page-loader"; @@ -16,18 +29,7 @@ import Sharing from "@/components/sharing"; import StandardLayout from "@/components/standard-layout"; import { PollContext, usePoll } from "@/components/use-poll"; import { useUserName } from "@/components/user-name-context"; -import axios from "axios"; -import { GetServerSideProps, NextPage } from "next"; -import { useTranslation } from "next-i18next"; -import { serverSideTranslations } from "next-i18next/serverSideTranslations"; -import { usePlausible } from "next-plausible"; -import Head from "next/head"; -import { useRouter } from "next/router"; -import React from "react"; -import { toast } from "react-hot-toast"; -import { useMutation, useQuery, useQueryClient } from "react-query"; -import { useMount } from "react-use"; -import { preventWidows } from "utils/prevent-widows"; + import { GetPollResponse } from "../api-client/get-poll"; import { getBrowserTimeZone } from "../utils/date-time-utils"; import Custom404 from "./404"; diff --git a/pages/privacy-policy.tsx b/pages/privacy-policy.tsx index a4f86ae10..9c7c6e0ee 100644 --- a/pages/privacy-policy.tsx +++ b/pages/privacy-policy.tsx @@ -1,7 +1,8 @@ -import PageLayout from "@/components/page-layout"; import { GetStaticProps } from "next"; import { serverSideTranslations } from "next-i18next/serverSideTranslations"; +import PageLayout from "@/components/page-layout"; + const PrivacyPolicy = () => { return ( diff --git a/pages/support.tsx b/pages/support.tsx index 7b3566f1d..c0d2d2199 100644 --- a/pages/support.tsx +++ b/pages/support.tsx @@ -1,5 +1,6 @@ import { GetStaticProps } from "next"; import { serverSideTranslations } from "next-i18next/serverSideTranslations"; + export { default } from "@/components/support"; export const getStaticProps: GetStaticProps = async ({ locale = "en" }) => { diff --git a/yarn.lock b/yarn.lock index 1946b6f90..5cdcc2a9b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3023,7 +3023,7 @@ eslint-plugin-react@^7.27.0: eslint-plugin-simple-import-sort@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-7.0.0.tgz" + resolved "https://registry.yarnpkg.com/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-7.0.0.tgz#a1dad262f46d2184a90095a60c66fef74727f0f8" integrity sha512-U3vEDB5zhYPNfxT5TYR7u01dboFZp+HNpnGhkDB2g/2E4wZ/g1Q9Ton8UwCLfRV9yAKyYqDh62oHOamvkFxsvw== eslint-scope@^5.0.0, eslint-scope@^5.1.1: