@explorins/pers-sdk-react-native 2.1.21 → 2.1.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/useIPFSUrl.d.ts +51 -1
- package/dist/hooks/useIPFSUrl.d.ts.map +1 -1
- package/dist/hooks/useIPFSUrl.js +63 -12
- package/dist/hooks/useWeb3.d.ts.map +1 -1
- package/dist/hooks/useWeb3.js +10 -6
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +288 -57
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/hooks/index.ts +1 -1
- package/src/hooks/useIPFSUrl.ts +66 -13
- package/src/hooks/useWeb3.ts +10 -6
- package/src/index.ts +6 -1
package/dist/hooks/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export { useBusiness } from './useBusiness';
|
|
|
7
7
|
export { useCampaigns } from './useCampaigns';
|
|
8
8
|
export { useRedemptions } from './useRedemptions';
|
|
9
9
|
export { useWeb3 } from './useWeb3';
|
|
10
|
-
export { useResolvedUrl, useMetadata, useIPFSUrl } from './useIPFSUrl';
|
|
10
|
+
export { useResolvedUrl, useMetadata, useIPFSUrl, useTransactionMetadata } from './useIPFSUrl';
|
|
11
11
|
export { usePurchases } from './usePurchases';
|
|
12
12
|
export { useTenants } from './useTenants';
|
|
13
13
|
export { useUsers } from './useUsers';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC/F,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EACV,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,IAAI,iBAAiB,EACnC,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,wBAAwB,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACjG,YAAY,EACV,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrH,YAAY,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAGhI,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGzE,YAAY,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGlF,YAAY,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxF,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/hooks/index.js
CHANGED
|
@@ -8,7 +8,7 @@ export { useBusiness } from './useBusiness';
|
|
|
8
8
|
export { useCampaigns } from './useCampaigns';
|
|
9
9
|
export { useRedemptions } from './useRedemptions';
|
|
10
10
|
export { useWeb3 } from './useWeb3';
|
|
11
|
-
export { useResolvedUrl, useMetadata, useIPFSUrl } from './useIPFSUrl';
|
|
11
|
+
export { useResolvedUrl, useMetadata, useIPFSUrl, useTransactionMetadata } from './useIPFSUrl';
|
|
12
12
|
export { usePurchases } from './usePurchases';
|
|
13
13
|
export { useTenants } from './useTenants';
|
|
14
14
|
export { useUsers } from './useUsers';
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import type { TokenMetadata } from '@explorins/pers-sdk
|
|
1
|
+
import type { TokenMetadata } from '@explorins/pers-sdk';
|
|
2
2
|
/**
|
|
3
3
|
* React hook for resolving media URLs (IPFS or HTTPS).
|
|
4
4
|
*
|
|
5
5
|
* Automatically handles IPFS URLs by resolving them to HTTPS via tenant's gateway.
|
|
6
6
|
* Non-IPFS URLs are returned as-is. Handles loading and error states.
|
|
7
7
|
*
|
|
8
|
+
* Uses sdk.tenants for IPFS resolution (lightweight, no Web3 deps).
|
|
9
|
+
*
|
|
8
10
|
* @param url - The URL to resolve (can be ipfs://, https://, or undefined)
|
|
9
11
|
* @returns Object with resolved URL, loading state, and error
|
|
10
12
|
*
|
|
@@ -32,6 +34,8 @@ export declare function useResolvedUrl(url: string | undefined | null): {
|
|
|
32
34
|
* Handles IPFS resolution automatically and returns parsed metadata
|
|
33
35
|
* with all nested IPFS URLs already resolved to HTTPS.
|
|
34
36
|
*
|
|
37
|
+
* Uses sdk.tenants for metadata fetching (lightweight, no Web3 deps).
|
|
38
|
+
*
|
|
35
39
|
* @param metadataUri - The metadata URI to fetch (can be ipfs:// or https://)
|
|
36
40
|
* @returns Object with metadata, loading state, error, and refresh function
|
|
37
41
|
*
|
|
@@ -65,4 +69,50 @@ export declare function useMetadata(metadataUri: string | undefined | null): {
|
|
|
65
69
|
refresh: () => Promise<void>;
|
|
66
70
|
};
|
|
67
71
|
export { useResolvedUrl as useIPFSUrl };
|
|
72
|
+
/**
|
|
73
|
+
* React hook for loading transaction/token metadata.
|
|
74
|
+
*
|
|
75
|
+
* Convenience wrapper around useMetadata specifically for transaction items.
|
|
76
|
+
* Pass a transaction's metadataUri to get the NFT image, name, description, etc.
|
|
77
|
+
*
|
|
78
|
+
* @param transaction - Transaction object with optional metadataUri field
|
|
79
|
+
* @returns Object with metadata, loading state, and image URL
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```tsx
|
|
83
|
+
* import { useTransactionMetadata } from '@explorins/pers-sdk-react-native';
|
|
84
|
+
*
|
|
85
|
+
* function TransactionItem({ tx }: { tx: TransactionDTO }) {
|
|
86
|
+
* const { metadata, isLoading, imageUrl } = useTransactionMetadata(tx);
|
|
87
|
+
*
|
|
88
|
+
* if (isLoading) return <ActivityIndicator />;
|
|
89
|
+
*
|
|
90
|
+
* return (
|
|
91
|
+
* <View>
|
|
92
|
+
* {imageUrl && <Image source={{ uri: imageUrl }} style={{ width: 60, height: 60 }} />}
|
|
93
|
+
* <Text>{metadata?.name || tx.type}</Text>
|
|
94
|
+
* <Text>{tx.amount} tokens</Text>
|
|
95
|
+
* </View>
|
|
96
|
+
* );
|
|
97
|
+
* }
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export declare function useTransactionMetadata(transaction: {
|
|
101
|
+
metadataUri?: string | null;
|
|
102
|
+
} | null | undefined): {
|
|
103
|
+
/** Parsed metadata with resolved URLs */
|
|
104
|
+
metadata: TokenMetadata | null;
|
|
105
|
+
/** Whether metadata is loading */
|
|
106
|
+
isLoading: boolean;
|
|
107
|
+
/** Error message if fetch failed */
|
|
108
|
+
error: string | null;
|
|
109
|
+
/** Convenience: resolved image URL (or undefined) */
|
|
110
|
+
imageUrl: string | undefined;
|
|
111
|
+
/** Convenience: token/NFT name (or undefined) */
|
|
112
|
+
name: string | undefined;
|
|
113
|
+
/** Convenience: token/NFT description (or undefined) */
|
|
114
|
+
description: string | undefined;
|
|
115
|
+
/** Manually refresh metadata */
|
|
116
|
+
refresh: () => Promise<void>;
|
|
117
|
+
};
|
|
68
118
|
//# sourceMappingURL=useIPFSUrl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIPFSUrl.d.ts","sourceRoot":"","sources":["../../src/hooks/useIPFSUrl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"useIPFSUrl.d.ts","sourceRoot":"","sources":["../../src/hooks/useIPFSUrl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAmCzD,mDAAmD;;IAEnD,wCAAwC;;IAExC,yCAAyC;;EAG5C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IA+B9D,6EAA6E;;IAE7E,mCAAmC;;IAEnC,oCAAoC;;IAEpC,gCAAgC;;EAGnC;AAGD,OAAO,EAAE,cAAc,IAAI,UAAU,EAAE,CAAC;AAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS;IAIlG,yCAAyC;;IAEzC,kCAAkC;;IAElC,oCAAoC;;IAEpC,qDAAqD;;IAErD,iDAAiD;;IAEjD,wDAAwD;;IAExD,gCAAgC;;EAGnC"}
|
package/dist/hooks/useIPFSUrl.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { useState, useEffect } from 'react';
|
|
2
|
-
import {
|
|
1
|
+
import { useState, useEffect, useCallback } from 'react';
|
|
2
|
+
import { usePersSDK } from '../providers/PersSDKProvider';
|
|
3
3
|
/**
|
|
4
4
|
* React hook for resolving media URLs (IPFS or HTTPS).
|
|
5
5
|
*
|
|
6
6
|
* Automatically handles IPFS URLs by resolving them to HTTPS via tenant's gateway.
|
|
7
7
|
* Non-IPFS URLs are returned as-is. Handles loading and error states.
|
|
8
8
|
*
|
|
9
|
+
* Uses sdk.tenants for IPFS resolution (lightweight, no Web3 deps).
|
|
10
|
+
*
|
|
9
11
|
* @param url - The URL to resolve (can be ipfs://, https://, or undefined)
|
|
10
12
|
* @returns Object with resolved URL, loading state, and error
|
|
11
13
|
*
|
|
@@ -20,12 +22,12 @@ import { useWeb3 } from './useWeb3';
|
|
|
20
22
|
* ```
|
|
21
23
|
*/
|
|
22
24
|
export function useResolvedUrl(url) {
|
|
23
|
-
const {
|
|
25
|
+
const { sdk, isInitialized } = usePersSDK();
|
|
24
26
|
const [resolvedUrl, setResolvedUrl] = useState(null);
|
|
25
27
|
const [isLoading, setIsLoading] = useState(false);
|
|
26
28
|
const [error, setError] = useState(null);
|
|
27
29
|
useEffect(() => {
|
|
28
|
-
if (!url || !
|
|
30
|
+
if (!url || !isInitialized || !sdk) {
|
|
29
31
|
setResolvedUrl(null);
|
|
30
32
|
return;
|
|
31
33
|
}
|
|
@@ -36,7 +38,7 @@ export function useResolvedUrl(url) {
|
|
|
36
38
|
}
|
|
37
39
|
setIsLoading(true);
|
|
38
40
|
setError(null);
|
|
39
|
-
|
|
41
|
+
sdk.tenants.resolveIpfsUrl(url)
|
|
40
42
|
.then((resolved) => {
|
|
41
43
|
setResolvedUrl(resolved);
|
|
42
44
|
})
|
|
@@ -47,7 +49,7 @@ export function useResolvedUrl(url) {
|
|
|
47
49
|
.finally(() => {
|
|
48
50
|
setIsLoading(false);
|
|
49
51
|
});
|
|
50
|
-
}, [url,
|
|
52
|
+
}, [url, isInitialized, sdk]);
|
|
51
53
|
return {
|
|
52
54
|
/** Resolved HTTPS URL (or original if not IPFS) */
|
|
53
55
|
url: resolvedUrl,
|
|
@@ -63,6 +65,8 @@ export function useResolvedUrl(url) {
|
|
|
63
65
|
* Handles IPFS resolution automatically and returns parsed metadata
|
|
64
66
|
* with all nested IPFS URLs already resolved to HTTPS.
|
|
65
67
|
*
|
|
68
|
+
* Uses sdk.tenants for metadata fetching (lightweight, no Web3 deps).
|
|
69
|
+
*
|
|
66
70
|
* @param metadataUri - The metadata URI to fetch (can be ipfs:// or https://)
|
|
67
71
|
* @returns Object with metadata, loading state, error, and refresh function
|
|
68
72
|
*
|
|
@@ -86,19 +90,19 @@ export function useResolvedUrl(url) {
|
|
|
86
90
|
* ```
|
|
87
91
|
*/
|
|
88
92
|
export function useMetadata(metadataUri) {
|
|
89
|
-
const {
|
|
93
|
+
const { sdk, isInitialized } = usePersSDK();
|
|
90
94
|
const [metadata, setMetadata] = useState(null);
|
|
91
95
|
const [isLoading, setIsLoading] = useState(false);
|
|
92
96
|
const [error, setError] = useState(null);
|
|
93
|
-
const fetchMetadata = async () => {
|
|
94
|
-
if (!metadataUri || !
|
|
97
|
+
const fetchMetadata = useCallback(async () => {
|
|
98
|
+
if (!metadataUri || !isInitialized || !sdk) {
|
|
95
99
|
setMetadata(null);
|
|
96
100
|
return;
|
|
97
101
|
}
|
|
98
102
|
setIsLoading(true);
|
|
99
103
|
setError(null);
|
|
100
104
|
try {
|
|
101
|
-
const result = await fetchAndProcessMetadata(metadataUri);
|
|
105
|
+
const result = await sdk.tenants.fetchAndProcessMetadata(metadataUri);
|
|
102
106
|
setMetadata(result);
|
|
103
107
|
}
|
|
104
108
|
catch (err) {
|
|
@@ -108,10 +112,10 @@ export function useMetadata(metadataUri) {
|
|
|
108
112
|
finally {
|
|
109
113
|
setIsLoading(false);
|
|
110
114
|
}
|
|
111
|
-
};
|
|
115
|
+
}, [metadataUri, isInitialized, sdk]);
|
|
112
116
|
useEffect(() => {
|
|
113
117
|
fetchMetadata();
|
|
114
|
-
}, [
|
|
118
|
+
}, [fetchMetadata]);
|
|
115
119
|
return {
|
|
116
120
|
/** Parsed metadata with resolved IPFS URLs (imageUrl, animationUrl, etc.) */
|
|
117
121
|
metadata,
|
|
@@ -125,3 +129,50 @@ export function useMetadata(metadataUri) {
|
|
|
125
129
|
}
|
|
126
130
|
// Re-export with descriptive aliases
|
|
127
131
|
export { useResolvedUrl as useIPFSUrl };
|
|
132
|
+
/**
|
|
133
|
+
* React hook for loading transaction/token metadata.
|
|
134
|
+
*
|
|
135
|
+
* Convenience wrapper around useMetadata specifically for transaction items.
|
|
136
|
+
* Pass a transaction's metadataUri to get the NFT image, name, description, etc.
|
|
137
|
+
*
|
|
138
|
+
* @param transaction - Transaction object with optional metadataUri field
|
|
139
|
+
* @returns Object with metadata, loading state, and image URL
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```tsx
|
|
143
|
+
* import { useTransactionMetadata } from '@explorins/pers-sdk-react-native';
|
|
144
|
+
*
|
|
145
|
+
* function TransactionItem({ tx }: { tx: TransactionDTO }) {
|
|
146
|
+
* const { metadata, isLoading, imageUrl } = useTransactionMetadata(tx);
|
|
147
|
+
*
|
|
148
|
+
* if (isLoading) return <ActivityIndicator />;
|
|
149
|
+
*
|
|
150
|
+
* return (
|
|
151
|
+
* <View>
|
|
152
|
+
* {imageUrl && <Image source={{ uri: imageUrl }} style={{ width: 60, height: 60 }} />}
|
|
153
|
+
* <Text>{metadata?.name || tx.type}</Text>
|
|
154
|
+
* <Text>{tx.amount} tokens</Text>
|
|
155
|
+
* </View>
|
|
156
|
+
* );
|
|
157
|
+
* }
|
|
158
|
+
* ```
|
|
159
|
+
*/
|
|
160
|
+
export function useTransactionMetadata(transaction) {
|
|
161
|
+
const { metadata, isLoading, error, refresh } = useMetadata(transaction?.metadataUri);
|
|
162
|
+
return {
|
|
163
|
+
/** Parsed metadata with resolved URLs */
|
|
164
|
+
metadata,
|
|
165
|
+
/** Whether metadata is loading */
|
|
166
|
+
isLoading,
|
|
167
|
+
/** Error message if fetch failed */
|
|
168
|
+
error,
|
|
169
|
+
/** Convenience: resolved image URL (or undefined) */
|
|
170
|
+
imageUrl: metadata?.imageUrl,
|
|
171
|
+
/** Convenience: token/NFT name (or undefined) */
|
|
172
|
+
name: metadata?.name,
|
|
173
|
+
/** Convenience: token/NFT description (or undefined) */
|
|
174
|
+
description: metadata?.description,
|
|
175
|
+
/** Manually refresh metadata */
|
|
176
|
+
refresh,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWeb3.d.ts","sourceRoot":"","sources":["../../src/hooks/useWeb3.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,aAAa,EACb,wBAAwB,EACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG1D,KAAK,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAGtE,YAAY,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,eAAO,MAAM,OAAO;+BAmCkC,mBAAmB,KAAG,QAAQ,YAAY,CAAC;gCAiC1C,mBAAmB,KAAG,QAAQ,aAAa,GAAG,IAAI,CAAC;kCAcjD,sBAAsB,KAAG,QAAQ,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"useWeb3.d.ts","sourceRoot":"","sources":["../../src/hooks/useWeb3.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,aAAa,EACb,wBAAwB,EACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG1D,KAAK,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAGtE,YAAY,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,eAAO,MAAM,OAAO;+BAmCkC,mBAAmB,KAAG,QAAQ,YAAY,CAAC;gCAiC1C,mBAAmB,KAAG,QAAQ,aAAa,GAAG,IAAI,CAAC;kCAcjD,sBAAsB,KAAG,QAAQ,eAAe,CAAC;0BAgCzD,MAAM,KAAG,QAAQ,MAAM,CAAC;wCAsBV,MAAM,KAAG,QAAQ,aAAa,GAAG,IAAI,CAAC;gCAc9C,MAAM,KAAG,QAAQ,SAAS,CAAC;8BAc7B,MAAM,WAAW,MAAM,QAAQ,SAAS,GAAG,IAAI,KAAG,QAAQ,MAAM,CAAC;6BAiCxE,QAAQ,KAAG,MAAM,EAAE,GAAG,SAAS;wDAuCzD,MAAM,SACf,QAAQ,cACJ,MAAM,KAChB,QAAQ,wBAAwB,CAAC;6CAqBlB,MAAM,SACf,QAAQ,cACJ,MAAM,KAChB,sBAAsB;;CAqB1B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC"}
|
package/dist/hooks/useWeb3.js
CHANGED
|
@@ -148,6 +148,8 @@ export const useWeb3 = () => {
|
|
|
148
148
|
* Converts an ipfs:// URL to an HTTPS URL using the tenant's configured IPFS gateway.
|
|
149
149
|
* Non-IPFS URLs are returned unchanged.
|
|
150
150
|
*
|
|
151
|
+
* Note: Uses sdk.tenants for IPFS resolution (chain-agnostic).
|
|
152
|
+
*
|
|
151
153
|
* @param url - IPFS URL to resolve (ipfs://...)
|
|
152
154
|
* @returns Promise resolving to HTTP gateway URL
|
|
153
155
|
*
|
|
@@ -159,37 +161,39 @@ export const useWeb3 = () => {
|
|
|
159
161
|
* ```
|
|
160
162
|
*/
|
|
161
163
|
const resolveIPFSUrl = useCallback(async (url) => {
|
|
162
|
-
if (!isInitialized || !
|
|
164
|
+
if (!isInitialized || !sdk) {
|
|
163
165
|
throw new Error('SDK not initialized. Call initialize() first.');
|
|
164
166
|
}
|
|
165
167
|
try {
|
|
166
|
-
const result = await
|
|
168
|
+
const result = await sdk.tenants.resolveIpfsUrl(url);
|
|
167
169
|
return result;
|
|
168
170
|
}
|
|
169
171
|
catch (error) {
|
|
170
172
|
console.error('Failed to resolve IPFS URL:', error);
|
|
171
173
|
throw error;
|
|
172
174
|
}
|
|
173
|
-
}, [
|
|
175
|
+
}, [sdk, isInitialized]);
|
|
174
176
|
/**
|
|
175
177
|
* Fetch and process token metadata from a URI
|
|
176
178
|
*
|
|
179
|
+
* Note: Uses sdk.tenants for metadata fetching (chain-agnostic IPFS).
|
|
180
|
+
*
|
|
177
181
|
* @param tokenUri - Token URI to fetch metadata from
|
|
178
182
|
* @returns Promise resolving to processed metadata or null
|
|
179
183
|
*/
|
|
180
184
|
const fetchAndProcessMetadata = useCallback(async (tokenUri) => {
|
|
181
|
-
if (!isInitialized || !
|
|
185
|
+
if (!isInitialized || !sdk) {
|
|
182
186
|
throw new Error('SDK not initialized. Call initialize() first.');
|
|
183
187
|
}
|
|
184
188
|
try {
|
|
185
|
-
const result = await
|
|
189
|
+
const result = await sdk.tenants.fetchAndProcessMetadata(tokenUri);
|
|
186
190
|
return result;
|
|
187
191
|
}
|
|
188
192
|
catch (error) {
|
|
189
193
|
console.error('Failed to fetch and process metadata:', error);
|
|
190
194
|
throw error;
|
|
191
195
|
}
|
|
192
|
-
}, [
|
|
196
|
+
}, [sdk, isInitialized]);
|
|
193
197
|
const getChainDataById = useCallback(async (chainId) => {
|
|
194
198
|
if (!isInitialized || !web3) {
|
|
195
199
|
throw new Error('SDK not initialized. Call initialize() first.');
|
package/dist/index.d.ts
CHANGED
|
@@ -206,7 +206,8 @@ export { PersSDKProvider, usePersSDK, type PersConfig, type PersSDKContext } fro
|
|
|
206
206
|
* }
|
|
207
207
|
* ```
|
|
208
208
|
*/
|
|
209
|
-
export { useAuth, useTokens, useTokenBalances, useTransactions, useTransactionSigner, SigningStatus, useBusiness, useCampaigns, useRedemptions, useWeb3, usePurchases, useTenants, useUsers, useUserStatus, useFiles, useAnalytics, useDonations, useEvents, useTriggerSources
|
|
209
|
+
export { useAuth, useTokens, useTokenBalances, useTransactions, useTransactionSigner, SigningStatus, useBusiness, useCampaigns, useRedemptions, useWeb3, usePurchases, useTenants, useUsers, useUserStatus, useFiles, useAnalytics, useDonations, useEvents, useTriggerSources, useResolvedUrl, useMetadata, useIPFSUrl, // alias for useResolvedUrl
|
|
210
|
+
useTransactionMetadata } from './hooks';
|
|
210
211
|
export type { TransactionSignerHook, OnStatusUpdateFn, StatusUpdateData, SigningStatusType, TransactionSigningResult, SubmissionResult, AuthenticatedUser } from './hooks';
|
|
211
212
|
export type { EventsHook, PersEvent, EventHandler, EventFilter, Unsubscribe } from './hooks';
|
|
212
213
|
export type { TokenBalanceWithToken, UseTokenBalancesOptions, UseTokenBalancesResult } from './hooks';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAGH,OAAO,aAAa,CAAC;AAMrB;;;;;;;;GAQG;AACH,OAAO,EACL,6BAA6B,EAC7B,KAAK,qBAAqB,EAC3B,MAAM,wCAAwC,CAAC;AAMhD;;;;;;;;;;GAUG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAEvE;;;;;;;;GAQG;AACH,OAAO,EACL,wBAAwB,GACzB,MAAM,uCAAuC,CAAC;AAM/C;;;GAGG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAMvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EACL,eAAe,EACf,UAAU,EACV,KAAK,UAAU,EACf,KAAK,cAAc,EACpB,MAAM,6BAA6B,CAAC;AAMrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0FG;AACH,OAAO,EACL,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,WAAW,EACX,YAAY,EACZ,cAAc,EACd,OAAO,EACP,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|