-
Notifications
You must be signed in to change notification settings - Fork 102
/
Copy pathNftMetadataInformation.svelte
65 lines (59 loc) · 2.45 KB
/
NftMetadataInformation.svelte
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
61
62
63
64
65
<script lang="ts">
import { selectedWalletId } from '@core/wallet'
import { localize } from '@core/i18n'
import { convertAndFormatNftMetadata, getNftByIdFromAllWalletNfts, IIrc27Metadata } from '@core/nfts'
import { NftActivity } from '@core/wallet'
import { KeyValueBox } from 'shared/components'
export let activity: NftActivity
type NftMetadataDetailsList = {
[key in keyof IIrc27Metadata]?: {
data: unknown
isTooltipVisible?: boolean
copyValue?: string
isCopyable?: boolean
isPreText?: boolean
maxHeight?: number
}
}
$: nft = getNftByIdFromAllWalletNfts($selectedWalletId, activity?.nftId)
$: nftMetadataDetailsList = nft?.parsedMetadata
? createIrc27NftMetadataDetailsList(nft?.parsedMetadata)
: createNftMetadataDetailsList(nft?.metadata)
function createNftMetadataDetailsList(metadata: string): {
metadata: { data: string; copyValue?: string; isCopyable?: boolean; isPreText?: boolean; maxHeight: number }
} {
const data = convertAndFormatNftMetadata(metadata)
return { metadata: { data, isCopyable: true, isPreText: true, maxHeight: 48 } }
}
function createIrc27NftMetadataDetailsList(metadata: IIrc27Metadata): NftMetadataDetailsList {
return {
...(metadata.standard && {
standard: {
data: metadata.version ? `${metadata.standard} - ${metadata.version}` : metadata?.standard,
},
}),
...(metadata?.type && {
type: { data: metadata.type as string, isTooltipVisible: true },
}),
...(metadata?.uri && {
uri: { data: metadata.uri, isCopyable: true },
}),
...(metadata?.issuerName && {
issuerName: { data: metadata.issuerName, isTooltipVisible: true },
}),
...(metadata?.collectionName && {
collectionName: { data: metadata.collectionName },
}),
}
}
</script>
{#each Object.entries(nftMetadataDetailsList) as [key, value]}
<KeyValueBox
keyText={localize(`general.${key}`)}
valueText={value.data}
tooltipText={value.isTooltipVisible ? localize(`tooltips.transactionDetails.nftMetadata.${key}`) : undefined}
isPreText={value.isPreText}
isCopyable={value.isCopyable}
maxHeight={value.maxHeight}
/>
{/each}