From aa6f0e854b7edb8f11da6ab0b945e90965c1f5d7 Mon Sep 17 00:00:00 2001 From: "Embruch, Gerd" <gerd.embruch@uni-hamburg.de> Date: Wed, 7 Aug 2024 18:27:25 +0200 Subject: [PATCH] organized imports --- src/App.jsx | 4 +- src/components/boxes/ConfirmBox.jsx | 6 +- src/components/chat/Message.jsx | 1 - src/components/chat/PromptInput.jsx | 6 +- src/components/form/FlatListEdit copy.jsx | 153 --------------------- src/components/form/Select.jsx | 6 +- src/contexts/Chat/ChatState.jsx | 6 +- src/main.jsx | 2 +- src/pages/Config/AI/NewModel.jsx | 16 +-- src/pages/Config/Config.jsx | 2 +- src/pages/Config/Embeddings.jsx | 6 +- src/pages/Config/Embeddings/Delete.jsx | 7 +- src/pages/Config/Embeddings/Update.jsx | 11 +- src/pages/Onboarding/Onboarding.jsx | 2 +- src/pages/User/ChangeMail.jsx | 87 ------------ src/pages/User/ForgotPassword.jsx | 6 +- src/pages/User/Login.jsx | 14 +- src/pages/User/RequestChangeMail.jsx | 73 ---------- src/pages/User/ResendVerificationToken.jsx | 6 +- src/pages/User/ResetPassword.jsx | 8 +- src/pages/User/Signup.jsx | 17 ++- src/pages/User/Verify.jsx | 9 +- src/routes/Sitemap.jsx | 4 +- 23 files changed, 66 insertions(+), 386 deletions(-) delete mode 100644 src/components/form/FlatListEdit copy.jsx delete mode 100644 src/pages/User/ChangeMail.jsx delete mode 100644 src/pages/User/RequestChangeMail.jsx diff --git a/src/App.jsx b/src/App.jsx index 3fce18b..1131e9f 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,7 +1,7 @@ -import { createBrowserRouter, RouterProvider } from 'react-router-dom'; -import { sitemap } from "./routes/Sitemap"; import { HelmetProvider } from 'react-helmet-async'; +import { createBrowserRouter, RouterProvider } from 'react-router-dom'; import AuthState from "./contexts/Auth/AuthState"; +import { sitemap } from "./routes/Sitemap"; function App() { diff --git a/src/components/boxes/ConfirmBox.jsx b/src/components/boxes/ConfirmBox.jsx index b64f3ed..33f9078 100644 --- a/src/components/boxes/ConfirmBox.jsx +++ b/src/components/boxes/ConfirmBox.jsx @@ -1,4 +1,5 @@ import React from 'react'; +import { Button } from '../ui/button'; import { Dialog, DialogClose, @@ -6,11 +7,8 @@ import { DialogDescription, DialogFooter, DialogHeader, - DialogTitle, - DialogTrigger, + DialogTitle } from "/src/components/ui/dialog"; -import { Button } from '../ui/button'; -import Heading from '../font/Heading'; function ConfirmBox({ confirmDialog, closeDialog, item, handleProceed, ...props }) { // ################################# diff --git a/src/components/chat/Message.jsx b/src/components/chat/Message.jsx index f948430..dfba636 100644 --- a/src/components/chat/Message.jsx +++ b/src/components/chat/Message.jsx @@ -1,5 +1,4 @@ import React from 'react'; -import Tooltip from '../boxes/Tooltip'; function Message({ chat }) { // ################################# diff --git a/src/components/chat/PromptInput.jsx b/src/components/chat/PromptInput.jsx index b9d941d..3e87b48 100644 --- a/src/components/chat/PromptInput.jsx +++ b/src/components/chat/PromptInput.jsx @@ -4,10 +4,10 @@ import { FormProvider, useForm } from 'react-hook-form'; import { RiLoopRightFill, RiSendPlane2Line } from 'react-icons/ri'; import { z } from 'zod'; -import Input from '../form/Input'; -import { mergeBackendValidation } from '../../utils/ErrorHandling'; -import api from '../../utils/AxiosConfig'; import { useChat } from '../../contexts/Chat/ChatState'; +import api from '../../utils/AxiosConfig'; +import { mergeBackendValidation } from '../../utils/ErrorHandling'; +import Input from '../form/Input'; import Select from '../form/Select'; function PromptInput() { diff --git a/src/components/form/FlatListEdit copy.jsx b/src/components/form/FlatListEdit copy.jsx deleted file mode 100644 index e3bbe15..0000000 --- a/src/components/form/FlatListEdit copy.jsx +++ /dev/null @@ -1,153 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import Textarea from './Textarea'; -import { Button } from '../ui/button'; -import ConfirmBox from '../boxes/ConfirmBox'; -import { useFieldArray } from 'react-hook-form'; -import { RiDeleteBin5Line } from 'react-icons/ri'; -import { - Table, - TableBody, - TableCaption, - TableCell, - TableRow, -} from "@/components/ui/table"; -import THead from '../../components/table/THead'; -import { useTable } from '@/contexts/Table/TableState'; - -function FlatListEdit({ methods, initialItems, fieldName, keyName, validator, tableCols, ...props }) { - // ################################# - // HOOKS - // ################################# - - // ### DEFINE TABLE - const { tableState, initTable, replaceItems, removeItem } = useTable(); - - useEffect(() => { - // initialize table state - initTable({ tableCols, baseData: initialItems }); - replace(initialItems); - }, [initialItems]); - - - // ### CONFIRM DIALOG - const [confirmDialog, setConfirmDialog] = useState({ open: false, item: {} }); - - // ### USE FIELD ARRAY TO STORE ITEMS - const { fields, remove, replace } = useFieldArray({ - control: methods.control, - name: fieldName, - }); - - - // ################################# - // FUNCTIONS - // ################################# - - // ### ADD ITEMS FROM TEXTAREA - const handleAddItems = (e) => { - // clear errors - methods.clearErrors('addItem'); - // fetch values from textarea and split new lines & csv into array - const addItems = methods.getValues('addItem').split(/[\n,]/); - // return on empty input - if (addItems.length === 1 && addItems[0] === '') return; - - // get valid entries - // trim spaces from each input - addItems.forEach((input, idx) => addItems[idx] = input.trim()); - // filter array for valid mail addresses using zod - const validInputs = addItems.filter((input, idx) => { - const isMail = validator(input); - return isMail.success ?? keyName; - }); - - // handle invalid inputs - // strip off valid entries from input to get remaining invalid inputs - const invalidInputs = addItems.filter(keyName => !validInputs.includes(keyName)); - // set input value to remaining invalid entries - methods.setValue('addItem', invalidInputs.join('\n')); - if (invalidInputs.length > 0) { - // set error message on input - methods.setError('addItem', { message: 'invalid entries remaining' }); - } - - // handle valid inputs - // get existing items from fieldarray - const extistingItems = methods.getValues(fieldName); - // flatten fieldarray to array of strings only to merge with new inputs - let flatArray = extistingItems.map(field => field[keyName]); - // add valid inputs to existing items avoiding douplettes - flatArray = ([... new Set([...flatArray, ...validInputs])]); - // sort & convert flat array back into object - const wholeItemsObject = flatArray.sort().map(input => ({ [keyName]: input })); - // replace whole table data (invisible) - replaceItems(wholeItemsObject); - // replace whole fieldarray, which will be submitted to backend - replace(wholeItemsObject); - // set focus back to input field, which is only used for display - methods.setFocus('addItem'); - }; - - - // ### REMOVE ITEM FROM ARRAY - const handleRemoveItem = (idx) => { - // delete from fieldarray, which will be submitted to backend - remove(idx); - // delete from tableData, which is only used for display - replaceItems(methods.getValues(fieldName)); - }; - - // ################################# - // OUTPUT - // ################################# - if (!tableState.tableData) return <div>loading...</div>; - - - return ( - <> - {JSON.stringify(tableState.orderBy)} - {/* add Owner */} - <Textarea name='addItem' title={fieldName} tooltip={props.tooltip}> - <Button type='button' variant="default" onClick={handleAddItems} className='px-4 h-16 self-center'>add</Button> - </Textarea> - {/* List */} - <Table> - <TableCaption>{tableState.tableData.length} of {tableState.baseData.length}</TableCaption> - <THead actionCol={true} /> - <TableBody> - {tableState.tableData && tableState.tableData.map((item, idx) => { - return <TableRow key={idx}> - <TableCell> - {item[keyName]} - </TableCell > - <TableCell> - <Button - type="button" - onClick={() => setConfirmDialog({ open: true, idToDelete: idx, displayName: item[keyName] })} - variant='destructive' - size='icon' - title='delete from list' - > - <RiDeleteBin5Line /> - </Button> - </TableCell> - </TableRow>; - })} - </TableBody> - </Table> - - {fields && fields.map((item, idx) => { - return <div key={idx}> - <input className='w-full h-full bg-transparent' type='hidden' key={item.id} {...methods.register(`${fieldName}.${idx}.${keyName}`)} disabled={true} /> - </div>; - })} - - - - {/* confirmDialog */} - <ConfirmBox confirmDialog={confirmDialog} closeDialog={() => setConfirmDialog({ ...confirmDialog, open: false })} handleProceed={() => { handleRemoveItem(confirmDialog.idToDelete); }} /> - </> - ); -} - -export default React.memo(FlatListEdit);; \ No newline at end of file diff --git a/src/components/form/Select.jsx b/src/components/form/Select.jsx index 3299f0c..164b7fb 100755 --- a/src/components/form/Select.jsx +++ b/src/components/form/Select.jsx @@ -1,9 +1,9 @@ import React, { useId } from 'react'; -import { Controller, useFormContext, useFormState } from 'react-hook-form'; +import { Controller, useFormContext } from 'react-hook-form'; import { twMerge } from 'tailwind-merge'; -import RequiredBadge from './RequiredBadge'; -import Tooltip from '../boxes/Tooltip'; import { capitalizeFirstLetter } from '../../utils'; +import Tooltip from '../boxes/Tooltip'; +import RequiredBadge from './RequiredBadge'; function Select({ options, name, title, defaultValue, className, tooltip, type, ...props }) { diff --git a/src/contexts/Chat/ChatState.jsx b/src/contexts/Chat/ChatState.jsx index 57a61d4..57fe6d0 100644 --- a/src/contexts/Chat/ChatState.jsx +++ b/src/contexts/Chat/ChatState.jsx @@ -1,9 +1,9 @@ -import React, { useContext, useReducer, useState } from 'react'; +import React, { useContext, useReducer } from 'react'; +import api from '../../utils/AxiosConfig'; +import { mergeBackendValidation } from '../../utils/ErrorHandling'; import ChatContext from './ChatContext'; import chatReducer from './ChatReducer'; import { CHAT_ACTIONS } from './ChatTypes'; -import api from '../../utils/AxiosConfig'; -import { mergeBackendValidation } from '../../utils/ErrorHandling'; // ### EXPORT useContext TO REDUCE NEEDED CODE IN CLIENT FILES export function useChat() { diff --git a/src/main.jsx b/src/main.jsx index 711d042..9a1e3ee 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -1,7 +1,7 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; -import App from './App.jsx'; import "react-toastify/dist/ReactToastify.css"; +import App from './App.jsx'; import './assets/sass/app.scss'; diff --git a/src/pages/Config/AI/NewModel.jsx b/src/pages/Config/AI/NewModel.jsx index 3e41ab2..d103bc6 100644 --- a/src/pages/Config/AI/NewModel.jsx +++ b/src/pages/Config/AI/NewModel.jsx @@ -1,14 +1,14 @@ -import React, { useEffect, useState } from 'react'; -import { useAuth } from '/src/contexts/Auth/AuthState'; -import api from '/src/utils/AxiosConfig'; -import Heading from '/src/components/font/Heading'; -import { mergeBackendValidation, setFlashMsg } from '/src/utils/ErrorHandling'; -import { z } from 'zod'; import { zodResolver } from '@hookform/resolvers/zod'; -import { FormProvider, useForm, useFormContext } from 'react-hook-form'; +import React from 'react'; +import { FormProvider, useForm } from 'react-hook-form'; +import { Link } from 'react-router-dom'; +import { z } from 'zod'; +import Heading from '/src/components/font/Heading'; import Input from '/src/components/form/Input'; import Submit from '/src/components/form/Submit'; -import { Link } from 'react-router-dom'; +import { useAuth } from '/src/contexts/Auth/AuthState'; +import api from '/src/utils/AxiosConfig'; +import { mergeBackendValidation, setFlashMsg } from '/src/utils/ErrorHandling'; function NewModel({ data, setData }) { // ################################# diff --git a/src/pages/Config/Config.jsx b/src/pages/Config/Config.jsx index b3bc0e0..7240bc4 100644 --- a/src/pages/Config/Config.jsx +++ b/src/pages/Config/Config.jsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react'; +import React from 'react'; import { Helmet } from 'react-helmet-async'; import { useAuth } from '../../contexts/Auth/AuthState'; import AIModels from './AIModels'; diff --git a/src/pages/Config/Embeddings.jsx b/src/pages/Config/Embeddings.jsx index 80bc05b..2d57c9e 100644 --- a/src/pages/Config/Embeddings.jsx +++ b/src/pages/Config/Embeddings.jsx @@ -1,9 +1,9 @@ import React, { useEffect, useState } from 'react'; -import Status from './Embeddings/Status'; -import { mergeBackendValidation } from '../../utils/ErrorHandling'; import api from '../../utils/AxiosConfig'; -import Update from './Embeddings/Update'; +import { mergeBackendValidation } from '../../utils/ErrorHandling'; import Delete from './Embeddings/Delete'; +import Status from './Embeddings/Status'; +import Update from './Embeddings/Update'; function Embeddings() { // ################################# diff --git a/src/pages/Config/Embeddings/Delete.jsx b/src/pages/Config/Embeddings/Delete.jsx index e440ae1..d1b2b1d 100644 --- a/src/pages/Config/Embeddings/Delete.jsx +++ b/src/pages/Config/Embeddings/Delete.jsx @@ -1,12 +1,11 @@ import React, { useState } from 'react'; -import { useAuth } from '../../../contexts/Auth/AuthState'; import { FormProvider, useForm } from 'react-hook-form'; +import ConfirmBox from '../../../components/boxes/ConfirmBox'; import Heading from '../../../components/font/Heading'; -import Input from '../../../components/form/Input'; import Submit from '../../../components/form/Submit'; -import ConfirmBox from '../../../components/boxes/ConfirmBox'; -import { mergeBackendValidation, setFlashMsg } from '../../../utils/ErrorHandling'; +import { useAuth } from '../../../contexts/Auth/AuthState'; import api from '../../../utils/AxiosConfig'; +import { mergeBackendValidation, setFlashMsg } from '../../../utils/ErrorHandling'; function Delete({ setStatus }) { // ################################# diff --git a/src/pages/Config/Embeddings/Update.jsx b/src/pages/Config/Embeddings/Update.jsx index b2a2564..0a306d5 100644 --- a/src/pages/Config/Embeddings/Update.jsx +++ b/src/pages/Config/Embeddings/Update.jsx @@ -1,13 +1,12 @@ import React, { useState } from 'react'; -import { Button } from '../../../components/ui/button'; -import Heading from '../../../components/font/Heading'; -import Tooltip from '../../../components/boxes/Tooltip'; -import api from '../../../utils/AxiosConfig'; -import { useAuth } from '../../../contexts/Auth/AuthState'; import { FormProvider, useForm } from 'react-hook-form'; +import JsonToHtmlDL from '../../../components/boxes/JsonToHtmlDL'; +import Tooltip from '../../../components/boxes/Tooltip'; +import Heading from '../../../components/font/Heading'; import Submit from '../../../components/form/Submit'; +import { useAuth } from '../../../contexts/Auth/AuthState'; +import api from '../../../utils/AxiosConfig'; import { mergeBackendValidation, setFlashMsg } from '../../../utils/ErrorHandling'; -import JsonToHtmlDL from '../../../components/boxes/JsonToHtmlDL'; function Update({ setStatus }) { // ################################# diff --git a/src/pages/Onboarding/Onboarding.jsx b/src/pages/Onboarding/Onboarding.jsx index 2a2640b..0349efc 100644 --- a/src/pages/Onboarding/Onboarding.jsx +++ b/src/pages/Onboarding/Onboarding.jsx @@ -1,9 +1,9 @@ import React from 'react'; import { Helmet } from 'react-helmet-async'; -import Heading from '../../components/font/Heading'; import Chats from '../../components/chat/Chats'; import Messages from '../../components/chat/Messages'; import PromptInput from '../../components/chat/PromptInput'; +import Heading from '../../components/font/Heading'; import ChatState from '../../contexts/Chat/ChatState'; diff --git a/src/pages/User/ChangeMail.jsx b/src/pages/User/ChangeMail.jsx deleted file mode 100644 index 20cf1de..0000000 --- a/src/pages/User/ChangeMail.jsx +++ /dev/null @@ -1,87 +0,0 @@ -import { zodResolver } from '@hookform/resolvers/zod'; -import React, { useRef, useState } from 'react'; -import { Helmet } from 'react-helmet-async'; -import { FormProvider, useForm, useFormContext } from 'react-hook-form'; -import { Link, useNavigate, useParams } from 'react-router-dom'; -import { z } from 'zod'; -import Input from '../../components/form/Input'; -import Submit from '../../components/form/Submit'; -import { useAuth } from '../../contexts/Auth/AuthState'; -import { mergeBackendValidation, setFlashMsg } from '../../utils/ErrorHandling'; -import Heading from '../../components/font/Heading'; -import api from '../../utils/AxiosConfig'; - -function ForgotPassword() { - // ################################# - // VALIDATION SCHEMA - // ################################# - // TODO limit file size via .env - // TODO check for file types - const schema = z.object({ - token: z.string().min(1), - password: z.string().min(1), - }); - - // ################################# - // HOOKS - // ################################# - // FETCH TOKEN FROM URL - const { token } = useParams(); - - // SET FORM - const methods = useForm({ - resolver: zodResolver(schema), - mode: 'onSubmit', - defaultValues: { - token: token, - } - }); - - // ### ENABLE REDIRECTIONS - const redirect = useNavigate(); - - // ################################# - // FUNCTIONS - // ################################# - - // ### HANDLE SUBMITTING FORM - async function handleSendForm(inputs) { - - // TRY UPDATE - try { - // send data - const result = await api.post(`/users/confirmemailchange`, inputs); - redirect('/change_email'); - // set flash message - setFlashMsg(result.data?.message); - } catch (error) { - // catch the error - mergeBackendValidation(error.response.status, error.response.data, methods.setError); - } - } - - // ################################# - // OUTPUT - // ################################# - return ( - <> - {/* render page title */} - <Helmet><title>[{import.meta.env.VITE_APP_NAME}] change E-Mail</title></Helmet> - - <Heading level="1">e-mail reset</Heading> - <FormProvider {...methods} > - <form onSubmit={methods.handleSubmit(handleSendForm)}> - <Input name='token' type='text' title='confirm token' required={true} /> - <Input name='password' type='password' title='current password' autoFocus={true} required={true} /> - <Submit value='submit' /> - </form> - </FormProvider> - - <div className="my-4 flex justify-between"> - <Link to="/change_email">Back to request</Link> - </div> - </> - ); -} - -export default React.memo(ForgotPassword); \ No newline at end of file diff --git a/src/pages/User/ForgotPassword.jsx b/src/pages/User/ForgotPassword.jsx index 3d84cb4..b88aa94 100644 --- a/src/pages/User/ForgotPassword.jsx +++ b/src/pages/User/ForgotPassword.jsx @@ -1,14 +1,14 @@ import { zodResolver } from '@hookform/resolvers/zod'; -import React, { useRef, useState } from 'react'; +import React from 'react'; import { Helmet } from 'react-helmet-async'; -import { FormProvider, useForm, useFormContext } from 'react-hook-form'; +import { FormProvider, useForm } from 'react-hook-form'; import { Link } from 'react-router-dom'; import { z } from 'zod'; +import Heading from '../../components/font/Heading'; import Input from '../../components/form/Input'; import Submit from '../../components/form/Submit'; import { useAuth } from '../../contexts/Auth/AuthState'; import { mergeBackendValidation, setFlashMsg } from '../../utils/ErrorHandling'; -import Heading from '../../components/font/Heading'; function ForgotPassword() { // ################################# diff --git a/src/pages/User/Login.jsx b/src/pages/User/Login.jsx index 0dbd5c0..120ae0b 100644 --- a/src/pages/User/Login.jsx +++ b/src/pages/User/Login.jsx @@ -1,15 +1,15 @@ +import { zodResolver } from '@hookform/resolvers/zod'; import React, { useEffect } from 'react'; -import { Link, useLocation, useNavigate } from 'react-router-dom'; -import { useAuth } from '../../contexts/Auth/AuthState'; +import { Helmet } from 'react-helmet-async'; import { FormProvider, useForm } from 'react-hook-form'; -import { zodResolver } from '@hookform/resolvers/zod'; -import { z } from "zod"; +import { Link, useLocation, useNavigate } from 'react-router-dom'; import { toast } from 'react-toastify'; -import { mergeBackendValidation, setFlashMsg } from '../../utils/ErrorHandling'; +import { z } from "zod"; +import Heading from '../../components/font/Heading'; import Input from '../../components/form/Input'; import Submit from '../../components/form/Submit'; -import { Helmet } from 'react-helmet-async'; -import Heading from '../../components/font/Heading'; +import { useAuth } from '../../contexts/Auth/AuthState'; +import { mergeBackendValidation, setFlashMsg } from '../../utils/ErrorHandling'; function Login() { diff --git a/src/pages/User/RequestChangeMail.jsx b/src/pages/User/RequestChangeMail.jsx deleted file mode 100644 index dfef9ef..0000000 --- a/src/pages/User/RequestChangeMail.jsx +++ /dev/null @@ -1,73 +0,0 @@ -import { zodResolver } from '@hookform/resolvers/zod'; -import React from 'react'; -import { Helmet } from 'react-helmet-async'; -import { FormProvider, useForm } from 'react-hook-form'; -import { Link } from 'react-router-dom'; -import { z } from 'zod'; -import Input from '../../components/form/Input'; -import Submit from '../../components/form/Submit'; -import { useAuth } from '../../contexts/Auth/AuthState'; -import { mergeBackendValidation, setFlashMsg } from '../../utils/ErrorHandling'; -import Heading from '../../components/font/Heading'; - -function RequestChangeMail() { - // ################################# - // VALIDATION SCHEMA - // ################################# - // TODO limit file size via .env - // TODO check for file types - const schema = z.object({ - email: z.string().email(), - }); - - // ################################# - // HOOKS - // ################################# - const methods = useForm({ - resolver: zodResolver(schema), - mode: 'onSubmit' - }); - - // ################################# - // FUNCTIONS - // ################################# - // ### IMPORT FUNCTION FROM AuthContext - const { requestEmailReset } = useAuth(); - - // ### HANDLE SUBMITTING FORM - async function handleSendForm(inputs) { - try { - // send data to login function - const result = await requestEmailReset(inputs.email); - // set flash message - setFlashMsg(result.data?.message); - } catch (error) { - // catch the error - mergeBackendValidation(error.response.status, error.response.data, methods.setError); - } - } - - // ################################# - // OUTPUT - // ################################# - return ( - <> - {/* render page title */} - <Helmet><title>[{import.meta.env.VITE_APP_NAME}] change E-Mail</title></Helmet> - - <Heading level="1">request e-mail reset</Heading> - <FormProvider {...methods} > - <form onSubmit={methods.handleSubmit(handleSendForm)}> - <Input name='email' type='mail' title='new E-Mail address' required={true} /> - <Submit value='request' /> - </form> - </FormProvider> - - <div className="my-4 flex justify-between"> - <Link to="/change_email/-">I already recieved a token</Link> - </div> - </> - ); -} - -export default React.memo(RequestChangeMail); \ No newline at end of file diff --git a/src/pages/User/ResendVerificationToken.jsx b/src/pages/User/ResendVerificationToken.jsx index b899c8e..66029bc 100644 --- a/src/pages/User/ResendVerificationToken.jsx +++ b/src/pages/User/ResendVerificationToken.jsx @@ -1,14 +1,14 @@ import { zodResolver } from '@hookform/resolvers/zod'; -import React, { useRef, useState } from 'react'; +import React from 'react'; import { Helmet } from 'react-helmet-async'; -import { FormProvider, useForm, useFormContext } from 'react-hook-form'; +import { FormProvider, useForm } from 'react-hook-form'; import { Link } from 'react-router-dom'; import { z } from 'zod'; +import Heading from '../../components/font/Heading'; import Input from '../../components/form/Input'; import Submit from '../../components/form/Submit'; import { useAuth } from '../../contexts/Auth/AuthState'; import { mergeBackendValidation, setFlashMsg } from '../../utils/ErrorHandling'; -import Heading from '../../components/font/Heading'; function ForgotPassword() { // ################################# diff --git a/src/pages/User/ResetPassword.jsx b/src/pages/User/ResetPassword.jsx index 72865b3..a7e9ca4 100644 --- a/src/pages/User/ResetPassword.jsx +++ b/src/pages/User/ResetPassword.jsx @@ -1,16 +1,16 @@ import { zodResolver } from '@hookform/resolvers/zod'; import React from 'react'; +import { Helmet } from 'react-helmet-async'; import { FormProvider, useForm } from 'react-hook-form'; import { Link, useNavigate, useParams } from 'react-router-dom'; +import { isStrongPassword } from 'validator'; import { z } from 'zod'; +import Heading from '../../components/font/Heading'; import Input from '../../components/form/Input'; import Submit from '../../components/form/Submit'; +import { useAuth } from '../../contexts/Auth/AuthState'; import api from '../../utils/AxiosConfig'; import { mergeBackendValidation, setFlashMsg } from '../../utils/ErrorHandling'; -import { isStrongPassword } from 'validator'; -import { useAuth } from '../../contexts/Auth/AuthState'; -import { Helmet } from 'react-helmet-async'; -import Heading from '../../components/font/Heading'; function ResetPasswordForm() { diff --git a/src/pages/User/Signup.jsx b/src/pages/User/Signup.jsx index 988e11e..a2dadb7 100644 --- a/src/pages/User/Signup.jsx +++ b/src/pages/User/Signup.jsx @@ -1,17 +1,16 @@ -import React, { useEffect } from 'react'; -import { Link, useLocation, useNavigate } from 'react-router-dom'; -import { useAuth } from '../../contexts/Auth/AuthState'; -import { FormProvider, useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; +import React from 'react'; +import { Helmet } from 'react-helmet-async'; +import { FormProvider, useForm } from 'react-hook-form'; +import { Link, useLocation, useNavigate } from 'react-router-dom'; +import validator from 'validator'; import { z } from "zod"; -import { toast } from 'react-toastify'; -import { mergeBackendValidation, setFlashMsg } from '../../utils/ErrorHandling'; +import Heading from '../../components/font/Heading'; import Input from '../../components/form/Input'; import Submit from '../../components/form/Submit'; -import { Helmet } from 'react-helmet-async'; -import Heading from '../../components/font/Heading'; -import validator from 'validator'; +import { useAuth } from '../../contexts/Auth/AuthState'; import api from '../../utils/AxiosConfig'; +import { mergeBackendValidation, setFlashMsg } from '../../utils/ErrorHandling'; function Signup() { diff --git a/src/pages/User/Verify.jsx b/src/pages/User/Verify.jsx index cd6f660..7a0305c 100644 --- a/src/pages/User/Verify.jsx +++ b/src/pages/User/Verify.jsx @@ -1,15 +1,14 @@ import { zodResolver } from '@hookform/resolvers/zod'; -import React, { useRef, useState } from 'react'; +import React from 'react'; import { Helmet } from 'react-helmet-async'; -import { FormProvider, useForm, useFormContext } from 'react-hook-form'; +import { FormProvider, useForm } from 'react-hook-form'; import { Link, useNavigate, useParams } from 'react-router-dom'; import { z } from 'zod'; +import Heading from '../../components/font/Heading'; import Input from '../../components/form/Input'; import Submit from '../../components/form/Submit'; -import { useAuth } from '../../contexts/Auth/AuthState'; -import { mergeBackendValidation, setFlashMsg } from '../../utils/ErrorHandling'; -import Heading from '../../components/font/Heading'; import api from '../../utils/AxiosConfig'; +import { mergeBackendValidation, setFlashMsg } from '../../utils/ErrorHandling'; function Verify() { // ################################# diff --git a/src/routes/Sitemap.jsx b/src/routes/Sitemap.jsx index 72b0953..a27a28f 100644 --- a/src/routes/Sitemap.jsx +++ b/src/routes/Sitemap.jsx @@ -1,7 +1,7 @@ -import MainLayout from "../layouts/MainLayout"; -import { loadComponent } from "./WrapRoutes"; import { Link } from 'react-router-dom'; import CleanLayout from '../layouts/CleanLayout'; +import MainLayout from "../layouts/MainLayout"; +import { loadComponent } from "./WrapRoutes"; export const sitemap = [{ -- GitLab