From 1157b77835a25d62e37b61ea348b082bc2b53b68 Mon Sep 17 00:00:00 2001 From: swve Date: Mon, 13 Mar 2023 22:22:03 +0100 Subject: [PATCH] feat: add profile settings page --- .../{ => (withmenu)}/activity/page.tsx | 0 .../{ => (withmenu)}/collections/new/page.tsx | 0 .../{ => (withmenu)}/collections/page.tsx | 0 .../course/[courseid]/edit/page.tsx | 0 .../[courseid]/lecture/[lectureid]/page.tsx | 0 .../course/[courseid]/page.tsx | 0 .../{ => (withmenu)}/courses/new/page.tsx | 0 .../{ => (withmenu)}/courses/page.tsx | 6 +- .../app/_orgs/[orgslug]/(withmenu)/layout.tsx | 15 + front/app/_orgs/[orgslug]/layout.tsx | 1 - .../settings/account/profile/page.tsx | 52 +++ front/app/_orgs/[orgslug]/settings/head.tsx | 15 + front/app/_orgs/[orgslug]/settings/layout.tsx | 88 +++++ front/app/_orgs/[orgslug]/settings/page.tsx | 9 + front/components/UI/Elements/Menu.tsx | 2 +- front/package-lock.json | 360 ++++++++++++------ front/package.json | 4 +- front/services/settings/profile.ts | 15 + front/styles/globals.css | 4 +- src/routers/users.py | 2 +- src/services/users.py | 17 +- 21 files changed, 456 insertions(+), 134 deletions(-) rename front/app/_orgs/[orgslug]/{ => (withmenu)}/activity/page.tsx (100%) rename front/app/_orgs/[orgslug]/{ => (withmenu)}/collections/new/page.tsx (100%) rename front/app/_orgs/[orgslug]/{ => (withmenu)}/collections/page.tsx (100%) rename front/app/_orgs/[orgslug]/{ => (withmenu)}/course/[courseid]/edit/page.tsx (100%) rename front/app/_orgs/[orgslug]/{ => (withmenu)}/course/[courseid]/lecture/[lectureid]/page.tsx (100%) rename front/app/_orgs/[orgslug]/{ => (withmenu)}/course/[courseid]/page.tsx (100%) rename front/app/_orgs/[orgslug]/{ => (withmenu)}/courses/new/page.tsx (100%) rename front/app/_orgs/[orgslug]/{ => (withmenu)}/courses/page.tsx (92%) create mode 100644 front/app/_orgs/[orgslug]/(withmenu)/layout.tsx create mode 100644 front/app/_orgs/[orgslug]/settings/account/profile/page.tsx create mode 100644 front/app/_orgs/[orgslug]/settings/head.tsx create mode 100644 front/app/_orgs/[orgslug]/settings/layout.tsx create mode 100644 front/app/_orgs/[orgslug]/settings/page.tsx create mode 100644 front/services/settings/profile.ts diff --git a/front/app/_orgs/[orgslug]/activity/page.tsx b/front/app/_orgs/[orgslug]/(withmenu)/activity/page.tsx similarity index 100% rename from front/app/_orgs/[orgslug]/activity/page.tsx rename to front/app/_orgs/[orgslug]/(withmenu)/activity/page.tsx diff --git a/front/app/_orgs/[orgslug]/collections/new/page.tsx b/front/app/_orgs/[orgslug]/(withmenu)/collections/new/page.tsx similarity index 100% rename from front/app/_orgs/[orgslug]/collections/new/page.tsx rename to front/app/_orgs/[orgslug]/(withmenu)/collections/new/page.tsx diff --git a/front/app/_orgs/[orgslug]/collections/page.tsx b/front/app/_orgs/[orgslug]/(withmenu)/collections/page.tsx similarity index 100% rename from front/app/_orgs/[orgslug]/collections/page.tsx rename to front/app/_orgs/[orgslug]/(withmenu)/collections/page.tsx diff --git a/front/app/_orgs/[orgslug]/course/[courseid]/edit/page.tsx b/front/app/_orgs/[orgslug]/(withmenu)/course/[courseid]/edit/page.tsx similarity index 100% rename from front/app/_orgs/[orgslug]/course/[courseid]/edit/page.tsx rename to front/app/_orgs/[orgslug]/(withmenu)/course/[courseid]/edit/page.tsx diff --git a/front/app/_orgs/[orgslug]/course/[courseid]/lecture/[lectureid]/page.tsx b/front/app/_orgs/[orgslug]/(withmenu)/course/[courseid]/lecture/[lectureid]/page.tsx similarity index 100% rename from front/app/_orgs/[orgslug]/course/[courseid]/lecture/[lectureid]/page.tsx rename to front/app/_orgs/[orgslug]/(withmenu)/course/[courseid]/lecture/[lectureid]/page.tsx diff --git a/front/app/_orgs/[orgslug]/course/[courseid]/page.tsx b/front/app/_orgs/[orgslug]/(withmenu)/course/[courseid]/page.tsx similarity index 100% rename from front/app/_orgs/[orgslug]/course/[courseid]/page.tsx rename to front/app/_orgs/[orgslug]/(withmenu)/course/[courseid]/page.tsx diff --git a/front/app/_orgs/[orgslug]/courses/new/page.tsx b/front/app/_orgs/[orgslug]/(withmenu)/courses/new/page.tsx similarity index 100% rename from front/app/_orgs/[orgslug]/courses/new/page.tsx rename to front/app/_orgs/[orgslug]/(withmenu)/courses/new/page.tsx diff --git a/front/app/_orgs/[orgslug]/courses/page.tsx b/front/app/_orgs/[orgslug]/(withmenu)/courses/page.tsx similarity index 92% rename from front/app/_orgs/[orgslug]/courses/page.tsx rename to front/app/_orgs/[orgslug]/(withmenu)/courses/page.tsx index 153e702a..b661d16f 100644 --- a/front/app/_orgs/[orgslug]/courses/page.tsx +++ b/front/app/_orgs/[orgslug]/(withmenu)/courses/page.tsx @@ -3,9 +3,9 @@ import Link from "next/link"; import { useRouter } from "next/navigation"; import React from "react"; import styled from "styled-components"; -import { Title } from "../../../../components/UI/Elements/Styles/Title"; -import { getAPIUrl, getBackendUrl, getUriWithOrg } from "../../../../services/config"; -import { deleteCourseFromBackend } from "../../../../services/courses/courses"; +import { Title } from "@components/UI/Elements/Styles/Title"; +import { getAPIUrl, getBackendUrl, getUriWithOrg } from "@services/config"; +import { deleteCourseFromBackend } from "@services/courses/courses"; import useSWR, { mutate } from "swr"; import { swrFetcher } from "@services/utils/requests"; import { Edit2, Trash } from "lucide-react"; diff --git a/front/app/_orgs/[orgslug]/(withmenu)/layout.tsx b/front/app/_orgs/[orgslug]/(withmenu)/layout.tsx new file mode 100644 index 00000000..4269ad70 --- /dev/null +++ b/front/app/_orgs/[orgslug]/(withmenu)/layout.tsx @@ -0,0 +1,15 @@ +import "@styles/globals.css"; +import { Menu } from "@components/UI/Elements/Menu"; +import AuthProvider from "@components/Security/AuthProvider"; + +export default function RootLayout({ children, params }: { children: React.ReactNode , params:any}) { + + return ( + <> + + + {children} + + + ); +} diff --git a/front/app/_orgs/[orgslug]/layout.tsx b/front/app/_orgs/[orgslug]/layout.tsx index 4269ad70..d73f3607 100644 --- a/front/app/_orgs/[orgslug]/layout.tsx +++ b/front/app/_orgs/[orgslug]/layout.tsx @@ -7,7 +7,6 @@ export default function RootLayout({ children, params }: { children: React.React return ( <> - {children} diff --git a/front/app/_orgs/[orgslug]/settings/account/profile/page.tsx b/front/app/_orgs/[orgslug]/settings/account/profile/page.tsx new file mode 100644 index 00000000..00ee1533 --- /dev/null +++ b/front/app/_orgs/[orgslug]/settings/account/profile/page.tsx @@ -0,0 +1,52 @@ +"use client"; +import { AuthContext } from '@components/Security/AuthProvider'; +import React, { useEffect } from 'react' +import { Formik, Form, Field, ErrorMessage } from 'formik'; +import { updateProfile } from '@services/settings/profile'; + +function SettingsProfilePage() { + + const auth: any = React.useContext(AuthContext); + + + + return ( +
+ + {auth.isAuthenticated && ( +
+

Profile Settings

+

+ + { + setTimeout(() => { + alert(JSON.stringify(values, null, 2)); + setSubmitting(false); + updateProfile(values) + }, 400); + }} + > + {({ isSubmitting }) => ( +
+ Full name
+ Email
+ Bio
+ + + )} +
+
+ )} + + +
+ + ) +} + +export default SettingsProfilePage \ No newline at end of file diff --git a/front/app/_orgs/[orgslug]/settings/head.tsx b/front/app/_orgs/[orgslug]/settings/head.tsx new file mode 100644 index 00000000..2cc1698e --- /dev/null +++ b/front/app/_orgs/[orgslug]/settings/head.tsx @@ -0,0 +1,15 @@ +import { createStitches } from '@stitches/react'; + +export const { getCssText } = createStitches(); + +export default function Head() { + return ( + <> + Settings + + +