diff --git a/packages/shared/components/atoms/tiles/ActivityTile.svelte b/packages/shared/components/atoms/tiles/ActivityTile.svelte
index 72c13a15ee..641c620dc4 100644
--- a/packages/shared/components/atoms/tiles/ActivityTile.svelte
+++ b/packages/shared/components/atoms/tiles/ActivityTile.svelte
@@ -21,6 +21,7 @@
NftActivityTileContent,
GovernanceActivityTileContent,
} from 'shared/components'
+ import { time } from '@core/app'
export let activity: Activity
@@ -30,6 +31,8 @@
activity.type === ActivityType.Basic || activity.type === ActivityType.Foundry
? getAssetFromPersistedAssets(activity.assetId)
: undefined)
+ $: isTimelocked = activity?.asyncData?.timelockDate > $time
+ $: shouldShowAsyncFooter = activity.asyncData && activity.asyncData.asyncStatus !== ActivityAsyncStatus.Claimed
function handleTransactionClick(): void {
if (asset?.verification?.status === NotVerifiedStatus.New) {
@@ -70,9 +73,9 @@
{/if}
- {#if activity.asyncData?.asyncStatus === ActivityAsyncStatus.Timelocked}
+ {#if isTimelocked}
- {:else if activity.asyncData}
+ {:else if shouldShowAsyncFooter}
{/if}
diff --git a/packages/shared/components/atoms/tiles/tileFooters/AsyncActivityTileFooter.svelte b/packages/shared/components/atoms/tiles/tileFooters/AsyncActivityTileFooter.svelte
index 28caea219c..fe8c8257a6 100644
--- a/packages/shared/components/atoms/tiles/tileFooters/AsyncActivityTileFooter.svelte
+++ b/packages/shared/components/atoms/tiles/tileFooters/AsyncActivityTileFooter.svelte
@@ -30,9 +30,9 @@
(activity.direction === ActivityDirection.Incoming ||
activity.direction === ActivityDirection.SelfTransaction) &&
activity.asyncData?.asyncStatus === ActivityAsyncStatus.Unclaimed
- $: shouldShowAsyncFooter = activity.asyncData?.asyncStatus !== ActivityAsyncStatus.Claimed
$: timeDiff = getTimeDiff(activity)
+ $: hasExpirationTime = !!activity.asyncData?.expirationDate
function handleRejectClick(): void {
openPopup({
@@ -68,45 +68,49 @@
return getTimeDifference(expirationDate, $time)
}
}
- return localize('general.none')
+ return undefined
}
-{#if shouldShowAsyncFooter}
-
-
+
+
+ {#if timeDiff}
{timeDiff}
-
-
- {#if shouldShowActions}
-
-
- {:else}
-
- {/if}
-
-
-{/if}
+ {/if}
+
+
+ {#if shouldShowActions}
+
+
+ {:else}
+
+ {/if}
+
+
diff --git a/packages/shared/lib/core/wallet/actions/activities/setAsyncStatusOfAccountActivities.ts b/packages/shared/lib/core/wallet/actions/activities/setAsyncStatusOfAccountActivities.ts
index cefdf79434..9088cc6dd9 100644
--- a/packages/shared/lib/core/wallet/actions/activities/setAsyncStatusOfAccountActivities.ts
+++ b/packages/shared/lib/core/wallet/actions/activities/setAsyncStatusOfAccountActivities.ts
@@ -1,9 +1,9 @@
import { syncBalance } from '@core/account/actions/syncBalance'
-import { Activity } from '@core/wallet/types'
import { updateNftInAllAccountNfts } from '@core/nfts'
import { ActivityAsyncStatus, ActivityDirection, ActivityType } from '@core/wallet/enums'
import { allAccountActivities } from '../../stores'
import { refreshAccountAssetsForActiveProfile } from '../refreshAccountAssetsForActiveProfile'
+import { getAsyncStatus } from '@core/wallet/utils/generateActivity/helper'
export function setAsyncStatusOfAccountActivities(time: Date): void {
const balancesToUpdate: number[] = []
@@ -14,8 +14,13 @@ export function setAsyncStatusOfAccountActivities(time: Date): void {
if (oldAsyncStatus === ActivityAsyncStatus.Claimed || oldAsyncStatus === ActivityAsyncStatus.Expired) {
continue
}
- activity.asyncData.asyncStatus = getAsyncStatus(activity, time)
-
+ activity.asyncData.asyncStatus = getAsyncStatus(
+ false,
+ activity.asyncData.expirationDate,
+ activity.asyncData.timelockDate,
+ !!activity.storageDeposit,
+ time.getTime()
+ )
if (oldAsyncStatus !== null && oldAsyncStatus !== activity.asyncData.asyncStatus) {
if (!balancesToUpdate.includes(accountIndex)) {
balancesToUpdate.push(accountIndex)
@@ -40,19 +45,3 @@ export function setAsyncStatusOfAccountActivities(time: Date): void {
void refreshAccountAssetsForActiveProfile()
}
}
-
-function getAsyncStatus(activity: Activity, time: Date): ActivityAsyncStatus {
- if (activity.asyncData?.timelockDate) {
- if (activity.asyncData.timelockDate.getTime() > time.getTime()) {
- return ActivityAsyncStatus.Timelocked
- }
- } else if (activity.asyncData) {
- if (activity.asyncData.asyncStatus !== ActivityAsyncStatus.Claimed) {
- if (time > activity.asyncData.expirationDate) {
- return ActivityAsyncStatus.Expired
- } else {
- return ActivityAsyncStatus.Unclaimed
- }
- }
- }
-}
diff --git a/packages/shared/lib/core/wallet/constants/unlock-condition.constants.ts b/packages/shared/lib/core/wallet/constants/unlock-condition.constants.ts
index 8c0c80b17b..9cb9608640 100644
--- a/packages/shared/lib/core/wallet/constants/unlock-condition.constants.ts
+++ b/packages/shared/lib/core/wallet/constants/unlock-condition.constants.ts
@@ -6,4 +6,8 @@ export const UNLOCK_CONDITION_STATE_CONTROLLER_ADDRESS = 4
export const UNLOCK_CONDITION_GOVERNOR_ADDRESS = 5
export const UNLOCK_CONDITION_IMMUTABLE_ALIAS = 6
-export const ASYNC_UNLOCK_CONDITION_TYPES = [UNLOCK_CONDITION_STORAGE_DEPOSIT_RETURN, UNLOCK_CONDITION_EXPIRATION]
+export const ASYNC_UNLOCK_CONDITION_TYPES = [
+ UNLOCK_CONDITION_STORAGE_DEPOSIT_RETURN,
+ UNLOCK_CONDITION_EXPIRATION,
+ UNLOCK_CONDITION_TIMELOCK,
+]
diff --git a/packages/shared/lib/core/wallet/utils/generateActivity/helper/getAsyncDataFromOutput.ts b/packages/shared/lib/core/wallet/utils/generateActivity/helper/getAsyncDataFromOutput.ts
index 5b74818180..aef84296c0 100644
--- a/packages/shared/lib/core/wallet/utils/generateActivity/helper/getAsyncDataFromOutput.ts
+++ b/packages/shared/lib/core/wallet/utils/generateActivity/helper/getAsyncDataFromOutput.ts
@@ -1,8 +1,10 @@
import { IAccountState } from '@core/account'
-import { isActivityHiddenForAccountIndex, ActivityAsyncStatus, IClaimData, Output, AsyncData } from '@core/wallet'
+import { isActivityHiddenForAccountIndex, IClaimData, Output, AsyncData } from '@core/wallet'
import { getExpirationDateFromOutput } from '../../outputs/getExpirationDateFromOutput'
import { getTimelockDateFromOutput } from './getTimelockDateFromOutput'
import { isOutputAsync } from '../../outputs/isOutputAsync'
+import { getAsyncStatus } from './getAsyncStatus'
+import { getStorageDepositFromOutput } from './getStorageDepositFromOutput'
export function getAsyncDataFromOutput(
output: Output,
@@ -19,19 +21,15 @@ export function getAsyncDataFromOutput(
const expirationDate = getExpirationDateFromOutput(output)
const timelockDate = getTimelockDateFromOutput(output)
+ const { storageDeposit } = getStorageDepositFromOutput(output)
- let asyncStatus
- if (claimingData) {
- asyncStatus = ActivityAsyncStatus.Claimed
- } else if (timelockDate) {
- if (timelockDate.getTime() > Date.now()) {
- asyncStatus = ActivityAsyncStatus.Timelocked
- }
- } else if (expirationDate && expirationDate.getTime() < Date.now()) {
- asyncStatus = ActivityAsyncStatus.Expired
- } else {
- asyncStatus = ActivityAsyncStatus.Unclaimed
- }
+ const asyncStatus = getAsyncStatus(
+ !!claimingTransactionId,
+ expirationDate,
+ timelockDate,
+ !!storageDeposit,
+ Date.now()
+ )
return {
asyncStatus,
diff --git a/packages/shared/lib/core/wallet/utils/generateActivity/helper/getAsyncStatus.ts b/packages/shared/lib/core/wallet/utils/generateActivity/helper/getAsyncStatus.ts
new file mode 100644
index 0000000000..8e45ed2471
--- /dev/null
+++ b/packages/shared/lib/core/wallet/utils/generateActivity/helper/getAsyncStatus.ts
@@ -0,0 +1,23 @@
+import { ActivityAsyncStatus } from '@core/wallet/enums'
+
+export function getAsyncStatus(
+ isClaimed: boolean,
+ expirationDate: Date,
+ timelockDate: Date,
+ hasStorageDeposit: boolean,
+ currentTimeStamp: number
+): ActivityAsyncStatus {
+ if (isClaimed) {
+ return ActivityAsyncStatus.Claimed
+ } else if (timelockDate && timelockDate.getTime() > currentTimeStamp) {
+ return ActivityAsyncStatus.Timelocked
+ } else if (expirationDate && expirationDate.getTime() < currentTimeStamp) {
+ return ActivityAsyncStatus.Expired
+ } else if (hasStorageDeposit || expirationDate) {
+ return ActivityAsyncStatus.Unclaimed
+ } else if (timelockDate) {
+ return ActivityAsyncStatus.Claimed
+ } else {
+ return ActivityAsyncStatus.Unclaimed
+ }
+}
diff --git a/packages/shared/lib/core/wallet/utils/generateActivity/helper/index.ts b/packages/shared/lib/core/wallet/utils/generateActivity/helper/index.ts
index cfeb8c142e..9437928974 100644
--- a/packages/shared/lib/core/wallet/utils/generateActivity/helper/index.ts
+++ b/packages/shared/lib/core/wallet/utils/generateActivity/helper/index.ts
@@ -1,5 +1,6 @@
export * from './getActivityTypeFromOutput'
export * from './getAsyncDataFromOutput'
+export * from './getAsyncStatus'
export * from './getAmountFromOutput'
export * from './getSendingInformation'
export * from './getGovernanceInfo'
diff --git a/packages/shared/lib/core/wallet/utils/outputs/getTimeDifference.ts b/packages/shared/lib/core/wallet/utils/outputs/getTimeDifference.ts
index 10284ef7cf..465094bceb 100644
--- a/packages/shared/lib/core/wallet/utils/outputs/getTimeDifference.ts
+++ b/packages/shared/lib/core/wallet/utils/outputs/getTimeDifference.ts
@@ -22,6 +22,6 @@ export function getTimeDifference(lateDate: Date, earlyDate: Date): string {
} else if (seconds > 0) {
return '<1min'
} else {
- return '-'
+ return undefined
}
}