From 9889827f675a99669f9169718564307a717eb9b3 Mon Sep 17 00:00:00 2001 From: MickWang <1244134672@qq.com> Date: Mon, 22 Apr 2024 18:11:08 +0800 Subject: [PATCH 1/6] update for estimate withdray delay time --- store/zksync/withdrawals.ts | 7 ++++--- utils/constants.ts | 8 +++++++- utils/helpers.ts | 10 ++++++++++ views/transactions/WithdrawalSubmitted.vue | 18 ++++++++++++------ 4 files changed, 33 insertions(+), 10 deletions(-) diff --git a/store/zksync/withdrawals.ts b/store/zksync/withdrawals.ts index e2cd29d2..abae0758 100644 --- a/store/zksync/withdrawals.ts +++ b/store/zksync/withdrawals.ts @@ -33,7 +33,7 @@ export const useZkSyncWithdrawalsStore = defineStore("zkSyncWithdrawals", () => return new Promise((resolve) => setTimeout(resolve, ms)); } const setStatus = async (obj: { transactionHash: ethers.utils.BytesLike; status: string; gateway: string }) => { - const { primaryNetwork, zkSyncNetworks,getNetworkInfo } = useNetworks(); + const { primaryNetwork, zkSyncNetworks, getNetworkInfo } = useNetworks(); const { selectedNetwork } = storeToRefs(useNetworkStore()); let provider: Provider | undefined; @@ -82,7 +82,7 @@ export const useZkSyncWithdrawalsStore = defineStore("zkSyncWithdrawals", () => ); const withdrawals = transfers.items.filter((e) => e.type === "withdrawal" && e.token && e.amount); for (const withdrawal of withdrawals) { - const { primaryNetwork, zkSyncNetworks,getNetworkInfo } = useNetworks(); + const { primaryNetwork, zkSyncNetworks, getNetworkInfo } = useNetworks(); const transactionFromStorage = transactionStatusStore.getTransaction(withdrawal.transactionHash); if (transactionFromStorage) { @@ -156,7 +156,8 @@ export const useZkSyncWithdrawalsStore = defineStore("zkSyncWithdrawals", () => }, info: { expectedCompleteTimestamp: new Date( - new Date(withdrawalTransfer.timestamp).getTime() + WITHDRAWAL_DELAY + new Date(withdrawalTransfer.timestamp).getTime() + + getEstimateWithdrawalDelayDays(withdrawalTransfer.timestamp) * 24 * 3600 * 1000 ).toISOString(), completed: withdrawal.status === "Finalized", withdrawalFinalizationAvailable: transactionDetails.status === "verified", diff --git a/utils/constants.ts b/utils/constants.ts index e1124eaa..268e4a81 100644 --- a/utils/constants.ts +++ b/utils/constants.ts @@ -9,7 +9,13 @@ export const ETH_TOKEN: Token = { iconUrl: "/img/eth.svg", }; -export const WITHDRAWAL_DELAY_DAYS = 14; +export const WITHDRAWAL_DELAY_DAYS = 7; + +// Last syncL2Requests tx on blast: Apr-20-2024 09:45:31 AM +UTC; +// deposit before this time , estimate withdraw time is 14 days; +// deposit after this time, estimate withdraw time is : +// ( 14 days - (deposit time - this time)) < 7days ? 7days : ( 14 days - (deposit time - this time)); +export const LAST_BLAST_SYNCL2_TIME = 1713606331000; export const MERGE_TOKENS = [ { diff --git a/utils/helpers.ts b/utils/helpers.ts index c566cc3e..de9bd2d8 100644 --- a/utils/helpers.ts +++ b/utils/helpers.ts @@ -54,3 +54,13 @@ export async function retry(func: () => Promise, options: RetryOptions = { } } } + +export const getEstimateWithdrawalDelayDays = (txTime: string) => { + const transactionTime = new Date(txTime).getTime(); + if (transactionTime < LAST_BLAST_SYNCL2_TIME) { + return 14; + } else { + const gap = Math.ceil(14 - (transactionTime - LAST_BLAST_SYNCL2_TIME) / (24 * 3600 * 1000)); + return gap >= 8 ? gap : 8; + } +}; diff --git a/views/transactions/WithdrawalSubmitted.vue b/views/transactions/WithdrawalSubmitted.vue index f2e856b4..7300db52 100644 --- a/views/transactions/WithdrawalSubmitted.vue +++ b/views/transactions/WithdrawalSubmitted.vue @@ -11,8 +11,7 @@ + Completed transfers
From 45dd3d49246410846e86e35d8ca3b05d9c7d6028 Mon Sep 17 00:00:00 2001 From: MickWang <1244134672@qq.com> Date: Thu, 25 Apr 2024 16:09:03 +0800 Subject: [PATCH 6/6] add reload merge token info --- composables/transaction/useMergeToken.ts | 2 ++ views/transactions/Deposit.vue | 5 +++-- views/transactions/Withdraw.vue | 7 ++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/composables/transaction/useMergeToken.ts b/composables/transaction/useMergeToken.ts index 095d530d..786fcc03 100644 --- a/composables/transaction/useMergeToken.ts +++ b/composables/transaction/useMergeToken.ts @@ -23,6 +23,7 @@ export default (tokenL2Address: Ref) => { inProgress, error, execute: getMergeTokenInfo, + reload: reloadMergeTokenInfo, reset, } = usePromise( async () => { @@ -59,5 +60,6 @@ export default (tokenL2Address: Ref) => { inProgress: computed(() => inProgress.value), error: computed(() => error.value), requestMergeTokenInfo, + reloadMergeTokenInfo }; }; diff --git a/views/transactions/Deposit.vue b/views/transactions/Deposit.vue index 52dc72a7..3dc691e2 100644 --- a/views/transactions/Deposit.vue +++ b/views/transactions/Deposit.vue @@ -579,7 +579,7 @@ const amountInputTokenAddress = computed({ const tokenBalance = computed(() => { return balance.value?.find((e) => e.address === selectedToken.value?.address)?.amount; }); -const { result: mergeTokenInfo } = useMergeToken(computed(() => selectedToken.value?.l2Address)); +const { result: mergeTokenInfo, reloadMergeTokenInfo } = useMergeToken(computed(() => selectedToken.value?.l2Address)); const { result: allowance, @@ -853,6 +853,7 @@ const makeTransaction = async () => { step.value = "submitted"; previousTransactionAddress.value = transaction.value!.to.address; recentlyBridged.value = true; + reloadMergeTokenInfo(); } if (tx) { @@ -964,7 +965,7 @@ onMounted(() => { if (selectedNetworkKey.value === "blast") { selectedNetworkKey.value = zkSyncNetworks[0].key; } -}) +});