diff --git a/src/components/board_page_body/board_page_body.tsx b/src/components/board_page_body/board_page_body.tsx
index 917be3406..82831acbf 100644
--- a/src/components/board_page_body/board_page_body.tsx
+++ b/src/components/board_page_body/board_page_body.tsx
@@ -61,6 +61,11 @@ const BoardPageBody = () => {
return () => clearTimeout(timer);
}, [leaderboardLiveRemains]);
+ const timeSpanStart = new Date(timestampToString(startTime).date).toISOString().slice(0, 10);
+ const timeSpanEnd = new Date(timestampToString(endTime).date).toISOString().slice(0, 10);
+ /* Info: (20230816 - Julian) Trick: 月榜的時間轉換由起始時間的第二天算,以避免時區誤差 */
+ const timeSpanMonthly = timestampToString(startTime + 86400).monthAndYear;
+
const subtitle =
timeSpan === RankingInterval.LIVE ? (
@@ -71,21 +76,21 @@ const BoardPageBody = () => {
) : timeSpan === RankingInterval.DAILY ? (
{t('LEADERBOARD_PAGE.SUBTITLE_DAILY')}{' '}
- {timestampToString(endTime).date}
+ {timeSpanEnd}
{t('LEADERBOARD_PAGE.SUBTITLE_DAILY_2')}
) : timeSpan === RankingInterval.WEEKLY ? (
{t('LEADERBOARD_PAGE.SUBTITLE_WEEKLY')}{' '}
- {timestampToString(startTime).date}{' '}
+ {timeSpanStart}{' '}
{t('LEADERBOARD_PAGE.SUBTITLE_WEEKLY_2')}{' '}
- {timestampToString(endTime).date}{' '}
+ {timeSpanEnd}{' '}
{t('LEADERBOARD_PAGE.SUBTITLE_WEEKLY_3')}
) : timeSpan === RankingInterval.MONTHLY ? (
{t('LEADERBOARD_PAGE.SUBTITLE_MONTHLY')}{' '}
- {timestampToString(endTime).monthAndYear}
+ {timeSpanMonthly}
{t('LEADERBOARD_PAGE.SUBTITLE_MONTHLY_2')}
) : (
diff --git a/src/components/deposit_history_modal/deposit_history_modal.tsx b/src/components/deposit_history_modal/deposit_history_modal.tsx
index a6f9650fa..8f3cd7690 100644
--- a/src/components/deposit_history_modal/deposit_history_modal.tsx
+++ b/src/components/deposit_history_modal/deposit_history_modal.tsx
@@ -1,7 +1,8 @@
-import React from 'react';
+import React, {useContext} from 'react';
import Image from 'next/image';
import Lottie from 'lottie-react';
import smallConnectingAnimation from '../../../public/animation/lf30_editor_cnkxmhy3.json';
+import {GlobalContext} from '../../contexts/global_context';
import {ImCross} from 'react-icons/im';
import {OrderStatusUnion} from '../../constants/order_status_union';
import {UNIVERSAL_NUMBER_FORMAT_LOCALE} from '../../constants/display';
@@ -9,6 +10,8 @@ import {FRACTION_DIGITS} from '../../constants/config';
import {timestampToString} from '../../lib/common';
import {useTranslation} from 'react-i18next';
import {IAcceptedDepositOrder} from '../../interfaces/tidebit_defi_background/accepted_deposit_order';
+import {ToastId} from '../../constants/toast_id';
+import {ToastTypeAndText} from '../../constants/toast_type';
type TranslateFunction = (s: string) => string;
interface IDepositHistoryModal {
@@ -22,11 +25,11 @@ const DepositHistoryModal = ({
modalClickHandler,
getDepositHistoryData,
}: IDepositHistoryModal) => {
+ const {t}: {t: TranslateFunction} = useTranslation('common');
const {receipt, createTimestamp} = getDepositHistoryData;
const {orderSnapshot: order, balanceSnapshot} = receipt;
const balance = balanceSnapshot.shift();
-
- const {t}: {t: TranslateFunction} = useTranslation('common');
+ const globalCtx = useContext(GlobalContext);
const displayedDepositTime = timestampToString(createTimestamp);
const displayedDepositType = t('D_W_MODAL.DEPOSIT');
@@ -61,6 +64,19 @@ const DepositHistoryModal = ({
);
+ const copyClickHandler = () => {
+ navigator.clipboard.writeText(order.txhash);
+
+ globalCtx.toast({
+ type: ToastTypeAndText.INFO.type,
+ message: t('TOAST.COPY_SUCCESS'),
+ toastId: ToastId.COPY_SUCCESS,
+ autoClose: 300,
+ isLoading: false,
+ typeText: t(ToastTypeAndText.INFO.text),
+ });
+ };
+
const displayedDepositDetail =
order.orderStatus === OrderStatusUnion.WAITING ? (