chore: better Prettier config for easier reviews

This commit is contained in:
2023-10-23 23:33:39 +02:00
parent a8781724d4
commit 71ea41695f
209 changed files with 4093 additions and 4114 deletions

View File

@ -1,9 +1,9 @@
import type { GetStaticProps, NextPage } from 'next'
import useTranslation from 'next-translate/useTranslation'
import type { GetStaticProps, NextPage } from "next"
import useTranslation from "next-translate/useTranslation"
import { ErrorPage } from '../components/ErrorPage'
import { Head } from '../components/Head'
import type { FooterProps } from '../components/Footer'
import { ErrorPage } from "../components/ErrorPage"
import { Head } from "../components/Head"
import type { FooterProps } from "../components/Footer"
const Error404: NextPage<FooterProps> = (props) => {
const { t } = useTranslation()
@ -11,10 +11,10 @@ const Error404: NextPage<FooterProps> = (props) => {
return (
<>
<Head title='Thream | 404' />
<Head title="Thream | 404" />
<ErrorPage
statusCode={404}
message={t('errors:page-not-found')}
message={t("errors:page-not-found")}
version={version}
/>
</>
@ -22,7 +22,7 @@ const Error404: NextPage<FooterProps> = (props) => {
}
export const getStaticProps: GetStaticProps<FooterProps> = async () => {
const { readPackage } = await import('read-pkg')
const { readPackage } = await import("read-pkg")
const { version } = await readPackage()
return { props: { version } }
}

View File

@ -1,10 +1,10 @@
import type { GetStaticProps, NextPage } from 'next'
import useTranslation from 'next-translate/useTranslation'
import type { GetStaticProps, NextPage } from "next"
import useTranslation from "next-translate/useTranslation"
import { ErrorPage } from '../components/ErrorPage'
import { Head } from '../components/Head'
import { Header } from '../components/Header'
import type { FooterProps } from '../components/Footer'
import { ErrorPage } from "../components/ErrorPage"
import { Head } from "../components/Head"
import { Header } from "../components/Header"
import type { FooterProps } from "../components/Footer"
const Error500: NextPage<FooterProps> = (props) => {
const { t } = useTranslation()
@ -12,12 +12,12 @@ const Error500: NextPage<FooterProps> = (props) => {
return (
<>
<Head title='Thream | 500' />
<Head title="Thream | 500" />
<Header />
<ErrorPage
statusCode={500}
message={t('errors:server-error')}
message={t("errors:server-error")}
version={version}
/>
</>
@ -25,7 +25,7 @@ const Error500: NextPage<FooterProps> = (props) => {
}
export const getStaticProps: GetStaticProps<FooterProps> = async () => {
const { readPackage } = await import('read-pkg')
const { readPackage } = await import("read-pkg")
const { version } = await readPackage()
return { props: { version } }
}

View File

@ -1,40 +1,40 @@
import { useEffect } from 'react'
import type { AppType } from 'next/app'
import { ThemeProvider } from 'next-themes'
import useTranslation from 'next-translate/useTranslation'
import { useEffect } from "react"
import type { AppType } from "next/app"
import { ThemeProvider } from "next-themes"
import useTranslation from "next-translate/useTranslation"
import '../styles/global.css'
import "../styles/global.css"
import '@fontsource/montserrat/400.css'
import '@fontsource/montserrat/500.css'
import '@fontsource/montserrat/600.css'
import '@fontsource/montserrat/700.css'
import "@fontsource/montserrat/400.css"
import "@fontsource/montserrat/500.css"
import "@fontsource/montserrat/600.css"
import "@fontsource/montserrat/700.css"
import '@fontsource/roboto/400.css'
import '@fontsource/roboto/700.css'
import "@fontsource/roboto/400.css"
import "@fontsource/roboto/700.css"
import { cookies } from '../tools/cookies'
import { cookies } from "../tools/cookies"
const Application: AppType = ({ Component, pageProps }) => {
const { lang } = useTranslation()
useEffect(() => {
cookies.set('NEXT_LOCALE', lang)
cookies.set("NEXT_LOCALE", lang)
const appHeight = (): void => {
document.documentElement.style.setProperty(
'--app-height',
`${window.innerHeight}px`
"--app-height",
`${window.innerHeight}px`,
)
}
window.addEventListener('resize', appHeight)
window.addEventListener("resize", appHeight)
appHeight()
return () => {
window.removeEventListener('resize', appHeight)
window.removeEventListener("resize", appHeight)
}
}, [lang])
return (
<ThemeProvider attribute='class' defaultTheme='dark'>
<ThemeProvider attribute="class" defaultTheme="dark">
<Component {...pageProps} />
</ThemeProvider>
)

View File

@ -1,22 +1,22 @@
import type { NextPage } from 'next'
import type { NextPage } from "next"
import { Head } from '../../../../components/Head'
import { Application } from '../../../../components/Application'
import { Messages } from '../../../../components/Application/Messages'
import { SendMessage } from '../../../../components/Application/SendMessage'
import type { PagePropsWithAuthentication } from '../../../../tools/authentication'
import { Head } from "../../../../components/Head"
import { Application } from "../../../../components/Application"
import { Messages } from "../../../../components/Application/Messages"
import { SendMessage } from "../../../../components/Application/SendMessage"
import type { PagePropsWithAuthentication } from "../../../../tools/authentication"
import {
authenticationFromServerSide,
AuthenticationProvider
} from '../../../../tools/authentication'
import type { GuildMember } from '../../../../contexts/GuildMember'
import { GuildMemberProvider } from '../../../../contexts/GuildMember'
import { GuildLeftSidebar } from '../../../../components/Application/GuildLeftSidebar'
import { ChannelsProvider } from '../../../../contexts/Channels'
import { GuildsProvider } from '../../../../contexts/Guilds'
import type { Channel } from '../../../../models/Channel'
import { MessagesProvider } from '../../../../contexts/Messages'
import { MembersProviders } from '../../../../contexts/Members'
AuthenticationProvider,
} from "../../../../tools/authentication"
import type { GuildMember } from "../../../../contexts/GuildMember"
import { GuildMemberProvider } from "../../../../contexts/GuildMember"
import { GuildLeftSidebar } from "../../../../components/Application/GuildLeftSidebar"
import { ChannelsProvider } from "../../../../contexts/Channels"
import { GuildsProvider } from "../../../../contexts/Guilds"
import type { Channel } from "../../../../models/Channel"
import { MessagesProvider } from "../../../../contexts/Messages"
import { MembersProviders } from "../../../../contexts/Members"
export interface ChannelPageProps extends PagePropsWithAuthentication {
channelId: number
@ -31,7 +31,7 @@ const ChannelPage: NextPage<ChannelPageProps> = (props) => {
const path = {
channelId,
guildId
guildId,
}
return (
@ -62,24 +62,24 @@ const ChannelPage: NextPage<ChannelPageProps> = (props) => {
export const getServerSideProps = authenticationFromServerSide({
shouldBeAuthenticated: true,
fetchData: async (context, api) => {
const channelId = Number(context?.params?.['channelId'])
const guildId = Number(context?.params?.['guildId'])
const channelId = Number(context?.params?.["channelId"])
const guildId = Number(context?.params?.["guildId"])
if (Number.isNaN(channelId) || Number.isNaN(guildId)) {
return {
notFound: true
notFound: true,
}
}
const { data: guildMember } = await api.get(`/guilds/${guildId}`)
const { data: selectedChannelData } = await api.get(
`/channels/${channelId}`
`/channels/${channelId}`,
)
return {
channelId,
guildId,
guildMember,
selectedChannel: selectedChannelData.channel
selectedChannel: selectedChannelData.channel,
}
}
},
})
export default ChannelPage

View File

@ -1,20 +1,20 @@
import type { NextPage } from 'next'
import type { NextPage } from "next"
import { Head } from '../../../../components/Head'
import { Application } from '../../../../components/Application'
import type { PagePropsWithAuthentication } from '../../../../tools/authentication'
import { Head } from "../../../../components/Head"
import { Application } from "../../../../components/Application"
import type { PagePropsWithAuthentication } from "../../../../tools/authentication"
import {
authenticationFromServerSide,
AuthenticationProvider
} from '../../../../tools/authentication'
import type { GuildMember } from '../../../../contexts/GuildMember'
import { GuildMemberProvider } from '../../../../contexts/GuildMember'
import { GuildLeftSidebar } from '../../../../components/Application/GuildLeftSidebar'
import { ChannelSettings } from '../../../../components/Application/ChannelSettings'
import { ChannelsProvider } from '../../../../contexts/Channels'
import { GuildsProvider } from '../../../../contexts/Guilds'
import type { Channel } from '../../../../models/Channel'
import { MembersProviders } from '../../../../contexts/Members'
AuthenticationProvider,
} from "../../../../tools/authentication"
import type { GuildMember } from "../../../../contexts/GuildMember"
import { GuildMemberProvider } from "../../../../contexts/GuildMember"
import { GuildLeftSidebar } from "../../../../components/Application/GuildLeftSidebar"
import { ChannelSettings } from "../../../../components/Application/ChannelSettings"
import { ChannelsProvider } from "../../../../contexts/Channels"
import { GuildsProvider } from "../../../../contexts/Guilds"
import type { Channel } from "../../../../models/Channel"
import { MembersProviders } from "../../../../contexts/Members"
export interface ChannelSettingsPageProps extends PagePropsWithAuthentication {
channelId: number
@ -29,7 +29,7 @@ const ChannelSettingsPage: NextPage<ChannelSettingsPageProps> = (props) => {
const path = {
channelId,
guildId
guildId,
}
return (
@ -57,31 +57,31 @@ const ChannelSettingsPage: NextPage<ChannelSettingsPageProps> = (props) => {
export const getServerSideProps = authenticationFromServerSide({
shouldBeAuthenticated: true,
fetchData: async (context, api) => {
const channelId = Number(context?.params?.['channelId'])
const guildId = Number(context?.params?.['guildId'])
const channelId = Number(context?.params?.["channelId"])
const guildId = Number(context?.params?.["guildId"])
if (Number.isNaN(channelId) || Number.isNaN(guildId)) {
return {
notFound: true
notFound: true,
}
}
const { data: guildMember } = await api.get<GuildMember>(
`/guilds/${guildId}`
`/guilds/${guildId}`,
)
if (!guildMember.member.isOwner) {
return {
notFound: true
notFound: true,
}
}
const { data: selectedChannelData } = await api.get(
`/channels/${channelId}`
`/channels/${channelId}`,
)
return {
channelId,
guildId,
guildMember,
selectedChannel: selectedChannelData.channel
selectedChannel: selectedChannelData.channel,
}
}
},
})
export default ChannelSettingsPage

View File

@ -1,17 +1,17 @@
import type { NextPage } from 'next'
import useTranslation from 'next-translate/useTranslation'
import type { NextPage } from "next"
import useTranslation from "next-translate/useTranslation"
import { Head } from '../../../../components/Head'
import { Application } from '../../../../components/Application'
import type { PagePropsWithAuthentication } from '../../../../tools/authentication'
import { Head } from "../../../../components/Head"
import { Application } from "../../../../components/Application"
import type { PagePropsWithAuthentication } from "../../../../tools/authentication"
import {
authenticationFromServerSide,
AuthenticationProvider
} from '../../../../tools/authentication'
import { CreateChannel } from '../../../../components/Application/CreateChannel'
import { GuildsProvider } from '../../../../contexts/Guilds'
import type { GuildMember } from '../../../../contexts/GuildMember'
import { GuildMemberProvider } from '../../../../contexts/GuildMember'
AuthenticationProvider,
} from "../../../../tools/authentication"
import { CreateChannel } from "../../../../components/Application/CreateChannel"
import { GuildsProvider } from "../../../../contexts/Guilds"
import type { GuildMember } from "../../../../contexts/GuildMember"
import { GuildMemberProvider } from "../../../../contexts/GuildMember"
export interface CreateChannelPageProps extends PagePropsWithAuthentication {
guildId: number
@ -29,10 +29,10 @@ const CreateChannelPage: NextPage<CreateChannelPageProps> = (props) => {
<GuildsProvider>
<GuildMemberProvider guildMember={guildMember} path={path}>
<Head
title={`Thream | ${t('application:create-a-channel')}`}
description={t('application:create-a-channel')}
title={`Thream | ${t("application:create-a-channel")}`}
description={t("application:create-a-channel")}
/>
<Application path={path} title={t('application:create-a-channel')}>
<Application path={path} title={t("application:create-a-channel")}>
<CreateChannel />
</Application>
</GuildMemberProvider>
@ -44,18 +44,18 @@ const CreateChannelPage: NextPage<CreateChannelPageProps> = (props) => {
export const getServerSideProps = authenticationFromServerSide({
shouldBeAuthenticated: true,
fetchData: async (context, api) => {
const guildId = Number(context?.params?.['guildId'])
const guildId = Number(context?.params?.["guildId"])
if (Number.isNaN(guildId)) {
return {
notFound: true
notFound: true,
}
}
const { data: guildMember } = await api.get(`/guilds/${guildId}`)
return {
guildId,
guildMember
guildMember,
}
}
},
})
export default CreateChannelPage

View File

@ -1,17 +1,17 @@
import type { NextPage } from 'next'
import useTranslation from 'next-translate/useTranslation'
import type { NextPage } from "next"
import useTranslation from "next-translate/useTranslation"
import { Head } from '../../../components/Head'
import { Application } from '../../../components/Application'
import type { PagePropsWithAuthentication } from '../../../tools/authentication'
import { Head } from "../../../components/Head"
import { Application } from "../../../components/Application"
import type { PagePropsWithAuthentication } from "../../../tools/authentication"
import {
authenticationFromServerSide,
AuthenticationProvider
} from '../../../tools/authentication'
import type { GuildMember } from '../../../contexts/GuildMember'
import { GuildMemberProvider } from '../../../contexts/GuildMember'
import { GuildsProvider } from '../../../contexts/Guilds'
import { GuildSettings } from '../../../components/Application/GuildSettings'
AuthenticationProvider,
} from "../../../tools/authentication"
import type { GuildMember } from "../../../contexts/GuildMember"
import { GuildMemberProvider } from "../../../contexts/GuildMember"
import { GuildsProvider } from "../../../contexts/Guilds"
import { GuildSettings } from "../../../components/Application/GuildSettings"
export interface GuildSettingsPageProps extends PagePropsWithAuthentication {
guildId: number
@ -28,8 +28,8 @@ const GuildSettingsPage: NextPage<GuildSettingsPageProps> = (props) => {
<AuthenticationProvider authentication={authentication}>
<GuildsProvider>
<GuildMemberProvider guildMember={guildMember} path={path}>
<Head title={`Thream | ${t('application:guild-settings')}`} />
<Application path={path} title={t('application:guild-settings')}>
<Head title={`Thream | ${t("application:guild-settings")}`} />
<Application path={path} title={t("application:guild-settings")}>
<GuildSettings />
</Application>
</GuildMemberProvider>
@ -41,20 +41,20 @@ const GuildSettingsPage: NextPage<GuildSettingsPageProps> = (props) => {
export const getServerSideProps = authenticationFromServerSide({
shouldBeAuthenticated: true,
fetchData: async (context, api) => {
const guildId = Number(context?.params?.['guildId'])
const guildId = Number(context?.params?.["guildId"])
if (Number.isNaN(guildId)) {
return {
notFound: true
notFound: true,
}
}
const { data: guildMember } = await api.get<GuildMember>(
`/guilds/${guildId}`
`/guilds/${guildId}`,
)
return {
guildId,
guildMember
guildMember,
}
}
},
})
export default GuildSettingsPage

View File

@ -1,15 +1,15 @@
import type { NextPage } from 'next'
import useTranslation from 'next-translate/useTranslation'
import type { NextPage } from "next"
import useTranslation from "next-translate/useTranslation"
import { Head } from '../../../components/Head'
import { Application } from '../../../components/Application'
import type { PagePropsWithAuthentication } from '../../../tools/authentication'
import { Head } from "../../../components/Head"
import { Application } from "../../../components/Application"
import type { PagePropsWithAuthentication } from "../../../tools/authentication"
import {
authenticationFromServerSide,
AuthenticationProvider
} from '../../../tools/authentication'
import { CreateGuild } from '../../../components/Application/CreateGuild'
import { GuildsProvider } from '../../../contexts/Guilds'
AuthenticationProvider,
} from "../../../tools/authentication"
import { CreateGuild } from "../../../components/Application/CreateGuild"
import { GuildsProvider } from "../../../contexts/Guilds"
const CreateGuildPage: NextPage<PagePropsWithAuthentication> = (props) => {
const { t } = useTranslation()
@ -18,12 +18,12 @@ const CreateGuildPage: NextPage<PagePropsWithAuthentication> = (props) => {
<AuthenticationProvider authentication={props.authentication}>
<GuildsProvider>
<Head
title={`Thream | ${t('application:create-a-guild')}`}
description={t('application:create-a-guild-description')}
title={`Thream | ${t("application:create-a-guild")}`}
description={t("application:create-a-guild-description")}
/>
<Application
path='/application/guilds/create'
title={t('application:create-a-guild')}
path="/application/guilds/create"
title={t("application:create-a-guild")}
>
<CreateGuild />
</Application>
@ -33,7 +33,7 @@ const CreateGuildPage: NextPage<PagePropsWithAuthentication> = (props) => {
}
export const getServerSideProps = authenticationFromServerSide({
shouldBeAuthenticated: true
shouldBeAuthenticated: true,
})
export default CreateGuildPage

View File

@ -1,15 +1,15 @@
import type { NextPage } from 'next'
import useTranslation from 'next-translate/useTranslation'
import type { NextPage } from "next"
import useTranslation from "next-translate/useTranslation"
import { Head } from '../../../components/Head'
import { Application } from '../../../components/Application'
import type { PagePropsWithAuthentication } from '../../../tools/authentication'
import { Head } from "../../../components/Head"
import { Application } from "../../../components/Application"
import type { PagePropsWithAuthentication } from "../../../tools/authentication"
import {
authenticationFromServerSide,
AuthenticationProvider
} from '../../../tools/authentication'
import { JoinGuildsPublic } from '../../../components/Application/JoinGuildsPublic'
import { GuildsProvider } from '../../../contexts/Guilds'
AuthenticationProvider,
} from "../../../tools/authentication"
import { JoinGuildsPublic } from "../../../components/Application/JoinGuildsPublic"
import { GuildsProvider } from "../../../contexts/Guilds"
const JoinGuildPage: NextPage<PagePropsWithAuthentication> = (props) => {
const { t } = useTranslation()
@ -18,12 +18,12 @@ const JoinGuildPage: NextPage<PagePropsWithAuthentication> = (props) => {
<AuthenticationProvider authentication={props.authentication}>
<GuildsProvider>
<Head
title={`Thream | ${t('application:join-a-guild')}`}
description={t('application:join-a-guild-description')}
title={`Thream | ${t("application:join-a-guild")}`}
description={t("application:join-a-guild-description")}
/>
<Application
path='/application/guilds/join'
title={t('application:join-a-guild')}
path="/application/guilds/join"
title={t("application:join-a-guild")}
>
<JoinGuildsPublic />
</Application>
@ -33,7 +33,7 @@ const JoinGuildPage: NextPage<PagePropsWithAuthentication> = (props) => {
}
export const getServerSideProps = authenticationFromServerSide({
shouldBeAuthenticated: true
shouldBeAuthenticated: true,
})
export default JoinGuildPage

View File

@ -1,21 +1,21 @@
import type { NextPage } from 'next'
import type { NextPage } from "next"
import { Head } from '../../components/Head'
import { Application } from '../../components/Application'
import { PopupGuild } from '../../components/Application/PopupGuild'
import type { PagePropsWithAuthentication } from '../../tools/authentication'
import { Head } from "../../components/Head"
import { Application } from "../../components/Application"
import { PopupGuild } from "../../components/Application/PopupGuild"
import type { PagePropsWithAuthentication } from "../../tools/authentication"
import {
authenticationFromServerSide,
AuthenticationProvider
} from '../../tools/authentication'
import { GuildsProvider } from '../../contexts/Guilds'
AuthenticationProvider,
} from "../../tools/authentication"
import { GuildsProvider } from "../../contexts/Guilds"
const ApplicationPage: NextPage<PagePropsWithAuthentication> = (props) => {
return (
<AuthenticationProvider authentication={props.authentication}>
<GuildsProvider>
<Head title='Thream | Application' />
<Application path='/application' title='Application'>
<Head title="Thream | Application" />
<Application path="/application" title="Application">
<PopupGuild />
</Application>
</GuildsProvider>
@ -24,7 +24,7 @@ const ApplicationPage: NextPage<PagePropsWithAuthentication> = (props) => {
}
export const getServerSideProps = authenticationFromServerSide({
shouldBeAuthenticated: true
shouldBeAuthenticated: true,
})
export default ApplicationPage

View File

@ -1,16 +1,16 @@
import type { NextPage } from 'next'
import type { NextPage } from "next"
import { Head } from '../../../../components/Head'
import { Application } from '../../../../components/Application'
import type { PagePropsWithAuthentication } from '../../../../tools/authentication'
import { Head } from "../../../../components/Head"
import { Application } from "../../../../components/Application"
import type { PagePropsWithAuthentication } from "../../../../tools/authentication"
import {
authenticationFromServerSide,
AuthenticationProvider
} from '../../../../tools/authentication'
import { UserProfile } from '../../../../components/Application/UserProfile'
import { GuildsProvider } from '../../../../contexts/Guilds'
import type { UserPublic } from '../../../../models/User'
import type { Guild } from '../../../../models/Guild'
AuthenticationProvider,
} from "../../../../tools/authentication"
import { UserProfile } from "../../../../components/Application/UserProfile"
import { GuildsProvider } from "../../../../contexts/Guilds"
import type { UserPublic } from "../../../../models/User"
import type { Guild } from "../../../../models/Guild"
export interface UserProfilePageProps extends PagePropsWithAuthentication {
user: UserPublic
@ -35,18 +35,18 @@ const UserProfilePage: NextPage<UserProfilePageProps> = (props) => {
export const getServerSideProps = authenticationFromServerSide({
shouldBeAuthenticated: true,
fetchData: async (context, api) => {
const userId = Number(context?.params?.['userId'])
const userId = Number(context?.params?.["userId"])
if (Number.isNaN(userId)) {
return {
notFound: true
notFound: true,
}
}
const { data } = await api.get(`/users/${userId}`)
return {
user: data.user,
guilds: data.guilds
guilds: data.guilds,
}
}
},
})
export default UserProfilePage

View File

@ -1,15 +1,15 @@
import type { NextPage } from 'next'
import useTranslation from 'next-translate/useTranslation'
import type { NextPage } from "next"
import useTranslation from "next-translate/useTranslation"
import { Head } from '../../../components/Head'
import { Application } from '../../../components/Application'
import type { PagePropsWithAuthentication } from '../../../tools/authentication'
import { Head } from "../../../components/Head"
import { Application } from "../../../components/Application"
import type { PagePropsWithAuthentication } from "../../../tools/authentication"
import {
authenticationFromServerSide,
AuthenticationProvider
} from '../../../tools/authentication'
import { UserSettings } from '../../../components/Application/UserSettings'
import { GuildsProvider } from '../../../contexts/Guilds'
AuthenticationProvider,
} from "../../../tools/authentication"
import { UserSettings } from "../../../components/Application/UserSettings"
import { GuildsProvider } from "../../../contexts/Guilds"
const UserSettingsPage: NextPage<PagePropsWithAuthentication> = (props) => {
const { t } = useTranslation()
@ -17,10 +17,10 @@ const UserSettingsPage: NextPage<PagePropsWithAuthentication> = (props) => {
return (
<AuthenticationProvider authentication={props.authentication}>
<GuildsProvider>
<Head title={`Thream | ${t('application:user-settings')}`} />
<Head title={`Thream | ${t("application:user-settings")}`} />
<Application
path='/application/users/settings'
title={t('application:user-settings')}
path="/application/users/settings"
title={t("application:user-settings")}
>
<UserSettings />
</Application>
@ -30,7 +30,7 @@ const UserSettingsPage: NextPage<PagePropsWithAuthentication> = (props) => {
}
export const getServerSideProps = authenticationFromServerSide({
shouldBeAuthenticated: true
shouldBeAuthenticated: true,
})
export default UserSettingsPage

View File

@ -1,26 +1,26 @@
import type { NextPage } from 'next'
import Link from 'next/link'
import useTranslation from 'next-translate/useTranslation'
import axios from 'axios'
import { useForm } from 'react-component-form'
import type { HandleUseFormCallback } from 'react-component-form'
import type { NextPage } from "next"
import Link from "next/link"
import useTranslation from "next-translate/useTranslation"
import axios from "axios"
import { useForm } from "react-component-form"
import type { HandleUseFormCallback } from "react-component-form"
import { AuthenticationForm } from '../../components/Authentication'
import { Head } from '../../components/Head'
import { Header } from '../../components/Header'
import { Main } from '../../components/design/Main'
import type { FooterProps } from '../../components/Footer'
import { Footer } from '../../components/Footer'
import { Input } from '../../components/design/Input'
import { Button } from '../../components/design/Button'
import { FormState } from '../../components/design/FormState'
import { authenticationFromServerSide } from '../../tools/authentication'
import { userSchema } from '../../models/User'
import { api } from '../../tools/api'
import { useFormTranslation } from '../../hooks/useFormTranslation'
import { AuthenticationForm } from "../../components/Authentication"
import { Head } from "../../components/Head"
import { Header } from "../../components/Header"
import { Main } from "../../components/design/Main"
import type { FooterProps } from "../../components/Footer"
import { Footer } from "../../components/Footer"
import { Input } from "../../components/design/Input"
import { Button } from "../../components/design/Button"
import { FormState } from "../../components/design/FormState"
import { authenticationFromServerSide } from "../../tools/authentication"
import { userSchema } from "../../models/User"
import { api } from "../../tools/api"
import { useFormTranslation } from "../../hooks/useFormTranslation"
const schema = {
email: userSchema.email
email: userSchema.email,
}
const ForgotPassword: NextPage<FooterProps> = (props) => {
@ -32,50 +32,50 @@ const ForgotPassword: NextPage<FooterProps> = (props) => {
const onSubmit: HandleUseFormCallback<typeof schema> = async (
formData,
formElement
formElement,
) => {
try {
await api.post(
`/users/reset-password?redirectURI=${window.location.origin}/authentication/reset-password`,
formData
formData,
)
formElement.reset()
return {
type: 'success',
message: 'authentication:success-forgot-password'
type: "success",
message: "authentication:success-forgot-password",
}
} catch (error) {
if (axios.isAxiosError(error) && error.response?.status === 400) {
return {
type: 'error',
message: 'errors:invalid-email'
type: "error",
message: "errors:invalid-email",
}
}
return {
type: 'error',
message: 'errors:server-error'
type: "error",
message: "errors:server-error",
}
}
}
return (
<>
<Head title={`Thream | ${t('authentication:forgot-password')}`} />
<Head title={`Thream | ${t("authentication:forgot-password")}`} />
<Header />
<Main>
<AuthenticationForm onSubmit={handleUseForm(onSubmit)}>
<Input type='email' placeholder='Email' name='email' label='Email' />
<Button data-cy='submit' className='mt-6 w-full' type='submit'>
{t('authentication:submit')}
<Input type="email" placeholder="Email" name="email" label="Email" />
<Button data-cy="submit" className="mt-6 w-full" type="submit">
{t("authentication:submit")}
</Button>
<p className='mt-3 font-headline text-sm text-green-800 hover:underline dark:text-green-400'>
<Link href='/authentication/signin'>
{t('authentication:already-know-password')}
<p className="mt-3 font-headline text-sm text-green-800 hover:underline dark:text-green-400">
<Link href="/authentication/signin">
{t("authentication:already-know-password")}
</Link>
</p>
</AuthenticationForm>
<FormState
id='message'
id="message"
state={fetchState}
message={
message != null
@ -92,10 +92,10 @@ const ForgotPassword: NextPage<FooterProps> = (props) => {
export const getServerSideProps = authenticationFromServerSide({
shouldBeAuthenticated: false,
fetchData: async () => {
const { readPackage } = await import('read-pkg')
const { readPackage } = await import("read-pkg")
const { version } = await readPackage()
return { version }
}
},
})
export default ForgotPassword

View File

@ -1,26 +1,26 @@
import type { NextPage } from 'next'
import { useRouter } from 'next/router'
import useTranslation from 'next-translate/useTranslation'
import axios from 'axios'
import { useForm } from 'react-component-form'
import type { HandleUseFormCallback } from 'react-component-form'
import type { NextPage } from "next"
import { useRouter } from "next/router"
import useTranslation from "next-translate/useTranslation"
import axios from "axios"
import { useForm } from "react-component-form"
import type { HandleUseFormCallback } from "react-component-form"
import { Head } from '../../components/Head'
import { Header } from '../../components/Header'
import { FormState } from '../../components/design/FormState'
import { Main } from '../../components/design/Main'
import type { FooterProps } from '../../components/Footer'
import { Footer } from '../../components/Footer'
import { Input } from '../../components/design/Input'
import { Button } from '../../components/design/Button'
import { authenticationFromServerSide } from '../../tools/authentication'
import { AuthenticationForm } from '../../components/Authentication'
import { api } from '../../tools/api'
import { userSchema } from '../../models/User'
import { useFormTranslation } from '../../hooks/useFormTranslation'
import { Head } from "../../components/Head"
import { Header } from "../../components/Header"
import { FormState } from "../../components/design/FormState"
import { Main } from "../../components/design/Main"
import type { FooterProps } from "../../components/Footer"
import { Footer } from "../../components/Footer"
import { Input } from "../../components/design/Input"
import { Button } from "../../components/design/Button"
import { authenticationFromServerSide } from "../../tools/authentication"
import { AuthenticationForm } from "../../components/Authentication"
import { api } from "../../tools/api"
import { userSchema } from "../../models/User"
import { useFormTranslation } from "../../hooks/useFormTranslation"
const schema = {
password: userSchema.password
password: userSchema.password,
}
const ResetPassword: NextPage<FooterProps> = (props) => {
@ -35,42 +35,42 @@ const ResetPassword: NextPage<FooterProps> = (props) => {
try {
await api.put(`/users/reset-password`, {
...formData,
temporaryToken: router.query['temporaryToken']
temporaryToken: router.query["temporaryToken"],
})
await router.push('/authentication/signin')
await router.push("/authentication/signin")
return null
} catch (error) {
if (axios.isAxiosError(error) && error.response?.status === 400) {
return {
type: 'error',
message: 'errors:invalid'
type: "error",
message: "errors:invalid",
}
}
return {
type: 'error',
message: 'errors:server-error'
type: "error",
message: "errors:server-error",
}
}
}
return (
<>
<Head title={`Thream | ${t('authentication:reset-password')}`} />
<Head title={`Thream | ${t("authentication:reset-password")}`} />
<Header />
<Main>
<AuthenticationForm onSubmit={handleUseForm(onSubmit)}>
<Input
type='password'
placeholder='Password'
name='password'
label='Password'
type="password"
placeholder="Password"
name="password"
label="Password"
/>
<Button data-cy='submit' className='mt-6 w-full' type='submit'>
{t('authentication:submit')}
<Button data-cy="submit" className="mt-6 w-full" type="submit">
{t("authentication:submit")}
</Button>
</AuthenticationForm>
<FormState
id='message'
id="message"
state={fetchState}
message={
message != null
@ -87,10 +87,10 @@ const ResetPassword: NextPage<FooterProps> = (props) => {
export const getServerSideProps = authenticationFromServerSide({
shouldBeAuthenticated: false,
fetchData: async () => {
const { readPackage } = await import('read-pkg')
const { readPackage } = await import("read-pkg")
const { version } = await readPackage()
return { version }
}
},
})
export default ResetPassword

View File

@ -1,12 +1,12 @@
import type { NextPage } from 'next'
import useTranslation from 'next-translate/useTranslation'
import type { NextPage } from "next"
import useTranslation from "next-translate/useTranslation"
import { Head } from '../../components/Head'
import { Authentication } from '../../components/Authentication'
import { Header } from '../../components/Header'
import type { FooterProps } from '../../components/Footer'
import { Footer } from '../../components/Footer'
import { authenticationFromServerSide } from '../../tools/authentication'
import { Head } from "../../components/Head"
import { Authentication } from "../../components/Authentication"
import { Header } from "../../components/Header"
import type { FooterProps } from "../../components/Footer"
import { Footer } from "../../components/Footer"
import { authenticationFromServerSide } from "../../tools/authentication"
const Signin: NextPage<FooterProps> = (props) => {
const { version } = props
@ -14,9 +14,9 @@ const Signin: NextPage<FooterProps> = (props) => {
return (
<>
<Head title={`Thream | ${t('authentication:signin')}`} />
<Head title={`Thream | ${t("authentication:signin")}`} />
<Header />
<Authentication mode='signin' />
<Authentication mode="signin" />
<Footer version={version} />
</>
)
@ -25,10 +25,10 @@ const Signin: NextPage<FooterProps> = (props) => {
export const getServerSideProps = authenticationFromServerSide({
shouldBeAuthenticated: false,
fetchData: async () => {
const { readPackage } = await import('read-pkg')
const { readPackage } = await import("read-pkg")
const { version } = await readPackage()
return { version }
}
},
})
export default Signin

View File

@ -1,12 +1,12 @@
import type { NextPage } from 'next'
import useTranslation from 'next-translate/useTranslation'
import type { NextPage } from "next"
import useTranslation from "next-translate/useTranslation"
import { Head } from '../../components/Head'
import { Authentication } from '../../components/Authentication'
import { Header } from '../../components/Header'
import type { FooterProps } from '../../components/Footer'
import { Footer } from '../../components/Footer'
import { authenticationFromServerSide } from '../../tools/authentication'
import { Head } from "../../components/Head"
import { Authentication } from "../../components/Authentication"
import { Header } from "../../components/Header"
import type { FooterProps } from "../../components/Footer"
import { Footer } from "../../components/Footer"
import { authenticationFromServerSide } from "../../tools/authentication"
const Signup: NextPage<FooterProps> = (props) => {
const { version } = props
@ -14,9 +14,9 @@ const Signup: NextPage<FooterProps> = (props) => {
return (
<>
<Head title={`Thream | ${t('authentication:signup')}`} />
<Head title={`Thream | ${t("authentication:signup")}`} />
<Header />
<Authentication mode='signup' />
<Authentication mode="signup" />
<Footer version={version} />
</>
)
@ -25,10 +25,10 @@ const Signup: NextPage<FooterProps> = (props) => {
export const getServerSideProps = authenticationFromServerSide({
shouldBeAuthenticated: false,
fetchData: async () => {
const { readPackage } = await import('read-pkg')
const { readPackage } = await import("read-pkg")
const { version } = await readPackage()
return { version }
}
},
})
export default Signup

View File

@ -1,16 +1,16 @@
import type { GetStaticProps, NextPage } from 'next'
import Link from 'next/link'
import Image from 'next/image'
import Translation from 'next-translate/Trans'
import useTranslation from 'next-translate/useTranslation'
import type { GetStaticProps, NextPage } from "next"
import Link from "next/link"
import Image from "next/image"
import Translation from "next-translate/Trans"
import useTranslation from "next-translate/useTranslation"
import { Head } from '../components/Head'
import { Header } from '../components/Header'
import { Main } from '../components/design/Main'
import type { FooterProps } from '../components/Footer'
import { Footer } from '../components/Footer'
import { SocialMediaLink } from '../components/design/SocialMediaButton'
import { ButtonLink } from '../components/design/Button'
import { Head } from "../components/Head"
import { Header } from "../components/Header"
import { Main } from "../components/design/Main"
import type { FooterProps } from "../components/Footer"
import { Footer } from "../components/Footer"
import { SocialMediaLink } from "../components/design/SocialMediaButton"
import { ButtonLink } from "../components/design/Button"
const Home: NextPage<FooterProps> = (props) => {
const { t } = useTranslation()
@ -21,49 +21,49 @@ const Home: NextPage<FooterProps> = (props) => {
<Head />
<Header />
<Main>
<div className='flex w-4/5 flex-col items-center'>
<div className='max-w-xs'>
<Link href='/authentication/signup'>
<div className="flex w-4/5 flex-col items-center">
<div className="max-w-xs">
<Link href="/authentication/signup">
<Image
quality={100}
width={351}
height={341}
src='/images/svg/design/home.svg'
src="/images/svg/design/home.svg"
alt={"Thream's chat app"}
priority
/>
</Link>
</div>
<div className='text-center'>
<h1 className='my-4 font-headline text-3xl font-medium text-green-800 dark:text-green-400'>
<div className="text-center">
<h1 className="my-4 font-headline text-3xl font-medium text-green-800 dark:text-green-400">
Thream
</h1>
<div
className='max-w-lg font-paragraph text-lg'
data-cy='main-description'
className="max-w-lg font-paragraph text-lg"
data-cy="main-description"
>
<Translation
i18nKey='home:description'
i18nKey="home:description"
components={[
<strong
className='font-bold text-green-800 dark:text-green-400'
key='bold'
/>
className="font-bold text-green-800 dark:text-green-400"
key="bold"
/>,
]}
/>
</div>
<div className='mt-8 flex items-center justify-center space-x-4 text-center'>
<Link href='/authentication/signup' passHref legacyBehavior>
<ButtonLink data-cy='get-started'>
{t('home:get-started')}
<div className="mt-8 flex items-center justify-center space-x-4 text-center">
<Link href="/authentication/signup" passHref legacyBehavior>
<ButtonLink data-cy="get-started">
{t("home:get-started")}
</ButtonLink>
</Link>
<SocialMediaLink
socialMedia='GitHub'
href='https://github.com/Thream'
target='_blank'
rel='noopener noreferrer'
socialMedia="GitHub"
href="https://github.com/Thream"
target="_blank"
rel="noopener noreferrer"
/>
</div>
</div>
@ -75,7 +75,7 @@ const Home: NextPage<FooterProps> = (props) => {
}
export const getStaticProps: GetStaticProps<FooterProps> = async () => {
const { readPackage } = await import('read-pkg')
const { readPackage } = await import("read-pkg")
const { version } = await readPackage()
return { props: { version } }
}