From 6530e49c3ee2ea04b4ab0ccee350284e406a89af Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Sun, 15 Mar 2020 12:10:21 +0100 Subject: [PATCH] Add optional hash to external renders (#2328) --- packages/apps-config/src/links/commonwealth.ts | 7 +++++-- packages/apps-config/src/links/types.ts | 2 +- packages/page-council/src/Motions/Motion.tsx | 1 + packages/react-components/src/LinkExternal.tsx | 11 ++++++----- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/packages/apps-config/src/links/commonwealth.ts b/packages/apps-config/src/links/commonwealth.ts index 1172018d46..32085d6f67 100644 --- a/packages/apps-config/src/links/commonwealth.ts +++ b/packages/apps-config/src/links/commonwealth.ts @@ -17,6 +17,9 @@ export default { referendum: 'proposal/referendum', treasury: 'proposal/treasuryproposal' }, - create: (chain: string, path: string, data: BN | number | string): string => - `https://commonwealth.im/${chain}/${path}/${data.toString()}` + create: (chain: string, path: string, data: BN | number | string, hash?: string): string => { + const withHash = path === 'proposal/councilmotion'; + + return `https://commonwealth.im/${chain}/${path}/${withHash ? hash : data.toString()}`; + } }; diff --git a/packages/apps-config/src/links/types.ts b/packages/apps-config/src/links/types.ts index d11ce996f3..33864167c5 100644 --- a/packages/apps-config/src/links/types.ts +++ b/packages/apps-config/src/links/types.ts @@ -10,5 +10,5 @@ export interface ExternalDef { isActive: boolean; chains: Record; paths: Partial>; - create: (chain: string, path: string, data: BN | number | string) => string; + create: (chain: string, path: string, data: BN | number | string, hash?: string) => string; } diff --git a/packages/page-council/src/Motions/Motion.tsx b/packages/page-council/src/Motions/Motion.tsx index 0acce5012e..5cf3a9306f 100644 --- a/packages/page-council/src/Motions/Motion.tsx +++ b/packages/page-council/src/Motions/Motion.tsx @@ -73,6 +73,7 @@ export default function Motion ({ className, isMember, members, motion: { hash, /> diff --git a/packages/react-components/src/LinkExternal.tsx b/packages/react-components/src/LinkExternal.tsx index ccd19b6442..2456c9fbb3 100644 --- a/packages/react-components/src/LinkExternal.tsx +++ b/packages/react-components/src/LinkExternal.tsx @@ -17,11 +17,12 @@ import Tooltip from './Tooltip'; interface Props { className?: string; data: BN | number | string; + hash?: string; type: LinkTypes; withShort?: boolean; } -function genLinks (systemChain: string, { data, type, withShort }: Props): React.ReactNode[] { +function genLinks (systemChain: string, { data, hash, type, withShort }: Props): React.ReactNode[] { return Object .entries(linked) .map(([name, { isActive, chains, paths, create }]): React.ReactNode | null => { @@ -33,7 +34,7 @@ function genLinks (systemChain: string, { data, type, withShort }: Props): React } const trigger = `${name}-${type}-${data}`; - const link = create(extChain, extPath, data); + const link = create(extChain, extPath, data, hash); return ( !!node); } -function LinkExternal ({ className, data, type, withShort }: Props): React.ReactElement | null { +function LinkExternal ({ className, data, hash, type, withShort }: Props): React.ReactElement | null { const { t } = useTranslation(); const { systemChain } = useApi(); const links = useMemo((): React.ReactNode[] => { - return genLinks(systemChain, { data, type, withShort }); - }, [systemChain, data, type, withShort]); + return genLinks(systemChain, { data, hash, type, withShort }); + }, [systemChain, data, hash, type, withShort]); if (!links.length) { return null;