Skip to content
This repository was archived by the owner on Mar 13, 2025. It is now read-only.

Commit 1b40c0e

Browse files
Gigs Listings on Earn App (#192)
* output from gigs-listing UI challenge * ci:deploying list * ci:redeploying * expend by default * restore redirection * clean up Co-authored-by: LieutenantRoger <[email protected]>
1 parent 4f8ecfc commit 1b40c0e

File tree

14 files changed

+65
-43
lines changed

14 files changed

+65
-43
lines changed

.circleci/config.yml

-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ workflows:
7777
branches:
7878
only:
7979
- dev
80-
- challenge-details-page
8180

8281
# Production builds are exectuted only on tagged commits to the
8382
# master branch.

config/default.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ require("dotenv").config();
22

33
module.exports = {
44
MFE_CONFIG: {
5-
'@topcoder/micro-frontends-challenges-app': 'https://platform.topcoder-dev.com/challenges-app/topcoder-micro-frontends-challenges-app.js',
6-
'@topcoder/micro-frontends-gigs-app': 'https://platform.topcoder-dev.com/gigs-app/topcoder-micro-frontends-gigs-app.js',
5+
"@topcoder/micro-frontends-challenges-app":
6+
"https://platform.topcoder-dev.com/challenges-app/topcoder-micro-frontends-challenges-app.js",
7+
"@topcoder/micro-frontends-gigs-app":
8+
"https://platform.topcoder-dev.com/gigs-app/topcoder-micro-frontends-gigs-app.js",
79
}
810
};

src/App.jsx

+8-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* Main App component
33
*/
44
import React, { useLayoutEffect, useEffect, useRef } from "react";
5-
import { Router, useLocation } from "@reach/router";
5+
import { Router, useLocation, Redirect } from "@reach/router";
66
import { disableSidebarForRoute } from "@topcoder/micro-frontends-navbar-app";
77
import _ from "lodash";
88
import { usePreviousLocation } from "./utils/hooks";
@@ -45,10 +45,17 @@ const App = () => {
4545
System.import("@topcoder/micro-frontends-challenges-app")
4646
}
4747
/>
48+
<Parcel
49+
path="/earn/gigs"
50+
view="gigs"
51+
config={() => System.import("@topcoder/micro-frontends-gigs-app")}
52+
/>
4853
<Parcel
4954
path="/earn/my-gigs"
55+
view="my-gigs"
5056
config={() => System.import("@topcoder/micro-frontends-gigs-app")}
5157
/>
58+
<Redirect from="/earn/*" to="/earn/find/challenges/" noThrow />
5259
</Router>
5360
</>
5461
);

src/actions/menu.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { createActions } from "redux-actions";
22

33
function showMenu(visible) {
4-
return visible
4+
return visible;
55
}
66

77
export default createActions({
8-
SHOW_MENU: showMenu
9-
})
8+
SHOW_MENU: showMenu,
9+
});

src/components/FeedbackButton/index.jsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import React from "react";
22
import "./styles.scss";
33

