From 833488811b4164d7fbdce9bd70e171f06d62bf8d Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Mon, 20 Mar 2023 14:33:21 +0700 Subject: login and register --- src/lib/auth/components/Login.jsx | 124 ++--------------------- src/lib/auth/components/LoginDesktop.jsx | 77 ++++++++++++++ src/lib/auth/components/LoginMobile.jsx | 68 +++++++++++++ src/lib/auth/components/Register.jsx | 150 ++-------------------------- src/lib/auth/components/RegisterDesktop.jsx | 114 +++++++++++++++++++++ src/lib/auth/components/RegisterMobile.jsx | 109 ++++++++++++++++++++ 6 files changed, 380 insertions(+), 262 deletions(-) create mode 100644 src/lib/auth/components/LoginDesktop.jsx create mode 100644 src/lib/auth/components/LoginMobile.jsx create mode 100644 src/lib/auth/components/RegisterDesktop.jsx create mode 100644 src/lib/auth/components/RegisterMobile.jsx (limited to 'src/lib/auth/components') diff --git a/src/lib/auth/components/Login.jsx b/src/lib/auth/components/Login.jsx index 6fbc1475..171ff4c8 100644 --- a/src/lib/auth/components/Login.jsx +++ b/src/lib/auth/components/Login.jsx @@ -1,124 +1,12 @@ -import Image from 'next/image' -import IndoteknikLogo from '@/images/logo.png' -import Link from '@/core/components/elements/Link/Link' -import { useState } from 'react' -import loginApi from '../api/loginApi' -import { useRouter } from 'next/router' -import Alert from '@/core/components/elements/Alert/Alert' -import { setAuth } from '@/core/utils/auth' +import LoginDesktop from "./LoginDesktop" +import LoginMobile from "./LoginMobile" const Login = () => { - const router = useRouter() - const [email, setEmail] = useState('') - const [password, setPassword] = useState('') - const [isLoading, setIsLoading] = useState(false) - const [alert, setAlert] = useState(null) - - const handleSubmit = async (e) => { - e.preventDefault() - setAlert(null) - setIsLoading(true) - const login = await loginApi({ email, password }) - setIsLoading(false) - - if (login.isAuth) { - setAuth(login.user) - router.push('/') - return - } - switch (login.reason) { - case 'NOT_FOUND': - setAlert({ - children: 'Email atau password tidak cocok', - type: 'info' - }) - break - case 'NOT_ACTIVE': - setAlert({ - children: ( - <> - Email belum diaktivasi, - - aktivasi sekarang - - - ), - type: 'info' - }) - break - } - } - return ( -
- - Logo Indoteknik - -

Mulai Belanja Sekarang

-

Masuk ke akun kamu untuk belanja

- - {alert && ( - - {alert.children} - - )} - -
-
- - setEmail(e.target.value)} - placeholder='contoh@email.com' - /> -
-
- - setPassword(e.target.value)} - placeholder='••••••••••••' - /> -
- -
- -
- Belum punya akun Indoteknik?{' '} - - Daftar - -
-
+ <> + + + ) } diff --git a/src/lib/auth/components/LoginDesktop.jsx b/src/lib/auth/components/LoginDesktop.jsx new file mode 100644 index 00000000..7b71b9a6 --- /dev/null +++ b/src/lib/auth/components/LoginDesktop.jsx @@ -0,0 +1,77 @@ +import DesktopView from '@/core/components/views/DesktopView' +import useLogin from '../hooks/useLogin' +import Link from '@/core/components/elements/Link/Link' +import PageContent from '@/lib/content/components/PageContent' +import Alert from '@/core/components/elements/Alert/Alert' + +const LoginDesktop = () => { + const { handleSubmit, handleChangeInput, isLoading, isValid, alert, emailRef, passwordRef } = + useLogin() + + return ( + +
+
+
+

Selamat Datang di Indoteknik

+

+ Masuk ke akun kamu untuk mulai transaksi! +

+ + {alert && ( + + {alert.children} + + )} + +
+
+ + +
+
+ + +
+ +
+ +
+ Belum punya akun Indoteknik?{' '} + + Daftar akun baru + +
+
+
+ +
+
+
+
+ ) +} + +export default LoginDesktop diff --git a/src/lib/auth/components/LoginMobile.jsx b/src/lib/auth/components/LoginMobile.jsx new file mode 100644 index 00000000..78584a1c --- /dev/null +++ b/src/lib/auth/components/LoginMobile.jsx @@ -0,0 +1,68 @@ +import Image from 'next/image' +import IndoteknikLogo from '@/images/logo.png' +import Link from '@/core/components/elements/Link/Link' +import Alert from '@/core/components/elements/Alert/Alert' +import MobileView from '@/core/components/views/MobileView' +import useLogin from '../hooks/useLogin' + +const LoginMobile = () => { + const { handleSubmit, handleChangeInput, isLoading, isValid, alert, emailRef, passwordRef } = + useLogin() + + return ( + +
+ + Logo Indoteknik + +

Mulai Belanja Sekarang

+

Masuk ke akun kamu untuk belanja

+ + {alert && ( + + {alert.children} + + )} + +
+
+ + +
+
+ + +
+ +
+ +
+ Belum punya akun Indoteknik?{' '} + + Daftar + +
+
+
+ ) +} + +export default LoginMobile diff --git a/src/lib/auth/components/Register.jsx b/src/lib/auth/components/Register.jsx index 4ea62899..6c0152dc 100644 --- a/src/lib/auth/components/Register.jsx +++ b/src/lib/auth/components/Register.jsx @@ -1,150 +1,12 @@ -import Image from 'next/image' -import Link from '@/core/components/elements/Link/Link' -import IndoteknikLogo from '@/images/logo.png' -import { useState } from 'react' -import registerApi from '../api/registerApi' -import Alert from '@/core/components/elements/Alert/Alert' -import axios from 'axios' +import RegisterDesktop from './RegisterDesktop' +import RegisterMobile from './RegisterMobile' const Register = () => { - const [fullname, setFullname] = useState('') - const [email, setEmail] = useState('') - const [password, setPassword] = useState('') - const [companyName, setCompanyName] = useState('') - const [isLoading, setIsLoading] = useState('') - const [alert, setAlert] = useState(null) - - const handleSubmit = async (e) => { - e.preventDefault() - setAlert(null) - setIsLoading(true) - const data = { - name: fullname, - company: companyName, - email, - password - } - const isRegistered = await registerApi({ data }) - setIsLoading(false) - if (isRegistered.register) { - await axios.post(`${process.env.NEXT_PUBLIC_SELF_HOST}/api/activation-request`, { email }) - setAlert({ - children: 'Berhasil mendaftarkan akun anda, cek email untuk melakukan aktivasi akun', - type: 'success' - }) - setCompanyName('') - setFullname('') - setEmail('') - setPassword('') - } else { - switch (isRegistered.reason) { - case 'EMAIL_USED': - setAlert({ - children: 'Email telah digunakan', - type: 'info' - }) - break - } - } - } - return ( -
- - Logo Indoteknik - - -

Daftar Akun Indoteknik

-

- Buat akun sekarang lebih mudah dan terverifikasi -

- - {alert && ( - - {alert.children} - - )} - -
-
- - setCompanyName(e.target.value.toUpperCase())} - placeholder='cth: INDOTEKNIK DOTCOM GEMILANG' - autoCapitalize='true' - /> -
- -
- - setFullname(e.target.value)} - placeholder='John Doe' - /> -
-
- - setEmail(e.target.value)} - placeholder='contoh@email.com' - /> -
-
- - setPassword(e.target.value)} - placeholder='••••••••••••' - /> -
- - -
- -
- Sudah punya akun Indoteknik?{' '} - - Masuk - -
-
+ <> + + + ) } diff --git a/src/lib/auth/components/RegisterDesktop.jsx b/src/lib/auth/components/RegisterDesktop.jsx new file mode 100644 index 00000000..71cc29d8 --- /dev/null +++ b/src/lib/auth/components/RegisterDesktop.jsx @@ -0,0 +1,114 @@ +import DesktopView from '@/core/components/views/DesktopView' +import useRegister from '../hooks/useRegister' +import Link from '@/core/components/elements/Link/Link' +import Alert from '@/core/components/elements/Alert/Alert' +import PageContent from '@/lib/content/components/PageContent' + +const RegisterDesktop = () => { + const { + handleChangeInput, + handleSubmit, + isLoading, + isValid, + alert, + companyNameRef, + fullnameRef, + emailRef, + passwordRef + } = useRegister() + + return ( + +
+
+
+

Daftar Akun Indoteknik

+

+ Buat akun sekarang lebih mudah dan terverifikasi +

+ + {alert && ( + + {alert.children} + + )} + +
+
+ + +
+ +
+ + +
+
+ + +
+
+ + +
+ +
+ +
+ Sudah punya akun Indoteknik?{' '} + + Masuk + +
+
+
+ +
+
+
+
+ ) +} + +export default RegisterDesktop diff --git a/src/lib/auth/components/RegisterMobile.jsx b/src/lib/auth/components/RegisterMobile.jsx new file mode 100644 index 00000000..007b127c --- /dev/null +++ b/src/lib/auth/components/RegisterMobile.jsx @@ -0,0 +1,109 @@ +import IndoteknikLogo from '@/images/logo.png' +import Alert from '@/core/components/elements/Alert/Alert' +import Image from 'next/image' +import Link from '@/core/components/elements/Link/Link' +import useRegister from '../hooks/useRegister' +import MobileView from '@/core/components/views/MobileView' + +const RegisterMobile = () => { + const { + handleChangeInput, + handleSubmit, + isLoading, + isValid, + alert, + companyNameRef, + fullnameRef, + emailRef, + passwordRef + } = useRegister() + + return ( + +
+ + Logo Indoteknik + + +

Daftar Akun Indoteknik

+

+ Buat akun sekarang lebih mudah dan terverifikasi +

+ + {alert && ( + + {alert.children} + + )} + +
+
+ + +
+ +
+ + +
+
+ + +
+
+ + +
+ + +
+ +
+ Sudah punya akun Indoteknik?{' '} + + Masuk + +
+
+
+ ) +} + +export default RegisterMobile -- cgit v1.2.3