Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions site/src/App/index.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ import ScrollToTop from "../components/ScrollToTop";
import Header from "../pages/Header";
import Footer from "../pages/Footer";
import Tips from "../pages/Tips";
import Proposals from "../pages/Proposals";
import CentrifugeProposals from "../pages/CentrifugeProposals";
import TipsRedirect from "../pages/Tips/TipsRedirect";
// import Proposals from "../pages/Proposals";
import ProposalsRedirect from "../pages/Proposals/ProposalsRedirect";
// import CentrifugeProposals from "../pages/CentrifugeProposals";
import Bounties from "../pages/Bounties";
import ChildBounties from "../pages/ChildBounties";
import Burnt from "../pages/Burnt";
Expand Down Expand Up @@ -65,18 +67,12 @@ export default function App() {
<ScrollToTop />
<Switch>
<Route exact path="/" component={Overview} />
<Route exact path="/tips" component={Tips} />

<Route exact path="/tips" component={TipsRedirect} />
<Route exact path="/referenda" component={Referenda} />
<Route exact path="/spends" component={Spends} />
{isCentrifuge ? (
<Route
exact
path="/proposals"
component={CentrifugeProposals}
/>
) : (
<Route exact path="/proposals" component={Proposals} />
)}

<Route exact path="/proposals" component={ProposalsRedirect} />
<Route exact path="/bounties" component={Bounties} />
<Route exact path="/child-bounties" component={ChildBounties} />
{/* <Route exact path="/transfers" component={Transfers} /> */}
Expand Down Expand Up @@ -159,7 +155,11 @@ export default function App() {
<Route exact path="/income/gasfee" component={GasFeeSlash} />
<Route exact path="/income/others" component={OthersIncome} />
{!isCentrifuge && (
<Route exact path="/beneficiaries" component={BeneficiariesRedirect} />
<Route
exact
path="/beneficiaries"
component={BeneficiariesRedirect}
/>
)}
<Route
exact
Expand Down
36 changes: 14 additions & 22 deletions site/src/pages/Header/ProposalsMenu.jsx
Original file line number Diff line number Diff line change
@@ -1,34 +1,26 @@
import React from "react";
import { Label, Menu } from "semantic-ui-react";
import { useSelector } from "react-redux";
import { totalProposalCountSelector } from "../../store/reducers/overviewSlice";
import { isKusama, isPolkadot } from "../../utils/chains";
import IconMask from "../../components/Icon/Mask";
import { chainSelector } from "../../store/reducers/chainSlice";
import ExternalLink from "../../components/ExternalLink";
import { totalProposalsCountSelector } from "../../store/reducers/overviewSummarySlice";

function ProposalsMenu() {
export default function ProposalsMenuWrapper() {
const proposalsCount = useSelector(totalProposalsCountSelector);
const chain = useSelector(chainSelector);

return (
<Menu.Item key="Proposals">
Proposals<Label>{proposalsCount}</Label>
</Menu.Item>
);
}

function CentrifugeProposalsMenu() {
const proposalsCount = useSelector(totalProposalCountSelector);

return (
<Menu.Item key="Proposals">
Proposals<Label>{proposalsCount}</Label>
<ExternalLink href={`https://${chain}.subsquare.io/treasury/proposals`}>
Proposals
<IconMask
src="/imgs/caret-up-right.svg"
color="textSecondary"
size={16}
/>
<Label>{proposalsCount}</Label>
</ExternalLink>
</Menu.Item>
);
}

export default function ProposalsMenuWrapper() {
if (isPolkadot || isKusama) {
return <ProposalsMenu />;
}

return <CentrifugeProposalsMenu />;
}
22 changes: 16 additions & 6 deletions site/src/pages/Header/TipsMenu.jsx
Original file line number Diff line number Diff line change
@@ -1,16 +1,26 @@
import React from "react";
import { Label, Menu } from "semantic-ui-react";
import { useSelector } from "react-redux";
import { totalTipCountSelector } from "../../store/reducers/overviewSlice";
import IconMask from "../../components/Icon/Mask";
import { chainSelector } from "../../store/reducers/chainSlice";
import ExternalLink from "../../components/ExternalLink";
import { totalTipsCountSelector } from "../../store/reducers/overviewSummarySlice";

function TipsMenu() {
const tipsCount = useSelector(totalTipCountSelector);
export default function TipsMenuWrapper() {
const tipsCount = useSelector(totalTipsCountSelector);
const chain = useSelector(chainSelector);

return (
<Menu.Item key="Tips">
Tips<Label>{tipsCount}</Label>
<ExternalLink href={`https://${chain}.subsquare.io/treasury/tips`}>
Tips
<IconMask
src="/imgs/caret-up-right.svg"
color="textSecondary"
size={16}
/>
<Label>{tipsCount}</Label>
</ExternalLink>
</Menu.Item>
);
}

export default TipsMenu;
18 changes: 18 additions & 0 deletions site/src/pages/Proposals/ProposalsRedirect.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { useEffect } from "react";
import { currentChain } from "../../utils/chains";

const ProposalsRedirect = () => {
useEffect(() => {
if (!currentChain) {
return;
}

window.location.replace(
`https://${currentChain}.subsquare.io/treasury/proposals`,
);
}, []);

return null;
};

export default ProposalsRedirect;
18 changes: 18 additions & 0 deletions site/src/pages/Tips/TipsRedirect.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { useEffect } from "react";
import { currentChain } from "../../utils/chains";

const TipsRedirect = () => {
useEffect(() => {
if (!currentChain) {
return;
}

window.location.replace(
`https://${currentChain}.subsquare.io/treasury/tips`,
);
}, []);

return null;
};

export default TipsRedirect;
16 changes: 14 additions & 2 deletions site/src/store/reducers/overviewSummarySlice.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,18 @@ export const fetchOverviewSummary = () => async (dispatch) => {

try {
dispatch(setLoading(true));
const { result } = await subsquareApi.fetch("/overview/summary");
dispatch(setOverviewSummary(result));

const [overviewResult, tipsResult] = await Promise.all([
subsquareApi.fetch("/overview/summary"),
subsquareApi.fetch("/treasury/tips/summary"),
]);

dispatch(
setOverviewSummary({
...overviewResult.result,
tips: tipsResult.result,
}),
);
} catch (error) {
dispatch(setError(error.message));
}
Expand All @@ -49,6 +59,8 @@ export const totalBountyCountSelector = (state) =>
state.overviewSummary?.data?.bounties?.all || 0;
export const totalProposalsCountSelector = (state) =>
state.overviewSummary?.data?.treasuryProposals?.all || 0;
export const totalTipsCountSelector = (state) =>
state.overviewSummary?.data?.tips?.all || 0;
export const overviewSummaryLoadingSelector = (state) =>
state.overviewSummary.loading;
export const overviewSummaryErrorSelector = (state) =>
Expand Down