Compare commits

...

21 Commits

Author SHA1 Message Date
victorAnumudu c889c0b093 suspense loading added and made socket to trigger after login 2024-11-23 05:56:17 +01:00
ameye 6b95b8d1ce Merge branch 'resource-page-fix' of WrenchBoard/Users-Wrench into master 2024-11-22 13:42:03 +00:00
ameye c60debfbba Merge branch 'wallet-log-removal' of WrenchBoard/Users-Wrench into master 2024-11-22 13:41:10 +00:00
victorAnumudu cee984e574 removal of unused var 2024-11-22 11:17:24 +01:00
victorAnumudu bf28e501a9 resources bug fix 2024-11-22 08:35:36 +01:00
victorAnumudu 441b21ec35 resources bug fix 2024-11-22 08:28:57 +01:00
CHIEFSOFT\ameye 5f8acf0d7d Added generate source map 2024-11-21 16:43:56 -05:00
victorAnumudu aaf98caf19 Merge master into wallet-log-removal 2024-11-21 19:22:07 +01:00
Victor 3326a61a1f log removal 2024-11-21 19:17:36 +01:00
CHIEFSOFT\ameye 5d4033348c Removed deebug tools 2024-11-21 12:16:36 -05:00
ameye 9fb7bb3ed9 Merge branch 'build_bug_fix' of WrenchBoard/Users-Wrench into master 2024-11-21 17:11:45 +00:00
CHIEFSOFT\ameye 4e9f95e59e new alphine 2024-11-20 23:08:14 -05:00
CHIEFSOFT\ameye a35394c546 fix lazy load 2024-11-20 22:06:58 -05:00
CHIEFSOFT\ameye 5e1c22674a correct files 2024-11-20 21:51:07 -05:00
CHIEFSOFT\ameye 1f58eec668 Dev test 2024-11-20 21:47:48 -05:00
CHIEFSOFT\ameye a161453752 run in sh 2024-11-20 21:35:57 -05:00
CHIEFSOFT\ameye 823fea91fb routes issues 2024-11-20 21:32:44 -05:00
CHIEFSOFT\ameye ff88b5ddb2 non lazy 2024-11-20 21:28:11 -05:00
CHIEFSOFT\ameye 55c99f1c33 Added lazy loading 2024-11-20 21:13:28 -05:00
CHIEFSOFT\ameye 334357bdc1 user web 2024-11-20 14:43:01 -05:00
CHIEFSOFT\ameye 4ef031a03f tesmpoary reomved 2024-11-20 12:39:46 -05:00
23 changed files with 314 additions and 284 deletions
+1
View File
@@ -1,4 +1,5 @@
SKIP_PREFLIGHT_CHECK=true SKIP_PREFLIGHT_CHECK=true
REACT_APP_NODE_ENV="development"
REACT_APP_FACEBOOK="https://www.facebook.com/profile.php?id=100066498622246" REACT_APP_FACEBOOK="https://www.facebook.com/profile.php?id=100066498622246"
REACT_APP_TWITTER="https://twitter.com/fluxtra" REACT_APP_TWITTER="https://twitter.com/fluxtra"
+11 -16
View File
@@ -1,4 +1,5 @@
SKIP_PREFLIGHT_CHECK=true SKIP_PREFLIGHT_CHECK=true
REACT_APP_NODE_ENV="development"
REACT_APP_FACEBOOK="https://www.facebook.com/profile.php?id=100066498622246" REACT_APP_FACEBOOK="https://www.facebook.com/profile.php?id=100066498622246"
REACT_APP_TWITTER="https://twitter.com/fluxtra" REACT_APP_TWITTER="https://twitter.com/fluxtra"
@@ -9,15 +10,15 @@ REACT_APP_APPSITE="https://myfitapp.mermsemr.com"
# REACT_APP_AUX_ENDPOINT="http://10.20.30.32:9083/svs/user" # REACT_APP_AUX_ENDPOINT="http://10.20.30.32:9083/svs/user"
# REACT_APP_USERS_ENDPOINT="http://10.20.30.32:9083/svs/user" # REACT_APP_USERS_ENDPOINT="http://10.20.30.32:9083/svs/user"
#REACT_APP_AUX_ENDPOINT="https://apigate.orion.g1.wrenchboard.com/svs/user" # REACT_APP_AUX_ENDPOINT="https://apigate.lotus.g1.wrenchboard.com/svs/user"
#REACT_APP_USERS_ENDPOINT="https://apigate.orion.g1.wrenchboard.com/svs/user" # REACT_APP_USERS_ENDPOINT="https://apigate.lotus.g1.wrenchboard.com/svs/user"
REACT_APP_AUX_ENDPOINT="https://apigate.orion.g1.wrenchboard.com/en/wrench/api/v1" REACT_APP_AUX_ENDPOINT="https://apigate.lotus.g1.wrenchboard.com/en/wrench/api/v1"
REACT_APP_USERS_ENDPOINT="https://apigate.orion.g1.wrenchboard.com/en/wrench/api/v1" REACT_APP_USERS_ENDPOINT="https://apigate.lotus.g1.wrenchboard.com/en/wrench/api/v1"
REACT_APP_ENDPOINT_KEY="WRENCH-BOARD-2024" REACT_APP_ENDPOINT_KEY="WRENCH-BOARD-2024"
#SOCKETS ENDS #SOCKETS ENDS
REACT_APP_PRIMARY_SOCKET="https://socket.wrenchboard.com" REACT_APP_PRIMARY_SOCKET="https://socket-dev.wrenchboard.com"
#"https://devapi.mermsemr.com/en/desktop/api/v2/myfituser" #"https://devapi.mermsemr.com/en/desktop/api/v2/myfituser"
@@ -35,20 +36,13 @@ REACT_APP_RESET_START_ERROR_TIMEOUT=3000
#NUMBER OF ITEMS PER PAGE #NUMBER OF ITEMS PER PAGE
REACT_APP_ITEM_PER_PAGE=5 REACT_APP_ITEM_PER_PAGE=5
#apigate.orion.g1.wrenchboard.com:76.209.103.227 #apigate.lotus.g1.wrenchboard.com:76.209.103.227
#apigate.orion.g1.wrenchboard.com:76.209.103.227 #apigate.orion.g1.wrenchboard.com:76.209.103.227
REACT_APP_GOOGLE_CLIENT_ID=817021856543-ad9nsjgdpsu2s2jrl63j3ihrv7lbf6ma.apps.googleusercontent.com REACT_APP_GOOGLE_CLIENT_ID=817021856543-ad9nsjgdpsu2s2jrl63j3ihrv7lbf6ma.apps.googleusercontent.com
REACT_APP_GOOGLE_CLIENT_SECRET=aozK_2G8UjaCmLgPPkv9abIm REACT_APP_GOOGLE_CLIENT_SECRET=aozK_2G8UjaCmLgPPkv9abIm
REACT_APP_GOOGLE_CLIENT_SCOPE="https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile" REACT_APP_GOOGLE_CLIENT_SCOPE="https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"
REACT_APP_GOOGLE_REDIRECT_URL=https://users.wrenchboard.com/login/auth/ REACT_APP_GOOGLE_REDIRECT_URL=http://localhost:9082/login/auth/
REACT_APP_FACEBOOK_CLIENT_ID2=390204307987009
REACT_APP_FACEBOOK_CLIENT_SECRET2=19f778e312f2ab96d147bacb612910c2
REACT_APP_FACEBOOK_CLIENT_SCOPE="email,public_profile"
REACT_APP_FACEBOOK_REDIRECT_URL="https://users.wrenchboard.com/login/auth/flogin"
DISABLE_ESLINT_PLUGIN=true
#File Handling #File Handling
REACT_APP_MAX_FILE_SIZE=1048576 REACT_APP_MAX_FILE_SIZE=1048576
@@ -56,6 +50,7 @@ REACT_APP_MAX_VIDEO_FILE_SIZE=31457280
REACT_APP_TOTAL_NUM_FILE=4 REACT_APP_TOTAL_NUM_FILE=4
REACT_APP_LOGOUT_TEXT="Sign Out" REACT_APP_LOGOUT_TEXT="Sign Out"
REACT_APP_APPLE_SOCIAL_LOGIN=0 REACT_APP_APPLE_SOCIAL_LOGIN=0
REACT_APP_LINKEDIN_SOCIAL_LOGIN=0 REACT_APP_LINKEDIN_SOCIAL_LOGIN=0
@@ -94,7 +89,7 @@ REACT_APP_SHOW_ACCOUNT_DASH=1
REACT_APP_SHOW_SLIDER_BANNERS=0 REACT_APP_SHOW_SLIDER_BANNERS=0
# FOR MEDIA LINK # FOR MEDIA LINK
REACT_APP_MEDIA_LINK='https://media.wrenchboard.com' REACT_APP_MEDIA_LINK='https://dev-media.wrenchboard.com'
# FOR FAMILY GAME LINK # FOR FAMILY GAME LINK
REACT_APP_FAM_GAME_LINK='https://games.wrenchboard.com' REACT_APP_FAM_GAME_LINK='https://games.wrenchboard.com'
@@ -103,4 +98,4 @@ REACT_APP_FAM_GAME_LINK='https://games.wrenchboard.com'
REACT_APP_CUSTOMTIMER=90 REACT_APP_CUSTOMTIMER=90
#SHOW OR HIDE MY PAGE LINK ROUTE #SHOW OR HIDE MY PAGE LINK ROUTE
REACT_APP_SHOW_USER_PAGE=0 REACT_APP_SHOW_USER_PAGE=1
+1
View File
@@ -1,4 +1,5 @@
SKIP_PREFLIGHT_CHECK=true SKIP_PREFLIGHT_CHECK=true
REACT_APP_NODE_ENV="production"
REACT_APP_FACEBOOK="https://www.facebook.com/profile.php?id=100066498622246" REACT_APP_FACEBOOK="https://www.facebook.com/profile.php?id=100066498622246"
REACT_APP_TWITTER="https://twitter.com/fluxtra" REACT_APP_TWITTER="https://twitter.com/fluxtra"
+5 -2
View File
@@ -1,5 +1,8 @@
# pull the base image # pull the base image
FROM node:alpine #FROM node:alpine
FROM node:20.11.0-alpine
# Build args # Build args
ARG NODE_ENV ARG NODE_ENV
@@ -26,7 +29,7 @@ COPY nginx.conf ./
COPY run.sh ./ COPY run.sh ./
RUN npm install --legacy-peer-deps # RUN npm install --legacy-peer-deps
# add app # add app
COPY . ./ COPY . ./
+3 -2
View File
@@ -3,6 +3,7 @@
"version": "0.2.0", "version": "0.2.0",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@fvilers/disable-react-devtools": "^1.3.0",
"@react-oauth/google": "^0.11.0", "@react-oauth/google": "^0.11.0",
"@reduxjs/toolkit": "^1.8.2", "@reduxjs/toolkit": "^1.8.2",
"@tailwindcss/line-clamp": "^0.3.1", "@tailwindcss/line-clamp": "^0.3.1",
@@ -36,8 +37,8 @@
"yup": "^1.1.1" "yup": "^1.1.1"
}, },
"scripts": { "scripts": {
"start": "react-scripts start -e .env.production", "start": "react-scripts start -e .env.development",
"build": "react-scripts build -e .env.production", "build": "GENERATE_SOURCEMAP=false react-scripts build -e .env.production",
"test": "react-scripts test", "test": "react-scripts test",
"eject": "react-scripts eject" "eject": "react-scripts eject"
}, },
+2 -2
View File
@@ -1,6 +1,6 @@
{ {
"short_name": "React App", "short_name": "WrenchBoard App",
"name": "Create React App Sample", "name": "WrenchBoard User Web",
"icons": [], "icons": [],
"start_url": ".", "start_url": ".",
"display": "standalone", "display": "standalone",
+3 -2
View File
@@ -13,8 +13,9 @@ else
# build the app and serve it via nginx # build the app and serve it via nginx
echo "Production build" echo "Production build"
npm install --legacy-peer-deps npm install --legacy-peer-deps
#npm run build npm run build
npm start # Testing sometimes
# npm run start
nginx -g 'daemon off;' -c /usr/src/app/nginx.conf nginx -g 'daemon off;' -c /usr/src/app/nginx.conf
nginx -c /usr/src/app/nginx.conf nginx -c /usr/src/app/nginx.conf
fi fi
+15 -5
View File
@@ -1,23 +1,33 @@
import {Suspense, lazy} from 'react'
import { Navigate, useLocation } from "react-router-dom"; import { Navigate, useLocation } from "react-router-dom";
import Routers from "./Routers"; // import Routers from "./Routers";
// import SocketIOContextProvider from "./components/Contexts/SocketIOContext";
import Toaster from "./components/Helpers/Toaster"; import Toaster from "./components/Helpers/Toaster";
import Default from "./components/Partials/Default"; import Default from "./components/Partials/Default";
import SocketIOContextProvider from "./components/Contexts/SocketIOContext";
import { disableReactDevTools } from '@fvilers/disable-react-devtools';
import LoadingSpinner from './components/Spinners/LoadingSpinner';
if (process.env.REACT_APP_NODE_ENV === 'production') {
disableReactDevTools();
}
const Routers = lazy(()=>import('./Routers'))
function App() { function App() {
const { pathname } = useLocation(); const { pathname } = useLocation();
return ( return (
<Default> <Default>
<SocketIOContextProvider> {/* <SocketIOContextProvider> */}
<> <>
{pathname.startsWith("/@") ? ( {pathname.startsWith("/@") ? (
<Navigate to="/app" replace={true} /> <Navigate to="/app" replace={true} />
) : ( ) : (
<Routers /> <Suspense fallback={<LoadingSpinner size="32" color="sky-blue" height="h-screen" />}>
<Routers />
</Suspense>
)} )}
<Toaster /> <Toaster />
</> </>
</SocketIOContextProvider> {/* </SocketIOContextProvider> */}
</Default> </Default>
); );
} }
+160 -155
View File
@@ -1,76 +1,79 @@
import { Route, Routes } from "react-router-dom"; import { Route, Routes } from "react-router-dom";
import FourZeroFour from "./components/FourZeroFour"; import { lazy } from "react";
import ScrollToTop from "./components/Helpers/ScrollToTop";
import StartJob from "./components/MyJobs/StartJob";
import Notification from "./components/Notification";
import AuthRoute from "./middleware/AuthRoute";
import AppDownloadPage from "./views/AppDownloadPage";
import AppleRedirectPage from "./views/AppleRedirectPage";
import AuthProfilePage from "./views/AuthProfilePage";
import AuthRedirect from "./views/AuthRedirect";
import BlogPage from "./views/BlogPage";
import CalendarPage from "./views/CalendarPage";
import CollectionItemPage from "./views/CollectionItemPage";
import FacebookRedirect from "./views/FacebookRedirect";
import FamilyAccPage from "./views/FamilyAccPage";
import FamilyManagePage from "./views/FamilyManagePage";
import FamilyMarketPage from "./views/FamilyMarketPage";
import FamilySettingsPage from "./views/FamilySettingsPage";
import ForgotPasswordPages from "./views/ForgotPasswordPages";
import ForgotPasswordPagesTwo from "./views/ForgotPasswordPagesTwo";
import HistoryPage from "./views/HistoryPage";
import HomePages from "./views/HomePages";
import JobGroupsPage from "./views/JobGroupsPage";
import LndPage from "./views/LndPage";
import LoginPage from "./views/LoginPage";
import LoginPageTwo from "./views/LoginPageTwo";
import LoginLandingPage from './views/LoginLandingPage' import LoginLandingPage from './views/LoginLandingPage'
import ManageActiveJobs from "./views/ManageActiveJobs"; import LoginPage from "./views/LoginPage";
import ManageInterestOfferPage from "./views/ManageInterestOfferPage"; import HomePages from "./views/HomePages";
import MarketPlacePage from "./views/MarketPlacePage"; import SocketConnection from "./middleware/SocketConnection";
import MyActiveJobsPage from "./views/MyActiveJobsPage";
import MyCouponPage from "./views/MyCouponPage";
import MyJobsPage from "./views/MyJobsPage"; const FourZeroFour = lazy(() => import("./components/FourZeroFour"));
import MyOffersPage from "./views/MyOffersPage"; const ScrollToTop = lazy(() => import("./components/Helpers/ScrollToTop"));
import MyPastDueJobsPage from "./views/MyPastDueJobsPage"; const StartJob = lazy(() => import("./components/MyJobs/StartJob"));
import MyReviewDueJobsPage from "./views/MyReviewDueJobsPage"; const Notification = lazy(() => import("./components/Notification"));
import MyTaskPage from "./views/MyTaskPage"; const AuthRoute = lazy(() => import("./middleware/AuthRoute"));
import MyWaitingJobsPage from "./views/MyWaitingJobsPage"; const AppDownloadPage = lazy(() => import("./views/AppDownloadPage"));
import MyWalletPage from "./views/MyWalletPage"; const AppleRedirectPage = lazy(() => import("./views/AppleRedirectPage"));
import OffersInterestPage from "./views/OffersInterestPage"; const AuthProfilePage = lazy(() => import("./views/AuthProfilePage"));
import ReferralPage from "./views/ReferralPage"; const AuthRedirect = lazy(() => import("./views/AuthRedirect"));
import RemindersPage from "./views/RemindersPage"; const BlogPage = lazy(() => import("./views/BlogPage"));
import ResourcePage from "./views/ResourcePage"; const CalendarPage = lazy(() => import("./views/CalendarPage"));
import SavedPage from "./views/SavedPage"; const CollectionItemPage = lazy(() => import("./views/CollectionItemPage"));
import SellPage from "./views/SellPage"; const FacebookRedirect = lazy(() => import("./views/FacebookRedirect"));
import SettingsPage from "./views/SettingsPage"; const FamilyManagePage = lazy(() => import("./views/FamilyManagePage"));
import SignupPage from "./views/SignupPage"; const FamilyMarketPage = lazy(() => import("./views/FamilyMarketPage"));
import SignupPageTwo from "./views/SignupPageTwo";
import TrackingPage from "./views/TrackingPage"; const ForgotPasswordPages = lazy(()=> import("./views/ForgotPasswordPages"));
import UpdatePasswordPages from "./views/UpdatePasswordPages"; const ForgotPasswordPagesTwo = lazy(()=> import("./views/ForgotPasswordPagesTwo"));
import UpdatePasswordPagesTwo from "./views/UpdatePasswordPagesTwo"; const HistoryPage = lazy(()=> import("./views/HistoryPage"));
import UploadProductPage from "./views/UploadProductPage"; const JobGroupsPage = lazy(()=> import("./views/JobGroupsPage"));
import UserProfilePage from "./views/UserProfilePage"; const LndPage = lazy(()=> import("./views/LndPage"));
import VerifyLinkPages from "./views/VerifyLinkPages"; const LoginPageTwo = lazy(()=> import("./views/LoginPageTwo"));
import VerifyLinkPagesTwo from "./views/VerifyLinkPagesTwo"; const ManageActiveJobs = lazy(()=> import("./views/ManageActiveJobs"));
import VerifyPasswordPages from "./views/VerifyPasswordPages"; const ManageInterestOfferPage = lazy(()=> import("./views/ManageInterestOfferPage"));
import VerifyPasswordPagesTwo from "./views/VerifyPasswordPagesTwo"; const MarketPlacePage = lazy(()=> import("./views/MarketPlacePage"));
import VerifyYouPages from "./views/VerifyYouPages"; const MyActiveJobsPage = lazy(()=> import("./views/MyActiveJobsPage"));
import VerifyYouPagesTwo from "./views/VerifyYouPagesTwo"; const MyCouponPage = lazy(()=> import("./views/MyCouponPage"));
import YourPages from "./views/YourPage_"; const MyJobsPage = lazy(()=> import("./views/MyJobsPage"));
import ParentWaitingPage from "./views/ParentWaitingPage"; const MyOffersPage = lazy(()=> import("./views/MyOffersPage"));
import FamilyPendingOfferPage from "./views/FamilyPendingOfferPage"; const MyPastDueJobsPage = lazy(()=> import("./views/MyPastDueJobsPage"));
import FamBlogPage from "./views/FamBlogPage" const MyReviewDueJobsPage = lazy(()=> import("./views/MyReviewDueJobsPage"));
import FamAIQuestionPage from "./views/FamAIQuestionPage" const MyTaskPage = lazy(()=> import("./views/MyTaskPage"));
import FamMyFilesPage from "./views/FamMyFilesPage" const MyWaitingJobsPage = lazy(()=> import("./views/MyWaitingJobsPage"));
import FamWorkInProgressPage from "./views/FamWorkInProgressPage"; const MyWalletPage = lazy(()=> import("./views/MyWalletPage"));
import MyPastDueTasksPage from "./views/MyPastDueTasksPage"; const OffersInterestPage = lazy(()=> import("./views/OffersInterestPage"));
import FamilyWalletPage from "./views/FamilyWalletPage"; const ReferralPage = lazy(()=> import("./views/ReferralPage"));
import FamilyActivitiesPage from "./views/FamilyActivitiesPage"; const RemindersPage = lazy(()=> import("./views/RemindersPage"));
import FamGamesPage from "./views/FamGamesPage"; const ResourcePage = lazy(()=> import("./views/ResourcePage"));
import FamilyRoutesPage from "./views/FamilyRoutesPage"; const SavedPage = lazy(()=> import("./views/SavedPage"));
import PromoPage from "./views/PromoPage"; const SellPage = lazy(()=> import("./views/SellPage"));
import LearnMorePage from "./views/LearnMorePage"; const SettingsPage = lazy(()=> import("./views/SettingsPage"));
const SignupPage = lazy(()=> import("./views/SignupPage"));
const SignupPageTwo = lazy(()=> import("./views/SignupPageTwo"));
const TrackingPage = lazy(()=> import("./views/TrackingPage"));
const UpdatePasswordPages = lazy(()=> import("./views/UpdatePasswordPages"));
const UpdatePasswordPagesTwo = lazy(()=> import("./views/UpdatePasswordPagesTwo"));
const UploadProductPage = lazy(()=> import("./views/UploadProductPage"));
const UserProfilePage = lazy(()=> import("./views/UserProfilePage"));
const VerifyLinkPages = lazy(()=> import("./views/VerifyLinkPages"));
const VerifyLinkPagesTwo = lazy(()=> import("./views/VerifyLinkPagesTwo"));
const VerifyPasswordPages = lazy(()=> import("./views/VerifyPasswordPages"));
const VerifyPasswordPagesTwo = lazy(()=> import("./views/VerifyPasswordPagesTwo"));
const VerifyYouPages = lazy(()=> import("./views/VerifyYouPages"));
const VerifyYouPagesTwo = lazy(()=> import("./views/VerifyYouPagesTwo"));
const YourPages = lazy(()=> import("./views/YourPage_"));
const ParentWaitingPage = lazy(()=> import("./views/ParentWaitingPage"));
const FamilyPendingOfferPage = lazy(()=> import("./views/FamilyPendingOfferPage"));
const FamBlogPage = lazy(()=> import("./views/FamBlogPage"));
const FamAIQuestionPage = lazy(()=> import("./views/FamAIQuestionPage"));
const FamMyFilesPage = lazy(()=> import("./views/FamMyFilesPage"));
const FamWorkInProgressPage = lazy(()=> import("./views/FamWorkInProgressPage"));
const MyPastDueTasksPage = lazy(()=> import("./views/MyPastDueTasksPage"));
const FamilyWalletPage = lazy(()=> import("./views/FamilyWalletPage"));
const LearnMorePage = lazy(()=> import("./views/LearnMorePage"));
const FamGamesPage = lazy(()=> import("./views/FamGamesPage"));
const FamilyRoutesPage = lazy(()=> import("./views/FamilyRoutesPage"));
const PromoPage = lazy(()=> import("./views/PromoPage"));
export default function Routers() { export default function Routers() {
return ( return (
@@ -127,94 +130,96 @@ export default function Routers() {
<Route exact path="/app" element={<AppDownloadPage />} /> <Route exact path="/app" element={<AppDownloadPage />} />
{/* private route */} {/* private route */}
<Route element={<AuthRoute />}> <Route element={<SocketConnection />}>
<Route exact path="/" element={<HomePages />} /> <Route element={<AuthRoute />}>
{/* <Route exact path="/active-bids" element={<AcitveBidsPage />} /> <Route exact path="/" element={<HomePages />} />
<Route exact path="/notification" element={<Notification />} /> {/* <Route exact path="/active-bids" element={<AcitveBidsPage />} />
<Route exact path="/market-place" element={<MarketPlacePage />} /> <Route exact path="/notification" element={<Notification />} />
<Route exact path="/shop-details" element={<ShopDetailsPage />} /> <Route exact path="/market-place" element={<MarketPlacePage />} />
<Route exact path="/my-collection" element={<MyCollection />} />*/} <Route exact path="/shop-details" element={<ShopDetailsPage />} />
<Route exact path="/reminders" element={<RemindersPage />} /> <Route exact path="/my-collection" element={<MyCollection />} />*/}
<Route exact path="/tracking" element={<TrackingPage />} /> <Route exact path="/reminders" element={<RemindersPage />} />
<Route exact path="/calendar" element={<CalendarPage />} /> <Route exact path="/tracking" element={<TrackingPage />} />
<Route exact path="/resources" element={<ResourcePage />} /> <Route exact path="/calendar" element={<CalendarPage />} />
<Route exact path="/my-wallet/*" element={<MyWalletPage />} /> <Route exact path="/resources" element={<ResourcePage />} />
<Route exact path="/family-wallet" element={<FamilyWalletPage />} /> <Route exact path="/my-wallet/*" element={<MyWalletPage />} />
<Route exact path="/my-coupon" element={<MyCouponPage />} /> <Route exact path="/family-wallet" element={<FamilyWalletPage />} />
<Route exact path="/notification" element={<Notification />} /> <Route exact path="/my-coupon" element={<MyCouponPage />} />
<Route exact path="/market-place" element={<MarketPlacePage />} /> <Route exact path="/notification" element={<Notification />} />
<Route exact path="/market" element={<MarketPlacePage />} /> <Route exact path="/market-place" element={<MarketPlacePage />} />
<Route exact path="/familymarket" element={<FamilyMarketPage />} /> <Route exact path="/market" element={<MarketPlacePage />} />
<Route exact path="/suggested" element={<ParentWaitingPage />} /> <Route exact path="/familymarket" element={<FamilyMarketPage />} />
<Route exact path="/parentwaiting" element={<ParentWaitingPage />} /> <Route exact path="/suggested" element={<ParentWaitingPage />} />
<Route exact path="/pending" element={<FamilyPendingOfferPage />} /> <Route exact path="/parentwaiting" element={<ParentWaitingPage />} />
<Route exact path="/fam-blog" element={<FamBlogPage />} /> <Route exact path="/pending" element={<FamilyPendingOfferPage />} />
<Route exact path="/ai-question" element={<FamAIQuestionPage />} /> <Route exact path="/fam-blog" element={<FamBlogPage />} />
<Route exact path="/myfiles" element={<FamMyFilesPage />} /> <Route exact path="/ai-question" element={<FamAIQuestionPage />} />
<Route exact path="/ai-lab" element={<FamAIQuestionPage />} /> <Route exact path="/myfiles" element={<FamMyFilesPage />} />
<Route exact path="/fam-games" element={<FamGamesPage />} /> <Route exact path="/ai-lab" element={<FamAIQuestionPage />} />
<Route exact path="/work-in-progress" element={<FamWorkInProgressPage />} /> <Route exact path="/fam-games" element={<FamGamesPage />} />
<Route exact path="/work-in-progress" element={<FamWorkInProgressPage />} />
<Route exact path="/pastdue" element={<MyPastDueTasksPage />} /> <Route exact path="/pastdue" element={<MyPastDueTasksPage />} />
<Route exact path="/notification" element={<Notification />} /> <Route exact path="/notification" element={<Notification />} />
<Route exact path="/mytask" element={<MyTaskPage />} /> <Route exact path="/mytask" element={<MyTaskPage />} />
<Route exact path="/myjobs" element={<MyJobsPage />} /> <Route exact path="/myjobs" element={<MyJobsPage />} />
{/* <Route exact path="/add-job" element={<AddJobPage />} /> */} {/* <Route exact path="/add-job" element={<AddJobPage />} /> */}
<Route exact path="/my-active-jobs" element={<MyActiveJobsPage />} /> <Route exact path="/my-active-jobs" element={<MyActiveJobsPage />} />
<Route <Route
exact exact
path="/my-pastdue-jobs" path="/my-pastdue-jobs"
element={<MyPastDueJobsPage />} element={<MyPastDueJobsPage />}
/> />
<Route exact path="/my-offers" element={<MyOffersPage />} /> <Route exact path="/my-offers" element={<MyOffersPage />} />
<Route exact path="/pend-interest" element={<MyWaitingJobsPage />} /> <Route exact path="/pend-interest" element={<MyWaitingJobsPage />} />
<Route <Route
exact exact
path="/my-review-jobs" path="/my-review-jobs"
element={<MyReviewDueJobsPage />} element={<MyReviewDueJobsPage />}
/> />
{/* <Route exact path='/acc-family' element={<FamilyAccPage />} /> {/* <Route exact path='/acc-family' element={<FamilyAccPage />} />
<Route exact path="/acc-family/activities" element={<FamilyActivitiesPage />} /> <Route exact path="/acc-family/activities" element={<FamilyActivitiesPage />} />
<Route exact path="/acc-family/familysettings" element={<FamilySettingsPage />} /> */} <Route exact path="/acc-family/familysettings" element={<FamilySettingsPage />} /> */}
<Route path='/acc-family/*' element={<FamilyRoutesPage />} /> <Route path='/acc-family/*' element={<FamilyRoutesPage />} />
<Route exact path="/manage-family" element={<FamilyManagePage />} /> <Route exact path="/manage-family" element={<FamilyManagePage />} />
<Route exact path="/start-job" element={<StartJob />} /> <Route exact path="/start-job" element={<StartJob />} />
<Route exact path="/yourpage" element={<YourPages />} /> <Route exact path="/yourpage" element={<YourPages />} />
<Route <Route
exact exact
path="/manage-active-job" path="/manage-active-job"
element={<ManageActiveJobs />} element={<ManageActiveJobs />}
/> />
<Route exact path="/blog-page" element={<BlogPage />} /> <Route exact path="/blog-page" element={<BlogPage />} />
<Route <Route
exact exact
path="/offer-interest" path="/offer-interest"
element={<OffersInterestPage />} element={<OffersInterestPage />}
/> />
<Route <Route
exact exact
path="/manage-offer" path="/manage-offer"
element={<ManageInterestOfferPage />} element={<ManageInterestOfferPage />}
/> />
<Route <Route
exact exact
path="/my-collection/collection-item" path="/my-collection/collection-item"
element={<CollectionItemPage />} element={<CollectionItemPage />}
/> />
<Route exact path="/sell" element={<SellPage />} /> <Route exact path="/sell" element={<SellPage />} />
<Route exact path="/saved" element={<SavedPage />} /> <Route exact path="/saved" element={<SavedPage />} />
<Route exact path="/history" element={<HistoryPage />} /> <Route exact path="/history" element={<HistoryPage />} />
<Route exact path="/learnmore" element={<LearnMorePage />} /> <Route exact path="/learnmore" element={<LearnMorePage />} />
{/*<Route exact path="/upload-product" element={<UploadProductPage />} />*/} {/*<Route exact path="/upload-product" element={<UploadProductPage />} />*/}
<Route exact path="/my-uploads" element={<UploadProductPage />} /> <Route exact path="/my-uploads" element={<UploadProductPage />} />
<Route exact path="/profile" element={<AuthProfilePage />} /> <Route exact path="/profile" element={<AuthProfilePage />} />
<Route exact path="/user-profile" element={<UserProfilePage />} /> <Route exact path="/user-profile" element={<UserProfilePage />} />
<Route exact path="/settings" element={<SettingsPage />} /> <Route exact path="/settings" element={<SettingsPage />} />
<Route exact path="/referral" element={<ReferralPage />} /> <Route exact path="/referral" element={<ReferralPage />} />
<Route exact path="/job-groups" element={<JobGroupsPage />} /> <Route exact path="/job-groups" element={<JobGroupsPage />} />
</Route>
</Route> </Route>
<Route path="*" element={<FourZeroFour />} /> <Route path="*" element={<FourZeroFour />} />
</Routes> </Routes>
+5 -5
View File
@@ -3,7 +3,7 @@ import {
useDispatch, useDispatch,
useSelector, useSelector,
usersService, usersService,
initialValues as IV, // initialValues as IV,
initialReqState, initialReqState,
useState, useState,
tableReload, tableReload,
@@ -75,7 +75,7 @@ function AddJob({ popUpHandler, categories }) {
// For form initial values // For form initial values
const initialValues = { const initialValues = {
// initial values for formik // initial values for formik
country: walletDetails.data.length == 1 ? walletDetails.data[0].country : '', country: walletDetails.data.length === 1 ? walletDetails.data[0].country : '',
price: "", price: "",
title: "", title: "",
description: "", description: "",
@@ -117,7 +117,7 @@ function AddJob({ popUpHandler, categories }) {
className={`input-field p-2 mt-3 rounded-full placeholder:text-base text-dark-gray w-full h-[42px] bg-slate-100 focus:ring-0 focus:outline-none border`} className={`input-field p-2 mt-3 rounded-full placeholder:text-base text-dark-gray w-full h-[42px] bg-slate-100 focus:ring-0 focus:outline-none border`}
onChange={props.handleChange} onChange={props.handleChange}
onBlur={props.handleBlur} onBlur={props.handleBlur}
disabled={walletDetails.data.length == 1} disabled={walletDetails.data.length === 1}
> >
{walletDetails?.loading ? ( {walletDetails?.loading ? (
<option className="text-slate-500 text-lg" value=""> <option className="text-slate-500 text-lg" value="">
@@ -138,7 +138,7 @@ function AddJob({ popUpHandler, categories }) {
</option> </option>
))} ))}
</> </>
) : walletDetails.data.length == 1 ? ) : walletDetails.data.length === 1 ?
<> <>
{walletDetails.data?.map((item, index) => ( {walletDetails.data?.map((item, index) => (
<option <option
@@ -367,7 +367,7 @@ function AddJob({ popUpHandler, categories }) {
{/* ERROR DISPLAY AND SUBMIT BUTTON */} {/* ERROR DISPLAY AND SUBMIT BUTTON */}
<div className="content-footer w-full"> <div className="content-footer w-full">
{/* error or success display */} {/* error or success display */}
{requestStatus.message != "" && {requestStatus.message !== "" &&
(!requestStatus.status ? ( (!requestStatus.status ? (
<div <div
className={`relative p-4 my-4 text-[#912741] bg-[#fcd9e2] border-[#fbc6d3] mb-4 rounded-[0.475rem] text-md font-light leading-[19.5px] text-[13px]`} className={`relative p-4 my-4 text-[#912741] bg-[#fcd9e2] border-[#fbc6d3] mb-4 rounded-[0.475rem] text-md font-light leading-[19.5px] text-[13px]`}
+2 -2
View File
@@ -6,7 +6,7 @@ import WrenchBoard from "../../assets/images/wrenchboard-logo-text.png";
import DarkModeContext from "../Contexts/DarkModeContext"; import DarkModeContext from "../Contexts/DarkModeContext";
export default function LoginLayout({ slogan, children }) { export default function LoginLayout({ slogan, children }) {
const bgImg = localImgLoad("images/left-wrenchboard.jpg"); // const bgImg = localImgLoad("images/left-wrenchboard.jpg");
const bgImgNig = localImgLoad("images/wrench-home-back-nigeria.jpg"); const bgImgNig = localImgLoad("images/wrench-home-back-nigeria.jpg");
const bgImgCom = localImgLoad("images/wrench-home-back-common.jpg"); const bgImgCom = localImgLoad("images/wrench-home-back-common.jpg");
@@ -16,7 +16,7 @@ export default function LoginLayout({ slogan, children }) {
<div <div
className={`relative min-h-screen overflow-y-auto bg-cover bg-center flex flex-col items-center`} className={`relative min-h-screen overflow-y-auto bg-cover bg-center flex flex-col items-center`}
style={{ style={{
backgroundImage: `url(${countryMode == "NG" ? bgImgNig : bgImgCom})`, backgroundImage: `url(${countryMode === "NG" ? bgImgNig : bgImgCom})`,
}} }}
> >
<div className="my-5"> <div className="my-5">
+50 -50
View File
@@ -1,63 +1,63 @@
import React, { useState } from "react"; import React from "react";
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
import authProfilePic from "../../../assets/images/auth-profile-picture.png"; import authProfilePic from "../../../assets/images/auth-profile-picture.png";
import profileBanner from "../../../assets/images/profile-cover.png"; import profileBanner from "../../../assets/images/profile-cover.png";
import collections from "../../../data/collectionplan_data.json";
import marketPlace from "../../../data/marketplace_data.json";
import products from "../../../data/product_data.json";
import Layout from "../../Partials/Layout"; import Layout from "../../Partials/Layout";
import ActivitiesTab from "./ActivitiesTab"; import ActivitiesTab from "./ActivitiesTab";
import CollectionTab from "./CollectionTab"; // import collections from "../../../data/collectionplan_data.json";
import CreatedTab from "./CreatedTab"; // import marketPlace from "../../../data/marketplace_data.json";
import HiddenProductsTab from "./HiddenProductsTab"; // import products from "../../../data/product_data.json";
import OnSaleTab from "./OnSaleTab"; // import CollectionTab from "./CollectionTab";
import OwnTab from "./OwnTab"; // import CreatedTab from "./CreatedTab";
// import HiddenProductsTab from "./HiddenProductsTab";
// import OnSaleTab from "./OnSaleTab";
// import OwnTab from "./OwnTab";
export default function AuthProfile() { export default function AuthProfile() {
const onSaleProducts = marketPlace.data; // const onSaleProducts = marketPlace.data;
const CreatedSell = marketPlace.data; // const CreatedSell = marketPlace.data;
const CreatedBits = products.datas; // const CreatedBits = products.datas;
// const mainProducts = products.datas; // const mainProducts = products.datas;
const ownProducts = products.datas; // const ownProducts = products.datas;
const collectionProducts = collections.data; // const collectionProducts = collections.data;
const tabs = [ // const tabs = [
{ // {
id: 1, // id: 1,
name: "onsale", // name: "onsale",
content: "On Sale", // content: "On Sale",
}, // },
{ // {
id: 2, // id: 2,
name: "owned", // name: "owned",
content: "Owned", // content: "Owned",
}, // },
{ // {
id: 3, // id: 3,
name: "created", // name: "created",
content: "Created", // content: "Created",
}, // },
{ // {
id: 4, // id: 4,
name: "hidden", // name: "hidden",
content: "Hidden", // content: "Hidden",
}, // },
{ // {
id: 5, // id: 5,
name: "collection", // name: "collection",
content: "Collection", // content: "Collection",
}, // },
{ // {
id: 6, // id: 6,
name: "activity", // name: "activity",
content: "Activity", // content: "Activity",
}, // },
]; // ];
const [tab, setTab] = useState(tabs[0].name); // const [tab, setTab] = useState(tabs[0].name);
const tabHandler = (value) => { // const tabHandler = (value) => {
setTab(value); // setTab(value);
}; // };
return ( return (
<> <>
<Layout> <Layout>
@@ -1,15 +1,15 @@
import React, { useEffect } from 'react'; import React, { useEffect } from 'react';
import { useLocation, useNavigate } from 'react-router-dom'; import { useLocation, useNavigate } from 'react-router-dom';
import usersService from '../../../services/UsersService'; // import usersService from '../../../services/UsersService';
import {updateUserDetails} from "../../../store/UserDetails"; // import {updateUserDetails} from "../../../store/UserDetails";
import { useDispatch } from "react-redux"; // import { useDispatch } from "react-redux";
import AuthLayout from "../AuthLayout"; import AuthLayout from "../AuthLayout";
function AppleRedirect() { function AppleRedirect() {
const location = useLocation(); const location = useLocation();
const navigate = useNavigate(); const navigate = useNavigate();
const userApi = new usersService(); // const userApi = new usersService();
const dispatch = useDispatch() // const dispatch = useDispatch()
const queryParams = new URLSearchParams(location?.search); const queryParams = new URLSearchParams(location?.search);
const codeResponse = queryParams.get("code"); const codeResponse = queryParams.get("code");
@@ -36,11 +36,11 @@ function AppleRedirect() {
redirect_uri=https%3A//oauth2.example.com/code& redirect_uri=https%3A//oauth2.example.com/code&
grant_type=authorization_code grant_type=authorization_code
*/ */
var reqData = { // var reqData = {
auth_type: "APPLE", // auth_type: "APPLE",
code: codeResponse, // code: codeResponse,
redirect_uri: process.env.REACT_APP_GOOGLE_REDIRECT_URL, // redirect_uri: process.env.REACT_APP_GOOGLE_REDIRECT_URL,
}; // };
// userApi // userApi
// .authStart(reqData) // .authStart(reqData)
// .then((res) => { // .then((res) => {
@@ -58,7 +58,7 @@ function AppleRedirect() {
// navigate('/login', {state: {error: true}}) // navigate('/login', {state: {error: true}})
// console.log(error); // console.log(error);
// }); // });
},[]) },[codeResponse, navigate])
return ( return (
<AuthLayout> <AuthLayout>
<div className='min-h-[70vh]'>Redirecting ... </div> <div className='min-h-[70vh]'>Redirecting ... </div>
@@ -1,4 +1,4 @@
import React, { useEffect } from 'react'; import React, { useMemo, useEffect } from 'react';
import { useDispatch } from "react-redux"; import { useDispatch } from "react-redux";
import { useLocation, useNavigate } from 'react-router-dom'; import { useLocation, useNavigate } from 'react-router-dom';
import usersService from '../../../services/UsersService'; import usersService from '../../../services/UsersService';
@@ -8,7 +8,7 @@ import AuthLayout from "../AuthLayout";
function FbookRedirect() { function FbookRedirect() {
const location = useLocation(); const location = useLocation();
const navigate = useNavigate(); const navigate = useNavigate();
const userApi = new usersService(); const userApi = useMemo(()=> new usersService(),[]);
const dispatch = useDispatch() const dispatch = useDispatch()
const queryParams = new URLSearchParams(location?.search); const queryParams = new URLSearchParams(location?.search);
@@ -52,7 +52,7 @@ function FbookRedirect() {
userApi userApi
.authStart(reqData) .authStart(reqData)
.then((res) => { .then((res) => {
if (res.status == 200 && res.data.internal_return >= 0 && res.data.member_id && res.data.uid && res.data.session) { if (res.status === 200 && res.data.internal_return >= 0 && res.data.member_id && res.data.uid && res.data.session) {
localStorage.setItem("member_id", `${res.data.member_id}`); localStorage.setItem("member_id", `${res.data.member_id}`);
localStorage.setItem("uid", `${res.data.uid}`); localStorage.setItem("uid", `${res.data.uid}`);
localStorage.setItem("session_token", `${res.data.session}`); localStorage.setItem("session_token", `${res.data.session}`);
@@ -66,7 +66,7 @@ function FbookRedirect() {
navigate('/login', {state: {error: true}}) navigate('/login', {state: {error: true}})
console.log(error); console.log(error);
}); });
},[]) },[codeResponse, userApi, dispatch, navigate])
return ( return (
<AuthLayout> <AuthLayout>
<div className='min-h-[70vh]'>Redirecting ... </div> <div className='min-h-[70vh]'>Redirecting ... </div>
@@ -1,4 +1,4 @@
import React, { useEffect } from "react"; import React, { useEffect, useMemo } from "react";
import { useDispatch } from "react-redux"; import { useDispatch } from "react-redux";
import { useLocation, useNavigate } from "react-router-dom"; import { useLocation, useNavigate } from "react-router-dom";
import usersService from "../../../services/UsersService"; import usersService from "../../../services/UsersService";
@@ -8,7 +8,7 @@ import AuthLayout from "../AuthLayout";
function Redirect() { function Redirect() {
const location = useLocation(); const location = useLocation();
const navigate = useNavigate(); const navigate = useNavigate();
const userApi = new usersService(); const userApi = useMemo(()=> new usersService(),[]);
const dispatch = useDispatch(); const dispatch = useDispatch();
const queryParams = new URLSearchParams(location?.search); const queryParams = new URLSearchParams(location?.search);
@@ -40,7 +40,7 @@ function Redirect() {
.authStart(reqData) .authStart(reqData)
.then((res) => { .then((res) => {
if ( if (
res.status == 200 && res.status === 200 &&
res.data.internal_return >= 0 && res.data.internal_return >= 0 &&
res.data.member_id && res.data.member_id &&
res.data.uid && res.data.uid &&
@@ -59,7 +59,7 @@ function Redirect() {
navigate("/login", { state: { error: true } }); navigate("/login", { state: { error: true } });
console.log(error); console.log(error);
}); });
}, []); }, [codeResponse, userApi, dispatch, navigate]);
return ( return (
<AuthLayout> <AuthLayout>
<div className="min-h-[70vh]">Redirecting ... </div> <div className="min-h-[70vh]">Redirecting ... </div>
@@ -38,7 +38,7 @@ export default function ForgotPassword() {
} }
const resetHandler = async () => { const resetHandler = async () => {
if (email == "") { if (email === "") {
setMsgError("An email is required"); setMsgError("An email is required");
return setTimeout(() => { return setTimeout(() => {
setMsgError(null); setMsgError(null);
@@ -1,6 +1,6 @@
import React, { useState } from "react"; import React, { useState } from "react";
import { Link, useNavigate } from "react-router-dom"; import { useNavigate } from "react-router-dom";
import WrenchBoard from "../../../assets/images/wrenchboard-logo-text.png"; // import WrenchBoard from "../../../assets/images/wrenchboard-logo-text.png";
import usersService from "../../../services/UsersService"; import usersService from "../../../services/UsersService";
import InputCom from "../../Helpers/Inputs/InputCom"; import InputCom from "../../Helpers/Inputs/InputCom";
import AuthLayout from "../AuthLayout2"; import AuthLayout from "../AuthLayout2";
@@ -38,7 +38,7 @@ export default function ForgotPassword() {
} }
const resetHandler = async () => { const resetHandler = async () => {
if (email == "") { if (email === "") {
setMsgError("An email is required"); setMsgError("An email is required");
return setTimeout(() => { return setTimeout(() => {
setMsgError(null); setMsgError(null);
+1 -1
View File
@@ -15,7 +15,7 @@ export default function MarketPlace({ commonHeadData }) {
const marketData = jobLists?.result_list; const marketData = jobLists?.result_list;
const categories = jobLists?.categories; const categories = jobLists?.categories;
const image_server = jobLists?.session_image_server; const image_server = jobLists?.session_image_server;
console.log('Lenth', marketData?.length ) // console.log('Lenth', marketData?.length )
useEffect(()=>{ useEffect(()=>{
if(!jobLists.loading && (marketData?.length < 1 || !marketData)){ if(!jobLists.loading && (marketData?.length < 1 || !marketData)){
+4 -2
View File
@@ -1,4 +1,4 @@
import React from "react"; import React ,{Suspense} from "react";
import ReactDOM from "react-dom/client"; import ReactDOM from "react-dom/client";
import { Provider } from "react-redux"; import { Provider } from "react-redux";
import { BrowserRouter } from "react-router-dom"; import { BrowserRouter } from "react-router-dom";
@@ -13,7 +13,9 @@ ReactDOM.createRoot(root).render(
<BrowserRouter> <BrowserRouter>
<Provider store={store}> <Provider store={store}>
<GoogleOAuthProvider clientId={process.env.REACT_APP_GOOGLE_CLIENT_ID}> <GoogleOAuthProvider clientId={process.env.REACT_APP_GOOGLE_CLIENT_ID}>
<App /> <Suspense>
<App />
</Suspense>
</GoogleOAuthProvider> </GoogleOAuthProvider>
</Provider> </Provider>
</BrowserRouter> </BrowserRouter>
+11
View File
@@ -0,0 +1,11 @@
import React from 'react'
import SocketIOContextProvider from '../components/Contexts/SocketIOContext'
import { Navigate, Outlet, useNavigate } from "react-router-dom";
export default function SocketConnection() {
return (
<SocketIOContextProvider>
<Outlet />
</SocketIOContextProvider>
)
}
+1 -1
View File
@@ -9,7 +9,7 @@ export default function MyWalletPage() {
useEffect(()=>{ useEffect(()=>{
let walletExist = wallet_available_status || localStorage.getItem('wallet_available_status') let walletExist = wallet_available_status || localStorage.getItem('wallet_available_status')
console.log(walletExist) // console.log(walletExist)
if(account_type == 'FULL' && walletExist != 'WALLET_AVAILABLE'){ if(account_type == 'FULL' && walletExist != 'WALLET_AVAILABLE'){
navigate('/', {replace: true}) navigate('/', {replace: true})
} }
+4 -4
View File
@@ -1,4 +1,4 @@
import React, { useContext, useState, useEffect } from "react"; import React, { useMemo, useState, useEffect } from "react";
// import BlogItem from "../components/Blogs"; // import BlogItem from "../components/Blogs";
import { useSelector } from "react-redux"; import { useSelector } from "react-redux";
import OffersInterest from "../components/OffersInterest"; import OffersInterest from "../components/OffersInterest";
@@ -15,7 +15,7 @@ export default function OffersInterestPage() {
let {joinRoom} = SocketValues() // function to join room for socket let {joinRoom} = SocketValues() // function to join room for socket
const apiCall = new usersService() const apiCall = useMemo(()=> new usersService(),[])
let {commonHeadBanner} = useSelector(state => state.commonHeadBanner) let {commonHeadBanner} = useSelector(state => state.commonHeadBanner)
@@ -28,11 +28,11 @@ export default function OffersInterestPage() {
setOfferInterestList({loading: false, data: [], imgServer:''}) setOfferInterestList({loading: false, data: [], imgServer:''})
console.log('Error: ', err) console.log('Error: ', err)
}) })
},[offerInterestListReload]) },[apiCall, offerInterestListReload])
useEffect(()=>{ useEffect(()=>{
joinRoom(`INTEREST-${userDetails?.uid}`) joinRoom(`INTEREST-${userDetails?.uid}`)
},[]) },[joinRoom, userDetails])
return ( return (
<> <>
+12 -12
View File
@@ -1,22 +1,22 @@
import React, { useState, useEffect } from "react"; import React, { useCallback, useMemo, useState, useEffect } from "react";
import Resources from "../components/Resources"; import Resources from "../components/Resources";
import usersService from "../services/UsersService"; import usersService from "../services/UsersService";
import { useLocation } from "react-router-dom"; import { useLocation } from "react-router-dom";
export default function ResourcePage() { export default function ResourcePage() {
const {state, pathname} = useLocation() // CHECKS IF THERE IS AN ACTIVE TAB WITH LINK BACK TO RESOURCES const {state} = useLocation() // CHECKS IF THERE IS AN ACTIVE TAB WITH LINK BACK TO RESOURCES
const [MyResourceData, setMyResourceData] = useState([]); const [MyResourceData, setMyResourceData] = useState([]);
const api = new usersService(); const api = useMemo(()=> new usersService(),[]);
const getMyResourceData = async () => { const getMyResourceData = useCallback( async () => {
try { try {
const res = await api.getResourceList(); const res = await api.getResourceList();
setMyResourceData(res.data); setMyResourceData(res.data);
} catch (error) { } catch (error) {
throw new Error("Error getting mode"); throw new Error("Error getting mode");
} }
}; },[api])
useEffect(() => { useEffect(() => {
getMyResourceData(); getMyResourceData();
}, []); }, [getMyResourceData]);
return <Resources MyResourceData={MyResourceData} activeTab={state ? state.tab : ''} />; return <Resources MyResourceData={MyResourceData} activeTab={state ? state.tab : ''} />;
} }