/
generateNftActivity.ts
60 lines (53 loc) · 2.2 KB
/
generateNftActivity.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import { IProcessedTransaction } from '../../interfaces'
import { outputContainsValue, getNftOutputFromTransaction } from '..'
import { ActivityDirection, ActivityType } from '@core/wallet/enums'
import { IAccountState } from '@core/account'
import type { INftOutput } from '@iota/types'
import { getAsyncDataFromOutput } from '../generateActivity/helper/getAsyncDataFromOutput'
import { NftActivity } from '@core/wallet/types'
import { getMetadataFromOutput, getSendingInformation, getTagFromOutput } from './helper'
import { getNftId } from '../outputs/getNftId'
import { EMPTY_HEX_ID } from '@core/wallet/constants'
export function generateNftActivity(processedTransaction: IProcessedTransaction, account: IAccountState): NftActivity {
const { outputs, claimingData, transactionInputs, time, inclusionState, transactionId } = processedTransaction
const wrappedOutput = getNftOutputFromTransaction(outputs)
const outputId = wrappedOutput.outputId
const output = wrappedOutput.output as INftOutput
const id = outputId || transactionId
const isHidden = false
const isAssetHidden = false
const containsValue = outputContainsValue(processedTransaction, account)
const inputs = transactionInputs
const nftId = getNftId(output.nftId, outputId)
const storageDeposit = Number(output.amount)
const giftedStorageDeposit = 0
const metadata = getMetadataFromOutput(output)
const tag = getTagFromOutput(output)
const sendingInfo = getSendingInformation(processedTransaction, output, account)
const { subject, isInternal, isSelfTransaction } = sendingInfo
let { direction } = sendingInfo
direction = output.nftId === EMPTY_HEX_ID ? ActivityDirection.Minting : direction
const asyncData = getAsyncDataFromOutput(output, transactionId, claimingData, account)
return {
type: ActivityType.Nft,
id,
transactionId,
outputId,
nftId,
time,
isHidden,
giftedStorageDeposit,
isAssetHidden,
containsValue,
inputs,
inclusionState,
storageDeposit,
metadata,
tag,
asyncData,
subject,
isInternal,
direction,
isSelfTransaction,
}
}