diff --git a/app/pwopose/layout.js b/app/pwopose/layout.js
new file mode 100644
index 0000000..4c6e2a6
--- /dev/null
+++ b/app/pwopose/layout.js
@@ -0,0 +1,38 @@
+export const metadata = {
+ title: 'OKI | Proposer une parole de chanson',
+ description: 'Proposez la transcription d’une parole, accompagnée d’une ou plusieurs traductions.',
+ openGraph: {
+ title: 'OKI | Proposer une parole de chanson',
+ description: 'Proposez la transcription d’une parole, accompagnée d’une ou plusieurs traductions.',
+ url: 'https://oki.re/pwopose',
+ siteName: 'OKI | Organisation KA Internationale. Paroles et traductions.',
+ images: [
+ {
+ url: 'htts://oki.re/logo-512x512.png',
+ width: 512,
+ height: 512
+ }
+ ],
+ locale: 'fr_FR',
+ type: 'website'
+ },
+ twitter: {
+ site: '@OrganisationKA',
+ card: 'summary_large_image',
+ title: 'OKI | Proposer une parole de chanson',
+ description: 'Proposez la transcription d’une parole, accompagnée d’une ou plusieurs traductions.',
+ creator: '@OrganisationKA',
+ images: {
+ url: 'https://oki.re/logo-512x512.png',
+ alt: 'OKI Logo',
+ },
+ }
+}
+
+export default async function PwoposeLayout({children}) {
+ return (
+
+ )
+}
diff --git a/app/pwopose/page.js b/app/pwopose/page.js
new file mode 100644
index 0000000..391aa9a
--- /dev/null
+++ b/app/pwopose/page.js
@@ -0,0 +1,108 @@
+'use client'
+
+import {useState, useEffect, forwardRef} from 'react'
+import {useSession} from 'next-auth/react'
+import MuiAlert from '@mui/material/Alert'
+import Snackbar from '@mui/material/Snackbar'
+import Box from '@mui/material/Box'
+import {useSearchParams} from 'next/navigation'
+import Koneksyon from '../../components/sesyon/koneksyon'
+import Dekoneksyon from '../../components/sesyon/dekoneksyon'
+import EkriTeks from '../../components/soumet/ekri-teks'
+
+import {jwennUserEpiToken, jwennUserEpiUsername} from '../../lib/oki-api'
+import NewPassword from '../../components/password/new-password'
+import ChwaTeks from '../../components/soumet/chwa-teks'
+
+const Alert = forwardRef(function Alert(props, ref) {
+ return
+})
+
+export default function Pwopose() {
+ const params = useSearchParams()
+ const {code} = params
+ const {data: session} = useSession()
+ const [localUsername, setLocalUsername] = useState(null)
+ const [username, setUsername] = useState(null)
+ const [open, setOpen] = useState(true)
+ const [selectedTeks, setSelectedTeks] = useState(null)
+ const [canAutoTranslate, setCanAutoTranslate] = useState(false)
+
+ const handleClose = (event, reason) => {
+ if (reason === 'clickaway') {
+ return
+ }
+
+ setOpen(false)
+ }
+
+ useEffect(() => {
+ if (session?.jwt) {
+ const getUser = async token => {
+ const user = await jwennUserEpiToken(token)
+ setCanAutoTranslate(user.canAutoTranslate)
+ }
+
+ getUser(session.jwt)
+ }
+ })
+
+ useEffect(() => {
+ if (localStorage.getItem('username')) {
+ const username = localStorage.getItem('username')
+ setLocalUsername(username)
+ }
+ }, [])
+
+ useEffect(() => {
+ if (localUsername) {
+ const getUser = async username => {
+ const user = await jwennUserEpiUsername(username)
+ setUsername(user?.username)
+ }
+
+ getUser(localUsername)
+ }
+ }, [localUsername])
+
+ useEffect(() => {
+ if (username && localStorage.getItem('username')) {
+ localStorage.removeItem('username')
+ }
+ }, [username])
+
+ return (
+
+
+ {!session && !code && (
+
+ )}
+
+ {!session && code && (
+
+ )}
+ {session && session.user && (
+ <>
+
+
+
+ >
+ )}
+ {session && !session.user && (
+
+ )}
+ {username && (
+
+ Bonjour {username}, votre compte a été activé avec succès. Vous pouvez vous connecter.
+
+ )}
+
+
+ )
+}
diff --git a/pages/soumet.js b/pages/soumet.js
deleted file mode 100644
index ec85160..0000000
--- a/pages/soumet.js
+++ /dev/null
@@ -1,127 +0,0 @@
-import {useState, useEffect, forwardRef} from 'react'
-import PropTypes from 'prop-types'
-import {useSession} from 'next-auth/react'
-import MuiAlert from '@mui/material/Alert'
-import Snackbar from '@mui/material/Snackbar'
-import Box from '@mui/material/Box'
-
-import HeadLayout from '../components/head-layout'
-import Koneksyon from '../components/sesyon/koneksyon'
-import Dekoneksyon from '../components/sesyon/dekoneksyon'
-import EkriTeks from '../components/soumet/ekri-teks'
-import Footer from '../components/footer'
-
-import {jwennUserEpiToken, jwennUserEpiUsername} from '../lib/oki-api'
-import NewPassword from '../components/password/new-password'
-import ChwaTeks from '../components/soumet/chwa-teks'
-
-const Alert = forwardRef(function Alert(props, ref) {
- return
-})
-
-export default function Soumet({code}) {
- const {data: session} = useSession()
- const [localUsername, setLocalUsername] = useState(null)
- const [username, setUsername] = useState(null)
- const [open, setOpen] = useState(true)
- const [selectedTeks, setSelectedTeks] = useState(null)
- const [canAutoTranslate, setCanAutoTranslate] = useState(false)
-
- const handleClose = (event, reason) => {
- if (reason === 'clickaway') {
- return
- }
-
- setOpen(false)
- }
-
- useEffect(() => {
- if (session?.jwt) {
- const getUser = async token => {
- const user = await jwennUserEpiToken(token)
- setCanAutoTranslate(user.canAutoTranslate)
- }
-
- getUser(session.jwt)
- }
- })
-
- useEffect(() => {
- if (localStorage.getItem('username')) {
- const username = localStorage.getItem('username')
- setLocalUsername(username)
- }
- }, [])
-
- useEffect(() => {
- if (localUsername) {
- const getUser = async username => {
- const user = await jwennUserEpiUsername(username)
- setUsername(user?.username)
- }
-
- getUser(localUsername)
- }
- }, [localUsername])
-
- useEffect(() => {
- if (username && localStorage.getItem('username')) {
- localStorage.removeItem('username')
- }
- }, [username])
-
- return (
-
-
-
- {!session && !code && (
-
- )}
-
- {!session && code && (
-
- )}
- {session && session.user && (
- <>
-
-
-
- >
- )}
- {session && !session.user && (
-
- )}
- {username && (
-
- Bonjour {username}, votre compte a été activé avec succès. Vous pouvez vous connecter.
-
- )}
-
-
-
-
- )
-}
-
-Soumet.defaultProps = {
- code: null
-}
-
-Soumet.propTypes = {
- code: PropTypes.string
-}
-
-export async function getServerSideProps({query}) {
- const {code} = query
- return {
- props: {
- code: code || null
- }
- }
-}