4-
const FeedbackButton = () => (
4+
const FeedbackButton = ({ className }) => (
55
<a
6+
className={className}
67
styleName="feedback-button"
78
href="https://discussions.topcoder.com/discussion/8870/new-beta-site-discuss?new=1"
89
target="_blank"

src/components/Menu/index.jsx

+8-3
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,24 @@ import PT from "prop-types";
33
import _ from "lodash";
44
import * as utils from "../../utils";
55
import IconChevronUp from "assets/icons/menu-chevron-up.svg";
6-
import { navigate } from '@reach/router'
6+
import { navigate } from "@reach/router";
77

88
import "./styles.scss";
99

1010
const Menu = ({ menu, selected, onSelect, isLoggedIn, onUpdateMenu }) => {
1111
const selectionRef = useRef();
1212
if (!selectionRef.current) {
13-
selectionRef.current = new utils.menu.MenuSelection(_.cloneDeep(menu), selected, onSelect, onUpdateMenu)
13+
selectionRef.current = new utils.menu.MenuSelection(
14+
_.cloneDeep(menu),
15+
selected,
16+
onSelect,
17+
onUpdateMenu
18+
);
1419
}
1520

1621
useEffect(() => {
1722
selectionRef.current.setMenu(menu);
18-
}, [menu])
23+
}, [menu]);
1924

2025
useEffect(() => {
2126
selectionRef.current.select(selected);

src/constants/index.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ export const NAV_MENU = {
1919
iconActive: "find-work-green.svg",
2020
children: [
2121
{
22-
name: "Challenges",
23-
path: "/earn/find/challenges",
22+
name: "Gigs",
23+
path: "/earn/gigs",
2424
},
2525
{
26-
name: "Gigs",
27-
path: "",
26+
name: "Challenges",
27+
path: "/earn/find/challenges",
2828
},
2929
],
3030
},

src/containers/Menu/index.jsx

+6-9
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React, { useEffect, useState } from "react";
2-
import Menu from '../../components/Menu';
3-
import * as utils from '../../utils';
4-
import * as constants from '../../constants';
2+
import Menu from "../../components/Menu";
3+
import * as utils from "../../utils";
4+
import * as constants from "../../constants";
55
import { useLocation } from "@reach/router";
66

77
const MenuContainer = () => {
@@ -14,7 +14,7 @@ const MenuContainer = () => {
1414
useEffect(() => {
1515
const checkIsLoggedIn = async () => {
1616
setIsLoggedIn(await utils.auth.isLoggedIn());
17-
}
17+
};
1818
checkIsLoggedIn();
1919
}, []);
2020

@@ -37,17 +37,14 @@ const MenuContainer = () => {
3737
selected={selectedMenuItemName}
3838
onSelect={(name) => {
3939
setSelectedMenuItemName(name);
40-
if (name == "Gigs") {
41-
window.location.href = `${process.env.URL.BASE}/gigs`;
42-
}
4340
}}
4441
isLoggedIn={isLoggedIn}
4542
onUpdateMenu={(menu) => {
4643
const change = { ...menu };
4744
saveMenu(change);
4845
}}
4946
/>
50-
)
51-
}
47+
);
48+
};
5249

5350
export default MenuContainer;

src/reducers/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { combineReducers } from "redux";
2-
import menu from './menu';
2+
import menu from "./menu";
33

44
export default combineReducers({
55
menu,

src/reducers/menu.js

+10-7
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
import { handleActions } from "redux-actions";
22

33
const defaultState = {
4-
show: false
5-
}
4+
show: false,
5+
};
66

77
function onShowMenu(state, { payload }) {
88
return {
99
...state,
10-
show: payload
11-
}
10+
show: payload,
11+
};
1212
}
1313

14-
export default handleActions({
15-
SHOW_MENU: onShowMenu
16-
}, defaultState)
14+
export default handleActions(
15+
{
16+
SHOW_MENU: onShowMenu,
17+
},
18+
defaultState
19+
);

src/set-public-path.js

+12-5
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,16 @@ import { setPublicPath } from "systemjs-webpack-interop";
88

99
setPublicPath("@topcoder/micro-frontends-earn-app");
1010

11-
const challengesAppUrl = process.env.MFE_CONFIG['@topcoder/micro-frontends-challenges-app']
12-
const gigsAppUrl = process.env.MFE_CONFIG['@topcoder/micro-frontends-gigs-app']
11+
const challengesAppUrl =
12+
process.env.MFE_CONFIG["@topcoder/micro-frontends-challenges-app"];
13+
const gigsAppUrl = process.env.MFE_CONFIG["@topcoder/micro-frontends-gigs-app"];
1314

14-
importMapOverrides.resetOverrides()
15-
importMapOverrides.addOverride('@topcoder/micro-frontends-challenges-app', challengesAppUrl)
16-
importMapOverrides.addOverride('@topcoder/micro-frontends-gigs-app', gigsAppUrl)
15+
importMapOverrides.resetOverrides();
16+
importMapOverrides.addOverride(
17+
"@topcoder/micro-frontends-challenges-app",
18+
challengesAppUrl
19+
);
20+
importMapOverrides.addOverride(
21+
"@topcoder/micro-frontends-gigs-app",
22+
gigsAppUrl
23+
);

src/topcoder-micro-frontends-earn-app.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { bindActionCreators } from "redux";
66
import Root from "./root.component";
77
import Banner from "./components/Banner";
88
import FeedbackButton from "./components/FeedbackButton";
9-
import actions from "./actions/menu"
9+
import actions from "./actions/menu";
1010
import store from "./store";
1111

1212
const lifecycles = singleSpaReact({
@@ -26,4 +26,7 @@ const unmount = [lifecycles.unmount];
2626
export { bootstrap, mount, unmount };
2727

2828
export { Banner, FeedbackButton };
29-
export const { showMenu } = bindActionCreators({ showMenu: actions.showMenu }, store.dispatch)
29+
export const { showMenu } = bindActionCreators(
30+
{ showMenu: actions.showMenu },
31+
store.dispatch
32+
);

src/utils/auth.js

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
import _ from "lodash";
2-
import {
3-
getAuthUserTokens,
4-
login,
5-
} from "@topcoder/micro-frontends-navbar-app";
2+
import { getAuthUserTokens, login } from "@topcoder/micro-frontends-navbar-app";
63

74
export async function isLoggedIn() {
85
const { tokenV3, tokenV2 } = await getAuthUserTokens();

src/utils/menu.js

+1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ export class MenuSelection {
5353
if (this.isLeaf(menuItem)) {
5454
menuItem.active = true;
5555
this.selected = menuItem.name;
56+
root.expanded = true;
5657
} else {
5758
menuItem.expanded = !menuItem.expanded;
5859
}

0 commit comments

Comments
 (0)