diff --git a/package.json b/package.json index 74a8c8c..0022b46 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "dev-https": "cross-env APPMODE=development webpack-dev-server --https --port 8008", "build": "webpack --mode=${APPMODE:-development} --env.config=${APPENV:-dev}", "analyze": "webpack --mode=production --env.analyze=true", - "lint": "eslint src --ext js,jsx", + "lint": "eslint src --ext js,jsx --fix", "format": "prettier --write \"./**\"", "test": "cross-env BABEL_ENV=test jest", "watch-tests": "cross-env BABEL_ENV=test jest --watch", diff --git a/src/App.jsx b/src/App.jsx index b53e71c..c50708b 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -5,6 +5,7 @@ import React, { useState, useLayoutEffect, useEffect, useRef } from "react"; import { Router, useLocation, Redirect } from "@reach/router"; import Challenges from "./containers/Challenges"; import Filter from "./containers/Filter"; +import MyGigsFilter from "./containers/MyGigsFilter"; import MyGigs from "./containers/MyGigs"; import Menu from "./components/Menu"; import { disableSidebarForRoute } from "@topcoder/micro-frontends-navbar-app"; @@ -12,7 +13,7 @@ import * as constants from "./constants"; import actions from "./actions"; import * as utils from "./utils"; import store from "./store"; -import { initialChallengeFilter } from "./reducers/filter"; +import { initialChallengeFilter, initialGigFilter } from "./reducers/filter"; import _ from "lodash"; import { usePreviousLocation } from "./utils/hooks"; import { useSelector } from "react-redux"; @@ -38,6 +39,9 @@ const App = () => { selected={selectedMenuItem} onSelect={(item) => { setSelectedMenuItem(item); + if (item == "Gigs") { + window.location.href = `${process.env.URL.BASE}/gigs`; + } }} isLoggedIn={isLoggedIn} /> @@ -46,7 +50,7 @@ const App = () => { const location = useLocation(); const previousLocation = usePreviousLocation(); - const getChallengesDebounced = useRef(_.debounce((f) => f(), 500)); + const getDataDebounced = useRef(_.debounce((f) => f(), 500)); useEffect(() => { store.dispatch(actions.lookup.checkIsLoggedIn()); @@ -74,12 +78,46 @@ const App = () => { if (diff) { store.dispatch(actions.filter.updateFilter(updatedFilter)); } - getChallengesDebounced.current(() => + getDataDebounced.current(() => store.dispatch(actions.challenges.getChallenges(updatedFilter)) ); } }, [location]); + useEffect(() => { + if (location.pathname === "/earn/my-gigs" && isLoggedIn) { + if (!location.search) { + store.dispatch(actions.filter.updateGigFilter(initialGigFilter)); + + store.dispatch( + actions.myGigs.getMyGigs( + constants.GIGS_FILTER_STATUSES_PARAM[initialGigFilter.status] + ) + ); + return; + } + const params = utils.url.parseUrlQuery(location.search); + if (_.keys(params).length == 1 && params.externalId) { + return; + } + const updatedGigFilter = { + status: params.status || "Open Applications", + }; + const currentGig = store.getState().filter.gig; + const diff = !_.isEqual(updatedGigFilter, currentGig); + if (diff) { + store.dispatch(actions.filter.updateGigFilter(updatedGigFilter)); + } + getDataDebounced.current(() => + store.dispatch( + actions.myGigs.getMyGigs( + constants.GIGS_FILTER_STATUSES_PARAM[updatedGigFilter.status] + ) + ) + ); + } + }, [location, isLoggedIn]); + const varsRef = useRef(); varsRef.current = { previousLocation }; @@ -108,7 +146,8 @@ const App = () => {