diff --git a/client/index.html b/client/index.html index e4c1f3d..96ebf54 100644 --- a/client/index.html +++ b/client/index.html @@ -17,7 +17,7 @@
diff --git a/client/src/App.tsx b/client/src/App.jsx similarity index 97% rename from client/src/App.tsx rename to client/src/App.jsx index fa48435..be8d87c 100644 --- a/client/src/App.tsx +++ b/client/src/App.jsx @@ -9,7 +9,6 @@ import { import { Admin } from "./components/admin/Admin"; import { CatchAll } from "./components/CatchAll"; import { Dashboard } from "./components/dashboard/Dashboard"; -//@ts-expect-error - Allow import of JSX page into App.tsx base import { Playground } from "./components/playground/Playground"; import { Login } from "./components/login/Login"; import { ProtectedRoute } from "./components/ProtectedRoute"; diff --git a/client/src/components/login/Login.tsx b/client/src/components/login/Login.jsx similarity index 96% rename from client/src/components/login/Login.tsx rename to client/src/components/login/Login.jsx index b8eabe3..b1844b1 100644 --- a/client/src/components/login/Login.tsx +++ b/client/src/components/login/Login.jsx @@ -29,8 +29,6 @@ const signinSchema = z.object({ password: z.string().min(6, "Password must be at least 6 characters long"), }); -type SigninFormValues = z.infer; - export const Login = () => { const navigate = useNavigate(); const toast = useToast(); @@ -42,13 +40,13 @@ export const Login = () => { register, handleSubmit, formState: { errors }, - } = useForm({ + } = useForm({ resolver: zodResolver(signinSchema), mode: "onBlur", }); const toastLoginError = useCallback( - (msg: string) => { + (msg) => { toast({ title: "An error occurred while signing in", description: msg, @@ -59,7 +57,7 @@ export const Login = () => { [toast] ); - const handleLogin = async (data: SigninFormValues) => { + const handleLogin = async (data) => { try { await login({ email: data.email, diff --git a/client/src/components/signup/Signup.tsx b/client/src/components/signup/Signup.jsx similarity index 96% rename from client/src/components/signup/Signup.tsx rename to client/src/components/signup/Signup.jsx index 751889d..c322754 100644 --- a/client/src/components/signup/Signup.tsx +++ b/client/src/components/signup/Signup.jsx @@ -29,8 +29,6 @@ const signupSchema = z.object({ password: z.string().min(6, "Password must be at least 6 characters long"), }); -type SignupFormValues = z.infer; - export const Signup = () => { const navigate = useNavigate(); const toast = useToast(); @@ -41,16 +39,19 @@ export const Signup = () => { register, handleSubmit, formState: { errors }, - } = useForm({ + } = useForm({ resolver: zodResolver(signupSchema), mode: "onBlur", }); - const handleSignup = async (data: SignupFormValues) => { + const handleSignup = async (data) => { try { const user = await signup({ email: data.email, password: data.password, + // add: + // first_name: ... + // last_name: ... }); if (user) { diff --git a/client/src/contexts/AuthContext.tsx b/client/src/contexts/AuthContext.tsx index 368476a..528b382 100644 --- a/client/src/contexts/AuthContext.tsx +++ b/client/src/contexts/AuthContext.tsx @@ -35,6 +35,8 @@ export const AuthContext = createContext(null); interface EmailPassword { email: string; password: string; + first_name: string; + last_name: string; } export const AuthProvider = ({ children }: { children: ReactNode }) => { @@ -43,7 +45,7 @@ export const AuthProvider = ({ children }: { children: ReactNode }) => { const [currentUser, setCurrentUser] = useState(null); const [loading, setLoading] = useState(true); - const signup = async ({ email, password }: EmailPassword) => { + const signup = async ({ email, password, first_name, last_name }: EmailPassword) => { if (currentUser) { signOut(auth); } @@ -57,6 +59,8 @@ export const AuthProvider = ({ children }: { children: ReactNode }) => { await backend.post("/users/create", { email: email, firebaseUid: userCredential.user.uid, + first_name: first_name, + last_name: last_name }); return userCredential; diff --git a/client/src/main.jsx b/client/src/main.jsx new file mode 100644 index 0000000..fe07186 --- /dev/null +++ b/client/src/main.jsx @@ -0,0 +1,32 @@ +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; + +import { ChakraProvider, extendTheme } from "@chakra-ui/react"; + +import App from "./App.jsx"; + +const colors = { + brand: {}, +}; + +const theme = extendTheme({ colors }); + +// For TSX +// createRoot(document.getElementById("root")!).render( +// +// +// +// +// +// ); + +const root = document.getElementById('root'); +if (root) { + createRoot(root).render( + + + + + + ); +} diff --git a/client/src/main.tsx b/client/src/main.tsx deleted file mode 100644 index 4e66530..0000000 --- a/client/src/main.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { StrictMode } from "react"; -import { createRoot } from "react-dom/client"; - -import { ChakraProvider, extendTheme } from "@chakra-ui/react"; - -import App from "./App.tsx"; - -const colors = { - brand: {}, -}; - -const theme = extendTheme({ colors }); - -createRoot(document.getElementById("root")!).render( - - - - - -); diff --git a/server/routes/users.js b/server/routes/users.js index 566c22d..0abff62 100644 --- a/server/routes/users.js +++ b/server/routes/users.js @@ -68,11 +68,11 @@ usersRouter.delete("/id/:id", async (req, res) => { // Create user usersRouter.post("/create", async (req, res) => { try { - const { email, firebaseUid } = req.body; + const { email, firebaseUid, first_name, last_name } = req.body; const user = await db.query( - "INSERT INTO users (email, firebase_uid) VALUES ($1, $2) RETURNING *", - [email, firebaseUid] + "INSERT INTO users (email, firebase_uid, first_name, last_name, edit_perms) VALUES ($1, $2, $3, $4, $5) RETURNING *", + [email, firebaseUid, first_name, last_name, false] ); res.status(200).json(keysToCamel(user)); diff --git a/server/src/app.ts b/server/src/app.js similarity index 96% rename from server/src/app.ts rename to server/src/app.js index f4bc1b3..0115b95 100644 --- a/server/src/app.ts +++ b/server/src/app.js @@ -9,7 +9,6 @@ import { commentsRouter } from '../routes/comments'; import { eventsRouter } from "../routes/events"; import { bookingsRouter } from "../routes/bookings"; import { verifyToken } from "./middleware"; -import { commentsRouter } from "../routes/comments"; import { clientsRouter } from "../routes/clients"; dotenv.config();