Compare commits

...
5 changed files with 77 additions and 24 deletions
@@ -5,8 +5,7 @@ import {
ExternalLink, ExternalLink,
TextArea, TextArea,
} from '@vegaprotocol/ui-toolkit'; } from '@vegaprotocol/ui-toolkit';
import { createDocsLinks } from '@vegaprotocol/utils'; import { useDocsLink, useEnvironment, DOCS } from '@vegaprotocol/environment';
import { useEnvironment } from '@vegaprotocol/environment';
import type { UseFormRegisterReturn } from 'react-hook-form'; import type { UseFormRegisterReturn } from 'react-hook-form';
interface ProposalFormTermsProps { interface ProposalFormTermsProps {
@@ -24,6 +23,9 @@ export const ProposalFormTerms = ({
}: ProposalFormTermsProps) => { }: ProposalFormTermsProps) => {
const { VEGA_DOCS_URL } = useEnvironment(); const { VEGA_DOCS_URL } = useEnvironment();
const { t } = useTranslation(); const { t } = useTranslation();
const useLink = useDocsLink();
const PROPOSALS_GUIDE = `${useLink(DOCS.PROPOSALS_GUIDE)}${docsLink}`;
return ( return (
<FormGroup <FormGroup
label={labelOverride || t('ProposalTerms')} label={labelOverride || t('ProposalTerms')}
@@ -32,13 +34,8 @@ export const ProposalFormTerms = ({
{docsLink && VEGA_DOCS_URL && ( {docsLink && VEGA_DOCS_URL && (
<div className="mt-[-4px] mb-2 text-sm font-light"> <div className="mt-[-4px] mb-2 text-sm font-light">
<span className="mr-1">{t('ProposalTermsText')}</span> <span className="mr-1">{t('ProposalTermsText')}</span>
<ExternalLink <ExternalLink href={PROPOSALS_GUIDE} target="_blank">
href={`${ {PROPOSALS_GUIDE}
createDocsLinks(VEGA_DOCS_URL).PROPOSALS_GUIDE
}${docsLink}`}
target="_blank"
>
{`${createDocsLinks(VEGA_DOCS_URL).PROPOSALS_GUIDE}${docsLink}`}
</ExternalLink> </ExternalLink>
</div> </div>
)} )}
+54
View File
@@ -84,6 +84,20 @@ export const useEtherscanLink = () => {
return link; return link;
}; };
/** useDocsLink returns external documentation links that are specific to an environment
* ex. https://docs.vega.xyz/testnet or https://docs.vega.xyz/mainnet (based on NX_VEGA_DOCS_URL)
* @param {string} path - the documentation path
*/
export const useDocsLink = () => {
const { VEGA_DOCS_URL } = useEnvironment();
const baseUrl = trim(VEGA_DOCS_URL, '/');
const link = useCallback(
(url?: string) => `${baseUrl}/${trim(url, '/') || ''}`,
[baseUrl]
);
return link;
};
// Vega blog // Vega blog
export const BLOG = 'https://blog.vega.xyz/'; export const BLOG = 'https://blog.vega.xyz/';
@@ -97,6 +111,8 @@ export const TOKEN_PROPOSAL = '/proposals/:id';
export const TOKEN_PROTOCOL_UPGRADE_PROPOSAL = export const TOKEN_PROTOCOL_UPGRADE_PROPOSAL =
'/proposals/protocol-upgrade/:tag'; '/proposals/protocol-upgrade/:tag';
export const TOKEN_VALIDATOR = '/validators/:id'; export const TOKEN_VALIDATOR = '/validators/:id';
export const PROPOSAL_PAGE = ':tokenUrl/proposals/:proposalId';
export const UPDATE_PROPOSAL_PAGE = ':tokenUrl/proposals/propose/update-market';
/** /**
* Generates link to the protocol upgrade proposal details on Governance * Generates link to the protocol upgrade proposal details on Governance
@@ -125,3 +141,41 @@ export const CONSOLE_MARKET = '/markets/:marketId';
export const CONSOLE_MARKETS = '/markets/all'; export const CONSOLE_MARKETS = '/markets/all';
export const CONSOLE_PORTFOLIO = '/portfolio'; export const CONSOLE_PORTFOLIO = '/portfolio';
export const CONSOLE_LIQUIDITY = 'liquidity/:marketId'; export const CONSOLE_LIQUIDITY = 'liquidity/:marketId';
// Vega XYZ
export const GET_VEGA_WALLET_URL = 'https://vega.xyz/wallet/';
// Docs
export const DOCS_VEGA_WALLET = '/tools/vega-wallet';
// Vega Docs
export const DOCS = {
NEW_TO_VEGA: `/concepts/new-to-vega`,
AUCTION_TYPE_OPENING: `/concepts/trading-on-vega/trading-modes#auction-type-opening`,
AUCTION_TYPE_LIQUIDITY_MONITORING: `/concepts/trading-on-vega/trading-modes#auction-type-liquidity-monitoring`,
AUCTION_TYPE_PRICE_MONITORING: `/concepts/trading-on-vega/trading-modes#auction-type-price-monitoring`,
AUCTION_TYPE_CLOSING: `/concepts/trading-on-vega/trading-modes#auction-type-closing`,
STAKING_GUIDE: `/concepts/vega-chain/#staking-on-vega`,
REWARDS_GUIDE: `/concepts/trading-on-vega/fees-rewards#trading-rewards`,
VEGA_WALLET_CONCEPTS_URL: `/concepts/vega-wallet`,
PROPOSALS_GUIDE: `/tutorials/proposals`,
NODE_OPERATORS: `/node-operators`,
LOSS_SOCIALIZATION: `/concepts/trading-on-vega/market-protections#loss-socialisation`,
POSITION_RESOLUTION: `/concepts/trading-on-vega/market-protections#position-resolution`,
LIQUIDITY: `/concepts/liquidity/provision`,
WITHDRAWAL_LIMIT: `/testnet/concepts/deposits-withdrawals#withdrawal-limit`,
VEGA_WALLET: `/tools/vega-wallet`,
};
// External links
export const ExternalLinks = {
FEEDBACK: 'https://github.com/vegaprotocol/feedback/discussions',
GITHUB: 'https://github.com/vegaprotocol/token-frontend',
DISCORD: 'https://vega.xyz/discord',
GOVERNANCE_PAGE: 'https://vega.xyz/governance',
VALIDATOR_FORUM: 'https://community.vega.xyz/c/mainnet-validator-candidates',
MARGIN_CREDIT_RISK:
'https://vega.xyz/papers/margins-and-credit-risk.pdf#page=7',
VEGA_WALLET_URL: 'https://vega.xyz/wallet',
VEGA_WALLET_HOSTED_URL: 'https://vega-hosted-wallet.on.fleek.co/',
};
@@ -1,5 +1,9 @@
import { useEnvironment } from '@vegaprotocol/environment'; import {
import { removePaginationWrapper, TokenLinks } from '@vegaprotocol/utils'; PROPOSAL_PAGE,
UPDATE_PROPOSAL_PAGE,
useEnvironment,
} from '@vegaprotocol/environment';
import { removePaginationWrapper } from '@vegaprotocol/utils';
import { t } from '@vegaprotocol/i18n'; import { t } from '@vegaprotocol/i18n';
import { useDataProvider } from '@vegaprotocol/data-provider'; import { useDataProvider } from '@vegaprotocol/data-provider';
import * as Schema from '@vegaprotocol/types'; import * as Schema from '@vegaprotocol/types';
@@ -236,7 +240,7 @@ export const MarketInfoAccordion = ({
{VEGA_TOKEN_URL && ( {VEGA_TOKEN_URL && (
<ExternalLink <ExternalLink
className="mb-2 w-full" className="mb-2 w-full"
href={generatePath(TokenLinks.PROPOSAL_PAGE, { href={generatePath(PROPOSAL_PAGE, {
tokenUrl: VEGA_TOKEN_URL, tokenUrl: VEGA_TOKEN_URL,
proposalId: market.proposal?.id || '', proposalId: market.proposal?.id || '',
})} })}
@@ -252,7 +256,7 @@ export const MarketInfoAccordion = ({
{VEGA_TOKEN_URL && ( {VEGA_TOKEN_URL && (
<ExternalLink <ExternalLink
className="w-full" className="w-full"
href={generatePath(TokenLinks.UPDATE_PROPOSAL_PAGE, { href={generatePath(UPDATE_PROPOSAL_PAGE, {
tokenUrl: VEGA_TOKEN_URL, tokenUrl: VEGA_TOKEN_URL,
})} })}
title={ title={
+1 -5
View File
@@ -16,6 +16,7 @@ export const createDocsLinks = (docsUrl: string) => ({
LOSS_SOCIALIZATION: `${docsUrl}/concepts/trading-on-vega/market-protections#loss-socialisation`, LOSS_SOCIALIZATION: `${docsUrl}/concepts/trading-on-vega/market-protections#loss-socialisation`,
POSITION_RESOLUTION: `${docsUrl}/concepts/trading-on-vega/market-protections#position-resolution`, POSITION_RESOLUTION: `${docsUrl}/concepts/trading-on-vega/market-protections#position-resolution`,
LIQUIDITY: `${docsUrl}/concepts/liquidity/provision`, LIQUIDITY: `${docsUrl}/concepts/liquidity/provision`,
WITHDRAWAL_LIMIT: `${docsUrl}/testnet/concepts/deposits-withdrawals#withdrawal-limit`,
}); });
export const ExternalLinks = { export const ExternalLinks = {
@@ -29,8 +30,3 @@ export const ExternalLinks = {
VEGA_WALLET_URL: 'https://vega.xyz/wallet', VEGA_WALLET_URL: 'https://vega.xyz/wallet',
VEGA_WALLET_HOSTED_URL: 'https://vega-hosted-wallet.on.fleek.co/', VEGA_WALLET_HOSTED_URL: 'https://vega-hosted-wallet.on.fleek.co/',
}; };
export const TokenLinks = {
PROPOSAL_PAGE: ':tokenUrl/proposals/:proposalId',
UPDATE_PROPOSAL_PAGE: ':tokenUrl/proposals/propose/update-market',
};
+8 -6
View File
@@ -34,6 +34,7 @@ import {
useWeb3Disconnect, useWeb3Disconnect,
} from '@vegaprotocol/web3'; } from '@vegaprotocol/web3';
import { AssetBalance } from './asset-balance'; import { AssetBalance } from './asset-balance';
import { DOCS, useDocsLink, useEnvironment } from '@vegaprotocol/environment';
interface FormFields { interface FormFields {
asset: string; asset: string;
@@ -67,6 +68,8 @@ const WithdrawDelayNotification = ({
symbol, symbol,
delay ? formatDistanceToNow(Date.now() + delay * 1000) : ' ', delay ? formatDistanceToNow(Date.now() + delay * 1000) : ' ',
]; ];
const { VEGA_DOCS_URL } = useEnvironment();
const docs = useDocsLink();
return ( return (
<Notification <Notification
intent={Intent.Warning} intent={Intent.Warning}
@@ -82,12 +85,11 @@ const WithdrawDelayNotification = ({
formatNumber(threshold, decimals), formatNumber(threshold, decimals),
...replacements, ...replacements,
]), ]),
<ExternalLink VEGA_DOCS_URL && (
className="ml-1" <ExternalLink className="ml-1" href={docs(DOCS.WITHDRAWAL_LIMIT)}>
href="https://docs.vega.xyz/testnet/concepts/deposits-withdrawals#withdrawal-limits" {t('Read more')}
> </ExternalLink>
{t('Read more')} ),
</ExternalLink>,
]} ]}
/> />
); );