Skip to content

Commit

Permalink
feat: address support intl (#449)
Browse files Browse the repository at this point in the history
* feat: address support intl

* feat: address support intl

* feat: address support intl

* chore: update changeset

* chore: optimize code
  • Loading branch information
kiner-tang authored Jan 3, 2024
1 parent 8bba386 commit 18def13
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 4 deletions.
6 changes: 6 additions & 0 deletions .changeset/kind-seas-agree.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@ant-design/web3-common': minor
'@ant-design/web3': minor
---

intl: Address support intl
4 changes: 4 additions & 0 deletions packages/common/src/locale/en_US.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ const localeValues: RequiredLocale = {
NFTCard: {
actionText: 'Buy Now',
},
Address: {
copyTips: 'Copy Address',
copiedTips: 'Address Copied!',
},
};

export default localeValues;
4 changes: 4 additions & 0 deletions packages/common/src/locale/zh_CN.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@ const localeValues: RequiredLocale = {
NFTCard: {
actionText: '立即购买',
},
Address: {
copyTips: '复制地址',
copiedTips: '地址复制成功!',
},
};

export default localeValues;
5 changes: 5 additions & 0 deletions packages/common/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -202,10 +202,15 @@ export interface RequiredLocale {
NFTCard: {
actionText: string;
};
Address: {
copyTips: string;
copiedTips: string;
};
}

export interface Locale {
ConnectButton?: Partial<RequiredLocale['ConnectButton']>;
ConnectModal?: Partial<RequiredLocale['ConnectModal']>;
NFTCard?: Partial<RequiredLocale['NFTCard']>;
Address?: Partial<RequiredLocale['Address']>;
}
10 changes: 7 additions & 3 deletions packages/web3/src/address/index.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import type { ReactNode } from 'react';
import React, { useContext, useEffect, useMemo, useRef, useState } from 'react';
import { CheckOutlined, CopyOutlined } from '@ant-design/icons';
import type { Locale } from '@ant-design/web3-common';
import type { TooltipProps } from 'antd';
import { ConfigProvider, Space, Tooltip } from 'antd';
import classNames from 'classnames';

import useIntl from '../hooks/useIntl';
import { fillWith0x, formatAddress, writeCopyText } from '../utils';
import { useStyle } from './style';

Expand All @@ -19,15 +21,17 @@ export interface AddressProps {
copyable?: boolean;
tooltip?: boolean | TooltipProps['title'];
format?: boolean | ((address: string) => ReactNode);
locale?: Locale['Address'];
}

export const Address: React.FC<React.PropsWithChildren<AddressProps>> = (props) => {
const { ellipsis, address, copyable, tooltip, format = false, children } = props;
const { ellipsis, address, copyable, tooltip, format = false, children, locale } = props;
const { getPrefixCls } = useContext(ConfigProvider.ConfigContext);
const prefixCls = getPrefixCls('web3-address');
const { wrapSSR, hashId } = useStyle(prefixCls);
const [copied, setCopied] = useState(false);
const timerRef = useRef<ReturnType<typeof setTimeout>>();
const { messages } = useIntl('Address', locale);

const mergedFormat = useMemo(() => {
if (typeof format === 'function') {
Expand Down Expand Up @@ -78,10 +82,10 @@ export const Address: React.FC<React.PropsWithChildren<AddressProps>> = (props)
{copyable && (
<>
{copied ? (
<CheckOutlined title="Address Copied!" />
<CheckOutlined title={messages.copiedTips} />
) : (
<CopyOutlined
title="Copy Address"
title={messages.copyTips}
onClick={() => {
writeCopyText(filledAddress).then(() => {
setCopied(true);
Expand Down
2 changes: 1 addition & 1 deletion packages/web3/src/connect-button/connect-button.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ export const ConnectButton: React.FC<ConnectButtonProps> = (props) => {
setProfileOpen(false);
if (account?.address) {
writeCopyText(account?.address).then(() => {
messageApi.success('Address Copied!');
messageApi.success(intl.messages.addressCopied);
});
}
},
Expand Down

0 comments on commit 18def13

Please sign in to comment.