Skip to content

Commit 72dc0e0

Browse files
authored
feat: JSON viewer (#64)
1 parent 4e1cd74 commit 72dc0e0

File tree

17 files changed

+150
-18
lines changed

17 files changed

+150
-18
lines changed

package-lock.json

Lines changed: 25 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@
4747
"multiformats": "^13.1.0",
4848
"react": "^18.2.0",
4949
"react-dom": "^18.2.0",
50+
"react-json-view-lite": "^1.4.0",
5051
"react-router-dom": "^6.22.3",
52+
"react-toastify": "^10.0.5",
5153
"tailwind-merge": "^2.2.1",
5254
"tailwindcss-animate": "^1.0.7",
5355
"vaul": "^0.9.0"
@@ -146,4 +148,4 @@
146148
"semantic-release-export-data"
147149
]
148150
}
149-
}
151+
}

src/features/accounts/components/account-details.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { cn } from '@/features/common/utils'
44
import { AccountActivityTabs } from './account-activity-tabs'
55
import { AccountInfo } from './account-info'
66
import { accountActivityLabel, accountJsonLabel } from './labels'
7+
import { JsonView } from '@/features/common/components/json-view'
78

89
type Props = {
910
account: Account
@@ -25,7 +26,7 @@ export function AccountDetails({ account }: Props) {
2526
<CardContent aria-label={accountJsonLabel} className={cn('text-sm space-y-2')}>
2627
<h1 className={cn('text-2xl text-primary font-bold')}>{accountJsonLabel}</h1>
2728
<div className={cn('border-solid border-2 border-border h-96 grid')}>
28-
<pre className={cn('overflow-scroll p-4')}>{account.json}</pre>
29+
<JsonView json={account.json} />
2930
</div>
3031
</CardContent>
3132
</Card>

src/features/accounts/mappers/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { AssetSummary } from '@/features/assets/models'
22
import { AccountResult, AssetHoldingResult, AssetResult } from '../data/types'
33
import { Account, AccountAssetSummary, AssetHolding } from '../models'
4-
import { asJson } from '@/utils/as-json'
54
import { microAlgos } from '@algorandfoundation/algokit-utils'
65

76
export const asAccount = async (
@@ -33,7 +32,7 @@ export const asAccount = async (
3332
assetsCreated: await asAccountAssetSummaries(accountResult['created-assets'] ?? [], asAccountAssetSummary),
3433
assetsOpted,
3534
rekeyedTo: accountResult['auth-addr'],
36-
json: asJson(accountResult),
35+
json: accountResult,
3736
}
3837
}
3938

src/features/accounts/models/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,5 @@ export type Account = {
2424
assetsCreated: AccountAssetSummary[]
2525
assetsOpted: AssetHolding[]
2626
rekeyedTo?: Address
27-
json: string
27+
json: object
2828
}

src/features/applications/components/application-details.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import { ApplicationBoxes } from './application-boxes'
3333
import { OverflowAutoTabsContent, Tabs, TabsList, TabsTrigger } from '@/features/common/components/tabs'
3434
import { ApplicationLiveTransactions } from './application-live-transactions'
3535
import { ApplicationTransactionHistory } from './application-transaction-history'
36+
import { JsonView } from '@/features/common/components/json-view'
3637

3738
type Props = {
3839
application: Application
@@ -160,7 +161,7 @@ export function ApplicationDetails({ application }: Props) {
160161
<CardContent className={cn('text-sm space-y-2')}>
161162
<h1 className={cn('text-2xl text-primary font-bold')}>{applicationJsonLabel}</h1>
162163
<div className={cn('border-solid border-2 border-border h-96 grid')}>
163-
<pre className={cn('overflow-scroll p-4')}>{application.json}</pre>
164+
<JsonView json={application.json} />
164165
</div>
165166
</CardContent>
166167
</Card>

src/features/applications/mappers/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { getApplicationAddress, modelsv2, encodeAddress } from 'algosdk'
33
import isUtf8 from 'isutf8'
44
import { Buffer } from 'buffer'
55
import { ApplicationMetadataResult, ApplicationResult } from '../data/types'
6-
import { asJson } from '@/utils/as-json'
76

87
export const asApplicationSummary = (application: ApplicationResult): ApplicationSummary => {
98
return {
@@ -32,7 +31,7 @@ export const asApplication = (application: ApplicationResult, metadata: Applicat
3231
approvalProgram: application.params['approval-program'],
3332
clearStateProgram: application.params['clear-state-program'],
3433
globalState: asGlobalStateValue(application.params['global-state']),
35-
json: asJson(application),
34+
json: application,
3635
}
3736
}
3837

src/features/applications/models/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export type Application = {
1414
approvalProgram: string
1515
clearStateProgram: string
1616
globalState?: Map<string, ApplicationGlobalStateValue>
17-
json: string
17+
json: object
1818
}
1919

2020
export type ApplicationStateSchema = {

src/features/assets/components/asset-details.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import { AssetMetadata } from './asset-metadata'
3636
import { AssetTransactionHistory } from './asset-transaction-history'
3737
import { AssetLiveTransactions } from './asset-live-transactions'
3838
import { OverflowAutoTabsContent, Tabs, TabsList, TabsTrigger } from '@/features/common/components/tabs'
39+
import { JsonView } from '@/features/common/components/json-view'
3940

4041
type Props = {
4142
asset: Asset
@@ -155,7 +156,7 @@ export function AssetDetails({ asset }: Props) {
155156
<CardContent className={cn('text-sm space-y-2')}>
156157
<h1 className={cn('text-2xl text-primary font-bold')}>{assetJsonLabel}</h1>
157158
<div className={cn('border-solid border-2 border-border h-96 grid')}>
158-
<pre className={cn('overflow-scroll p-4')}>{asset.json}</pre>
159+
<JsonView json={asset.json} />
159160
</div>
160161
</CardContent>
161162
</Card>

src/features/assets/mappers/asset.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { AssetId, AssetMetadataResult, AssetMetadataStandard, AssetResult } from
44
import { getArc3Url, isArc3Url } from '../utils/arc3'
55
import { replaceIpfsWithGatewayIfNeeded } from '../utils/replace-ipfs-with-gateway-if-needed'
66
import Decimal from 'decimal.js'
7-
import { asJson } from '@/utils/as-json'
87
import { getArc19Url, isArc19Url } from '../utils/arc19'
98
import { isArc16Properties } from '../utils/arc16'
109

@@ -23,7 +22,7 @@ export const asAsset = (assetResult: AssetResult, metadataResult: AssetMetadataR
2322
traits: asTraits(metadataResult),
2423
media: asMedia(assetResult, metadataResult),
2524
metadata: asMetadata(metadataResult),
26-
json: asJson(assetResult),
25+
json: assetResult,
2726
}
2827
}
2928

0 commit comments

Comments
 (0)