From 03ed807eaf0d69154136a2fea7fe2a5062375d47 Mon Sep 17 00:00:00 2001 From: AmirHossein Mahmoodi Date: Sun, 10 Dec 2023 15:08:10 +0330 Subject: [PATCH] use witel webapp builder --- next.config.js | 2 +- package.json | 1 + public/global.scss | 2 + public/manifest.json | 2 +- src/components/dashboard/first/index.jsx | 4 +- src/components/errors/403.jsx | 4 +- src/components/errors/404.jsx | 4 +- src/components/errors/500.jsx | 4 +- src/components/first/FooterDetails.jsx | 17 +-- src/components/first/HeaderDetails.jsx | 8 +- src/components/first/LoanCondition.jsx | 36 ++--- .../first/LoanDescription/index.jsx | 28 ++-- src/components/first/LoanRegister.jsx | 33 +++-- src/components/first/index.jsx | 12 +- src/core/components/LinkRouting.jsx | 116 --------------- src/core/components/LoadingHardPage.jsx | 44 ------ src/core/components/Messages.jsx | 18 --- src/core/components/NetworkComponent.jsx | 34 ----- src/core/components/NoSsrHandler.jsx | 8 -- .../notifications/ErrorNotification.jsx | 39 ----- .../notifications/PendingNotification.jsx | 12 -- .../notifications/SuccessNotification.jsx | 42 ------ .../notifications/WarningNotification.jsx | 40 ------ src/core/components/notifications/index.jsx | 54 ------- src/core/data/apiRoutes.js | 3 +- ...ProfileItems.jsx => headerProfileItems.js} | 0 src/core/data/languageList.js | 14 ++ .../data/{sidebarMenu.jsx => sidebarMenu.js} | 21 --- src/core/utils/createEmotionCache.jsx | 38 ----- src/core/utils/errorHandler.js | 62 -------- src/core/utils/succesHandler.js | 9 -- src/layouts/AppLayout.jsx | 56 -------- src/layouts/CenterLayout.jsx | 18 --- src/layouts/FullPageLayout.jsx | 21 --- src/layouts/MuiLayout.jsx | 75 ---------- src/layouts/ScrollableLayout.jsx | 25 ---- src/layouts/dashboard.jsx | 15 ++ .../breadcrumbs/BreadcrumbItem.jsx | 19 --- .../dashboardLayouts/breadcrumbs/index.jsx | 62 -------- .../dashboardLayouts/header/ProfileData.jsx | 15 -- .../dashboardLayouts/header/ProfileMenu.jsx | 62 -------- .../header/ProfileOptionLogOut.jsx | 49 ------- .../header/ProfileOptions.jsx | 49 ------- src/layouts/dashboardLayouts/header/index.jsx | 72 ---------- src/layouts/dashboardLayouts/index.jsx | 49 ------- .../sidebar/SidebarDrawer.jsx | 26 ---- .../dashboardLayouts/sidebar/SidebarList.jsx | 69 --------- .../sidebar/SidebarListItem.jsx | 59 -------- .../sidebar/SidebarListSubItem.jsx | 48 ------- .../dashboardLayouts/sidebar/index.jsx | 46 ------ src/layouts/index.jsx | 16 +++ src/layouts/list.jsx | 3 + src/lib/app/contexts/language.jsx | 99 ------------- src/lib/app/contexts/loading.jsx | 14 -- src/lib/app/contexts/user.jsx | 133 ------------------ src/lib/app/hooks/useDirection.jsx | 10 -- src/lib/app/hooks/useLanguage.jsx | 28 ---- src/lib/app/hooks/useLoading.jsx | 10 -- src/lib/app/hooks/useNetwork.jsx | 58 -------- src/lib/app/hooks/useRequest.js | 66 --------- src/lib/app/hooks/useUser.jsx | 36 ----- src/middlewares/UserType.jsx | 41 ------ src/middlewares/WithAuth.jsx | 41 ------ src/middlewares/WithoutAuth.jsx | 56 -------- src/pages/_app.jsx | 42 ++++-- src/pages/_document.jsx | 12 +- src/pages/dashboard/index.jsx | 7 +- .../navgan/add-request-loan/index.jsx | 11 +- .../dashboard/navgan/followUp-loan/index.jsx | 11 +- .../refahi/add-request-loan/index.jsx | 24 ---- .../refahi/edit-request-loan/[id].jsx | 24 ---- .../dashboard/refahi/followUp-loan/index.jsx | 24 ---- src/pages/login.jsx | 4 +- src/pages/register/index.jsx | 4 +- 74 files changed, 188 insertions(+), 2132 deletions(-) create mode 100644 public/global.scss delete mode 100644 src/core/components/LinkRouting.jsx delete mode 100644 src/core/components/LoadingHardPage.jsx delete mode 100644 src/core/components/Messages.jsx delete mode 100644 src/core/components/NetworkComponent.jsx delete mode 100644 src/core/components/NoSsrHandler.jsx delete mode 100644 src/core/components/notifications/ErrorNotification.jsx delete mode 100644 src/core/components/notifications/PendingNotification.jsx delete mode 100644 src/core/components/notifications/SuccessNotification.jsx delete mode 100644 src/core/components/notifications/WarningNotification.jsx delete mode 100644 src/core/components/notifications/index.jsx rename src/core/data/{headerProfileItems.jsx => headerProfileItems.js} (100%) create mode 100644 src/core/data/languageList.js rename src/core/data/{sidebarMenu.jsx => sidebarMenu.js} (61%) delete mode 100644 src/core/utils/createEmotionCache.jsx delete mode 100644 src/core/utils/errorHandler.js delete mode 100644 src/core/utils/succesHandler.js delete mode 100644 src/layouts/AppLayout.jsx delete mode 100644 src/layouts/CenterLayout.jsx delete mode 100644 src/layouts/FullPageLayout.jsx delete mode 100644 src/layouts/MuiLayout.jsx delete mode 100644 src/layouts/ScrollableLayout.jsx create mode 100644 src/layouts/dashboard.jsx delete mode 100644 src/layouts/dashboardLayouts/breadcrumbs/BreadcrumbItem.jsx delete mode 100644 src/layouts/dashboardLayouts/breadcrumbs/index.jsx delete mode 100644 src/layouts/dashboardLayouts/header/ProfileData.jsx delete mode 100644 src/layouts/dashboardLayouts/header/ProfileMenu.jsx delete mode 100644 src/layouts/dashboardLayouts/header/ProfileOptionLogOut.jsx delete mode 100644 src/layouts/dashboardLayouts/header/ProfileOptions.jsx delete mode 100644 src/layouts/dashboardLayouts/header/index.jsx delete mode 100644 src/layouts/dashboardLayouts/index.jsx delete mode 100644 src/layouts/dashboardLayouts/sidebar/SidebarDrawer.jsx delete mode 100644 src/layouts/dashboardLayouts/sidebar/SidebarList.jsx delete mode 100644 src/layouts/dashboardLayouts/sidebar/SidebarListItem.jsx delete mode 100644 src/layouts/dashboardLayouts/sidebar/SidebarListSubItem.jsx delete mode 100644 src/layouts/dashboardLayouts/sidebar/index.jsx create mode 100644 src/layouts/index.jsx create mode 100644 src/layouts/list.jsx delete mode 100644 src/lib/app/contexts/language.jsx delete mode 100644 src/lib/app/contexts/loading.jsx delete mode 100644 src/lib/app/contexts/user.jsx delete mode 100644 src/lib/app/hooks/useDirection.jsx delete mode 100644 src/lib/app/hooks/useLanguage.jsx delete mode 100644 src/lib/app/hooks/useLoading.jsx delete mode 100644 src/lib/app/hooks/useNetwork.jsx delete mode 100644 src/lib/app/hooks/useRequest.js delete mode 100644 src/lib/app/hooks/useUser.jsx delete mode 100644 src/middlewares/UserType.jsx delete mode 100644 src/middlewares/WithAuth.jsx delete mode 100644 src/middlewares/WithoutAuth.jsx delete mode 100644 src/pages/dashboard/refahi/add-request-loan/index.jsx delete mode 100644 src/pages/dashboard/refahi/edit-request-loan/[id].jsx delete mode 100644 src/pages/dashboard/refahi/followUp-loan/index.jsx diff --git a/next.config.js b/next.config.js index db2124f..5c809d9 100644 --- a/next.config.js +++ b/next.config.js @@ -3,7 +3,7 @@ const nextConfig = { reactStrictMode: true, images: { - domains: ['loan.witel.ir', /* other domains */], + domains: [process.env.NEXT_PUBLIC_BASE_URL], }, i18n: { defaultLocale: 'fa', diff --git a/package.json b/package.json index 5305c99..e44361c 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "@mui/icons-material": "^5.11.16", "@mui/lab": "^5.0.0-alpha.152", "@mui/material": "^5.12.0", + "@witel/webapp-builder": "^1.0.2", "axios": "^1.4.0", "colord": "^2.9.3", "eslint": "8.36.0", diff --git a/public/global.scss b/public/global.scss new file mode 100644 index 0000000..a4a3158 --- /dev/null +++ b/public/global.scss @@ -0,0 +1,2 @@ +@import "fontiran"; +@import 'react-toastify/dist/ReactToastify.css'; \ No newline at end of file diff --git a/public/manifest.json b/public/manifest.json index 32bacd5..1fd43e4 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,5 +1,5 @@ { - "short_name": "Loan Facilities Dashboard", + "short_name": "Loan Facilities", "name": "Loan Facilities User Dashboard", "description": "Loan Facilities", "version": "1.0.0", diff --git a/src/components/dashboard/first/index.jsx b/src/components/dashboard/first/index.jsx index 3d1c29e..0e3c800 100644 --- a/src/components/dashboard/first/index.jsx +++ b/src/components/dashboard/first/index.jsx @@ -1,7 +1,5 @@ -import DashboardLayouts from "@/layouts/dashboardLayouts"; - const FirstComponent = () => { - return ; + return <>; }; export default FirstComponent; diff --git a/src/components/errors/403.jsx b/src/components/errors/403.jsx index ce91443..8d410ed 100644 --- a/src/components/errors/403.jsx +++ b/src/components/errors/403.jsx @@ -1,10 +1,8 @@ -import CenterLayout from "@/layouts/CenterLayout"; -import FullPageLayout from "@/layouts/FullPageLayout"; import {Button, Typography} from "@mui/material"; -import {NextLinkComposed} from "@/core/components/LinkRouting"; import {useTranslations} from "next-intl"; import TitlePage from "@/core/components/TitlePage"; import Svg403 from "@/core/components/svgs/Svg403"; +import {CenterLayout, FullPageLayout, NextLinkComposed} from "@witel/webapp-builder"; const UnAuthorizedComponent = () => { const t = useTranslations(); diff --git a/src/components/errors/404.jsx b/src/components/errors/404.jsx index acfd418..15a394c 100644 --- a/src/components/errors/404.jsx +++ b/src/components/errors/404.jsx @@ -1,10 +1,8 @@ -import CenterLayout from "@/layouts/CenterLayout"; -import FullPageLayout from "@/layouts/FullPageLayout"; import {Button, Typography} from "@mui/material"; -import {NextLinkComposed} from "@/core/components/LinkRouting"; import {useTranslations} from "next-intl"; import TitlePage from "@/core/components/TitlePage"; import Svg404 from "@/core/components/svgs/Svg404"; +import {CenterLayout, FullPageLayout, NextLinkComposed} from "@witel/webapp-builder"; const NotFoundComponent = () => { const t = useTranslations(); diff --git a/src/components/errors/500.jsx b/src/components/errors/500.jsx index 5a19eda..5527a39 100644 --- a/src/components/errors/500.jsx +++ b/src/components/errors/500.jsx @@ -1,10 +1,8 @@ -import CenterLayout from "@/layouts/CenterLayout"; -import FullPageLayout from "@/layouts/FullPageLayout"; import {Button, Typography} from "@mui/material"; -import {NextLinkComposed} from "@/core/components/LinkRouting"; import {useTranslations} from "next-intl"; import TitlePage from "@/core/components/TitlePage"; import Svg500 from "@/core/components/svgs/Svg500"; +import {CenterLayout, FullPageLayout, NextLinkComposed} from "@witel/webapp-builder"; const ServerErrorComponent = () => { const t = useTranslations(); diff --git a/src/components/first/FooterDetails.jsx b/src/components/first/FooterDetails.jsx index bb8fe01..7c0eb2c 100644 --- a/src/components/first/FooterDetails.jsx +++ b/src/components/first/FooterDetails.jsx @@ -1,23 +1,24 @@ import {Box, Button, Container, Grid, Stack, Typography} from "@mui/material"; -import LinkRouting from "@/core/components/LinkRouting"; import {useTranslations} from "next-intl"; +import {LinkRouting} from "@witel/webapp-builder"; const FooterDetails = () => { const t = useTranslations(); - return( - - - + return ( + + + - Your Alt Text + Your Alt Text { - return( + return ( - + - - - - } - /> - ); - } - - return <>{children}; -}; - -export default UserTypeMiddleware; diff --git a/src/middlewares/WithAuth.jsx b/src/middlewares/WithAuth.jsx deleted file mode 100644 index b317492..0000000 --- a/src/middlewares/WithAuth.jsx +++ /dev/null @@ -1,41 +0,0 @@ -import {NextLinkComposed} from "@/core/components/LinkRouting"; -import Message from "@/core/components/Messages"; -import useUser from "@/lib/app/hooks/useUser"; -import {Button, Typography} from "@mui/material"; -import {useTranslations} from "next-intl"; -import {useRouter} from "next/router"; - -const WithAuthMiddleware = ({children}) => { - const {isAuth} = useUser(); - const t = useTranslations(); - const router = useRouter(); - - if (!isAuth) - return ( - - {t( - "Authorization.typography_your_access_to_this_page_has_expired_Please_login_again" - )} - - } - actions={ - <> - - - } - /> - ); - return <>{children}; -}; - -export default WithAuthMiddleware; diff --git a/src/middlewares/WithoutAuth.jsx b/src/middlewares/WithoutAuth.jsx deleted file mode 100644 index 594ffc5..0000000 --- a/src/middlewares/WithoutAuth.jsx +++ /dev/null @@ -1,56 +0,0 @@ -import Message from "@/core/components/Messages"; -import useUser from "@/lib/app/hooks/useUser"; -import {Stack, Typography} from "@mui/material"; -import {useTranslations} from "next-intl"; -import {useSearchParams} from "next/navigation"; -import {useRouter} from "next/router"; -import {useEffect} from "react"; - -const WithoutAuthMiddleware = ({children}) => { - const {isAuth} = useUser(); - const t = useTranslations(); - const router = useRouter(); - - // gettin url query - const searchParams = useSearchParams(); - const backUrlDecodedPath = searchParams.get("back_url"); - - useEffect(() => { - if (!isAuth) return; - const timer = setTimeout(() => { - router.replace( - backUrlDecodedPath - ? decodeURIComponent(backUrlDecodedPath) - : "/dashboard" - ); - }, 2000); - - return () => { - clearTimeout(timer); - }; - }, [isAuth]); - - if (isAuth) - return ( - - - {t( - "Authorization.typography_your_login_is_valid_and_you_do_not_need_to_login_again" - )} - - - {t("Authorization.typography_redirect_to")}{" "} - {backUrlDecodedPath - ? t("Authorization.typography_routing_previuos_page") - : t("Authorization.typography_routing_dashbaord_page")} - - - } - /> - ); - return <>{children}; -}; - -export default WithoutAuthMiddleware; diff --git a/src/pages/_app.jsx b/src/pages/_app.jsx index 0fc6a4a..a3be1c7 100644 --- a/src/pages/_app.jsx +++ b/src/pages/_app.jsx @@ -1,25 +1,41 @@ -import "&/fontiran.scss"; -import AppLayout from "@/layouts/AppLayout"; -import MuiLayout from "@/layouts/MuiLayout"; -import {LanguageProvider} from "@/lib/app/contexts/language"; -import {LoadingProvider} from "@/lib/app/contexts/loading"; -import {UserProvider} from "@/lib/app/contexts/user"; +import "&/global.scss"; import "moment/locale/fa"; +import { + AppLayout, + LanguageProvider, + LoadingProvider, + MuiLayout, + NetworkProvider, + ToastProvider, + UserProvider +} from "@witel/webapp-builder"; +import {GET_USER} from "@/core/data/apiRoutes"; +import languageList from "@/core/data/languageList"; import {NextIntlProvider} from "next-intl"; +import themeRtl from "@/core/utils/theme-rtl"; import TitlePage from "@/core/components/TitlePage"; +import GlobalHead from "@/core/components/GlobalHead"; +import Layout from "@/layouts"; const App = ({Component, pageProps}) => { return ( <> - - - - + data}> + + + {pageProps.messages ? : ''} - - - + + + + + + + + + diff --git a/src/pages/_document.jsx b/src/pages/_document.jsx index 474e29b..6aaa82f 100644 --- a/src/pages/_document.jsx +++ b/src/pages/_document.jsx @@ -1,7 +1,8 @@ -import {createEmotionCacheRtl} from "@/core/utils/createEmotionCache"; import theme from "@/core/utils/theme"; import createEmotionServer from "@emotion/server/create-instance"; import Document, {Head, Html, Main, NextScript} from "next/document"; +import {createEmotionCacheLtr, createEmotionCacheRtl} from "@witel/webapp-builder"; +import languageList from "@/core/data/languageList"; export default function MyDocument(props) { const {emotionStyleTags} = props; @@ -26,10 +27,13 @@ export default function MyDocument(props) { MyDocument.getInitialProps = async (ctx) => { const originalRenderPage = ctx.renderPage; let cache; - switch (ctx.locale) { - case "fa": + for (const lang of languageList) { + if (ctx.locale !== lang.key) continue; + if (lang.dir === 'rtl') { cache = createEmotionCacheRtl(); - break; + } else { + cache = createEmotionCacheLtr(); + } } const {extractCriticalToChunks} = createEmotionServer(cache); diff --git a/src/pages/dashboard/index.jsx b/src/pages/dashboard/index.jsx index 02c438a..265c8ac 100644 --- a/src/pages/dashboard/index.jsx +++ b/src/pages/dashboard/index.jsx @@ -1,12 +1,9 @@ import FirstComponent from "@/components/dashboard/first"; -import WithAuthMiddleware from "@/middlewares/WithAuth"; import {parse} from "next-useragent"; export default function Dashboard() { return ( - - - + ); } @@ -17,6 +14,8 @@ export async function getServerSideProps({req, locale}) { messages: (await import(`&/locales/${locale}/app.json`)).default, title: "Dashboard.dashboard_page", isBot, + locale, + layout: {name: 'DashboardLayout'} }, }; } diff --git a/src/pages/dashboard/navgan/add-request-loan/index.jsx b/src/pages/dashboard/navgan/add-request-loan/index.jsx index bd8a442..5af141c 100644 --- a/src/pages/dashboard/navgan/add-request-loan/index.jsx +++ b/src/pages/dashboard/navgan/add-request-loan/index.jsx @@ -1,16 +1,9 @@ -import WithAuthMiddleware from "@/middlewares/WithAuth"; import {parse} from "next-useragent"; -import UserTypeMiddleware from "@/middlewares/UserType"; import LoanRequestComponent from "@/components/dashboard/navgan/add-request-loan"; -const user_type = 1; export default function AddLoanRequest() { return ( - - - - - + ); } @@ -21,6 +14,8 @@ export async function getServerSideProps({req, locale}) { messages: (await import(`&/locales/${locale}/app.json`)).default, title: "LoanRequest.loan_request_page", isBot, + locale, + layout: {name: 'DashboardLayout'} }, }; } diff --git a/src/pages/dashboard/navgan/followUp-loan/index.jsx b/src/pages/dashboard/navgan/followUp-loan/index.jsx index 52f0271..1476d5a 100644 --- a/src/pages/dashboard/navgan/followUp-loan/index.jsx +++ b/src/pages/dashboard/navgan/followUp-loan/index.jsx @@ -1,16 +1,9 @@ -import WithAuthMiddleware from "@/middlewares/WithAuth"; import {parse} from "next-useragent"; -import UserTypeMiddleware from "@/middlewares/UserType"; import LoanFollowUpComponent from "@/components/dashboard/navgan/followUp-loan"; -const user_type = 1; export default function FollowUpLoan() { return ( - - - - - + ); } @@ -21,6 +14,8 @@ export async function getServerSideProps({req, locale}) { messages: (await import(`&/locales/${locale}/app.json`)).default, title: "LoanRequest.loan_request_page", isBot, + locale, + layout: {name: 'DashboardLayout'} }, }; } diff --git a/src/pages/dashboard/refahi/add-request-loan/index.jsx b/src/pages/dashboard/refahi/add-request-loan/index.jsx deleted file mode 100644 index b4575e9..0000000 --- a/src/pages/dashboard/refahi/add-request-loan/index.jsx +++ /dev/null @@ -1,24 +0,0 @@ -import WithAuthMiddleware from "@/middlewares/WithAuth"; -import {parse} from "next-useragent"; - -const user_type = 2; -export default function AddLoanRequest() { - return ( - - {/**/} - {/* */} - {/**/} - - ); -} - -export async function getServerSideProps({req, locale}) { - const {isBot} = parse(req.headers["user-agent"]); - return { - props: { - messages: (await import(`&/locales/${locale}/app.json`)).default, - title: "LoanRequest.loan_request_page", - isBot, - }, - }; -} diff --git a/src/pages/dashboard/refahi/edit-request-loan/[id].jsx b/src/pages/dashboard/refahi/edit-request-loan/[id].jsx deleted file mode 100644 index f6b72d5..0000000 --- a/src/pages/dashboard/refahi/edit-request-loan/[id].jsx +++ /dev/null @@ -1,24 +0,0 @@ -import WithAuthMiddleware from "@/middlewares/WithAuth"; -import {parse} from "next-useragent"; - -const user_type = 2; -export default function EditLoanRequest() { - return ( - - {/**/} - {/* */} - {/**/} - - ); -} - -export async function getServerSideProps({req, locale}) { - const {isBot} = parse(req.headers["user-agent"]); - return { - props: { - messages: (await import(`&/locales/${locale}/app.json`)).default, - title: "EditLoanRequest.edit_loan_request_page", - isBot, - }, - }; -} diff --git a/src/pages/dashboard/refahi/followUp-loan/index.jsx b/src/pages/dashboard/refahi/followUp-loan/index.jsx deleted file mode 100644 index f679299..0000000 --- a/src/pages/dashboard/refahi/followUp-loan/index.jsx +++ /dev/null @@ -1,24 +0,0 @@ -import WithAuthMiddleware from "@/middlewares/WithAuth"; -import {parse} from "next-useragent"; - -const user_type = 2; -export default function FollowUpLoan() { - return ( - - {/**/} - {/* */} - {/**/} - - ); -} - -export async function getServerSideProps({req, locale}) { - const {isBot} = parse(req.headers["user-agent"]); - return { - props: { - messages: (await import(`&/locales/${locale}/app.json`)).default, - title: "LoanFollowUp.loan_follow_up_page", - isBot, - }, - }; -} diff --git a/src/pages/login.jsx b/src/pages/login.jsx index 5cac2bc..63e88c7 100644 --- a/src/pages/login.jsx +++ b/src/pages/login.jsx @@ -1,10 +1,10 @@ import LoginComponent from "@/components/login"; -import WithoutAuthMiddleware from "@/middlewares/WithoutAuth"; import {parse} from "next-useragent"; +import {WithoutAuthMiddleware} from "@witel/webapp-builder"; export default function Login() { return ( - + ); diff --git a/src/pages/register/index.jsx b/src/pages/register/index.jsx index 6d8d4d6..3f078d7 100644 --- a/src/pages/register/index.jsx +++ b/src/pages/register/index.jsx @@ -1,10 +1,10 @@ import RegisterComponent from "@/components/register"; -import WithoutAuthMiddleware from "@/middlewares/WithoutAuth"; import {parse} from "next-useragent"; +import {WithoutAuthMiddleware} from "@witel/webapp-builder"; export default function Register() { return ( - + );