@explorins/pers-sdk-react-native 2.1.20 → 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.
@@ -7,6 +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, useTransactionMetadata } from './useIPFSUrl';
10
11
  export { usePurchases } from './usePurchases';
11
12
  export { useTenants } from './useTenants';
12
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,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"}
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"}
@@ -8,6 +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, useTransactionMetadata } from './useIPFSUrl';
11
12
  export { usePurchases } from './usePurchases';
12
13
  export { useTenants } from './useTenants';
13
14
  export { useUsers } from './useUsers';
@@ -0,0 +1,118 @@
1
+ import type { TokenMetadata } from '@explorins/pers-sdk';
2
+ /**
3
+ * React hook for resolving media URLs (IPFS or HTTPS).
4
+ *
5
+ * Automatically handles IPFS URLs by resolving them to HTTPS via tenant's gateway.
6
+ * Non-IPFS URLs are returned as-is. Handles loading and error states.
7
+ *
8
+ * Uses sdk.tenants for IPFS resolution (lightweight, no Web3 deps).
9
+ *
10
+ * @param url - The URL to resolve (can be ipfs://, https://, or undefined)
11
+ * @returns Object with resolved URL, loading state, and error
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * function NFTImage({ metadataUri }: { metadataUri?: string }) {
16
+ * const { url, isLoading } = useResolvedUrl(metadataUri);
17
+ *
18
+ * if (isLoading) return <ActivityIndicator />;
19
+ * return <Image source={{ uri: url }} />;
20
+ * }
21
+ * ```
22
+ */
23
+ export declare function useResolvedUrl(url: string | undefined | null): {
24
+ /** Resolved HTTPS URL (or original if not IPFS) */
25
+ url: string | null;
26
+ /** Whether resolution is in progress */
27
+ isLoading: boolean;
28
+ /** Error message if resolution failed */
29
+ error: string | null;
30
+ };
31
+ /**
32
+ * React hook for fetching NFT/token metadata from a URI.
33
+ *
34
+ * Handles IPFS resolution automatically and returns parsed metadata
35
+ * with all nested IPFS URLs already resolved to HTTPS.
36
+ *
37
+ * Uses sdk.tenants for metadata fetching (lightweight, no Web3 deps).
38
+ *
39
+ * @param metadataUri - The metadata URI to fetch (can be ipfs:// or https://)
40
+ * @returns Object with metadata, loading state, error, and refresh function
41
+ *
42
+ * @example
43
+ * ```tsx
44
+ * function NFTDetails({ metadataUri }: { metadataUri?: string }) {
45
+ * const { metadata, isLoading, error } = useMetadata(metadataUri);
46
+ *
47
+ * if (isLoading) return <ActivityIndicator />;
48
+ * if (error) return <Text>Error: {error}</Text>;
49
+ * if (!metadata) return null;
50
+ *
51
+ * return (
52
+ * <View>
53
+ * <Image source={{ uri: metadata.imageUrl }} />
54
+ * <Text>{metadata.name}</Text>
55
+ * <Text>{metadata.description}</Text>
56
+ * </View>
57
+ * );
58
+ * }
59
+ * ```
60
+ */
61
+ export declare function useMetadata(metadataUri: string | undefined | null): {
62
+ /** Parsed metadata with resolved IPFS URLs (imageUrl, animationUrl, etc.) */
63
+ metadata: TokenMetadata | null;
64
+ /** Whether fetch is in progress */
65
+ isLoading: boolean;
66
+ /** Error message if fetch failed */
67
+ error: string | null;
68
+ /** Manually refresh metadata */
69
+ refresh: () => Promise<void>;
70
+ };
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
+ };
118
+ //# sourceMappingURL=useIPFSUrl.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,178 @@
1
+ import { useState, useEffect, useCallback } from 'react';
2
+ import { usePersSDK } from '../providers/PersSDKProvider';
3
+ /**
4
+ * React hook for resolving media URLs (IPFS or HTTPS).
5
+ *
6
+ * Automatically handles IPFS URLs by resolving them to HTTPS via tenant's gateway.
7
+ * Non-IPFS URLs are returned as-is. Handles loading and error states.
8
+ *
9
+ * Uses sdk.tenants for IPFS resolution (lightweight, no Web3 deps).
10
+ *
11
+ * @param url - The URL to resolve (can be ipfs://, https://, or undefined)
12
+ * @returns Object with resolved URL, loading state, and error
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * function NFTImage({ metadataUri }: { metadataUri?: string }) {
17
+ * const { url, isLoading } = useResolvedUrl(metadataUri);
18
+ *
19
+ * if (isLoading) return <ActivityIndicator />;
20
+ * return <Image source={{ uri: url }} />;
21
+ * }
22
+ * ```
23
+ */
24
+ export function useResolvedUrl(url) {
25
+ const { sdk, isInitialized } = usePersSDK();
26
+ const [resolvedUrl, setResolvedUrl] = useState(null);
27
+ const [isLoading, setIsLoading] = useState(false);
28
+ const [error, setError] = useState(null);
29
+ useEffect(() => {
30
+ if (!url || !isInitialized || !sdk) {
31
+ setResolvedUrl(null);
32
+ return;
33
+ }
34
+ // Non-IPFS URLs don't need resolution
35
+ if (!url.startsWith('ipfs://')) {
36
+ setResolvedUrl(url);
37
+ return;
38
+ }
39
+ setIsLoading(true);
40
+ setError(null);
41
+ sdk.tenants.resolveIpfsUrl(url)
42
+ .then((resolved) => {
43
+ setResolvedUrl(resolved);
44
+ })
45
+ .catch((err) => {
46
+ setError(err instanceof Error ? err.message : 'Failed to resolve URL');
47
+ setResolvedUrl(null);
48
+ })
49
+ .finally(() => {
50
+ setIsLoading(false);
51
+ });
52
+ }, [url, isInitialized, sdk]);
53
+ return {
54
+ /** Resolved HTTPS URL (or original if not IPFS) */
55
+ url: resolvedUrl,
56
+ /** Whether resolution is in progress */
57
+ isLoading,
58
+ /** Error message if resolution failed */
59
+ error,
60
+ };
61
+ }
62
+ /**
63
+ * React hook for fetching NFT/token metadata from a URI.
64
+ *
65
+ * Handles IPFS resolution automatically and returns parsed metadata
66
+ * with all nested IPFS URLs already resolved to HTTPS.
67
+ *
68
+ * Uses sdk.tenants for metadata fetching (lightweight, no Web3 deps).
69
+ *
70
+ * @param metadataUri - The metadata URI to fetch (can be ipfs:// or https://)
71
+ * @returns Object with metadata, loading state, error, and refresh function
72
+ *
73
+ * @example
74
+ * ```tsx
75
+ * function NFTDetails({ metadataUri }: { metadataUri?: string }) {
76
+ * const { metadata, isLoading, error } = useMetadata(metadataUri);
77
+ *
78
+ * if (isLoading) return <ActivityIndicator />;
79
+ * if (error) return <Text>Error: {error}</Text>;
80
+ * if (!metadata) return null;
81
+ *
82
+ * return (
83
+ * <View>
84
+ * <Image source={{ uri: metadata.imageUrl }} />
85
+ * <Text>{metadata.name}</Text>
86
+ * <Text>{metadata.description}</Text>
87
+ * </View>
88
+ * );
89
+ * }
90
+ * ```
91
+ */
92
+ export function useMetadata(metadataUri) {
93
+ const { sdk, isInitialized } = usePersSDK();
94
+ const [metadata, setMetadata] = useState(null);
95
+ const [isLoading, setIsLoading] = useState(false);
96
+ const [error, setError] = useState(null);
97
+ const fetchMetadata = useCallback(async () => {
98
+ if (!metadataUri || !isInitialized || !sdk) {
99
+ setMetadata(null);
100
+ return;
101
+ }
102
+ setIsLoading(true);
103
+ setError(null);
104
+ try {
105
+ const result = await sdk.tenants.fetchAndProcessMetadata(metadataUri);
106
+ setMetadata(result);
107
+ }
108
+ catch (err) {
109
+ setError(err instanceof Error ? err.message : 'Failed to fetch metadata');
110
+ setMetadata(null);
111
+ }
112
+ finally {
113
+ setIsLoading(false);
114
+ }
115
+ }, [metadataUri, isInitialized, sdk]);
116
+ useEffect(() => {
117
+ fetchMetadata();
118
+ }, [fetchMetadata]);
119
+ return {
120
+ /** Parsed metadata with resolved IPFS URLs (imageUrl, animationUrl, etc.) */
121
+ metadata,
122
+ /** Whether fetch is in progress */
123
+ isLoading,
124
+ /** Error message if fetch failed */
125
+ error,
126
+ /** Manually refresh metadata */
127
+ refresh: fetchMetadata,
128
+ };
129
+ }
130
+ // Re-export with descriptive aliases
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":"useTransactions.d.ts","sourceRoot":"","sources":["../../src/hooks/useTransactions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EACV,qBAAqB,EACrB,6BAA6B,EAC7B,cAAc,EACd,+BAA+B,EAC/B,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAG/E,YAAY,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,eAAe;iCAgC4B,qBAAqB,mBAAmB,gBAAgB,KAAG,QAAQ,6BAA6B,CAAC;wCAmEtI,MAAM,YACX,0BAA0B,EAAE,KACrC,QAAQ,cAAc,GAAG,IAAI,CAAC;0CAoDrB,uBAAuB,KAChC,QAAQ,qBAAqB,cAAc,CAAC,CAAC;wCA2CrC,+BAA+B,GAAG;QACzC,OAAO,CAAC,EAAE,0BAA0B,EAAE,CAAC;KACxC,KACA,QAAQ,qBAAqB,cAAc,CAAC,CAAC;iCAcI,QAAQ,IAAI,CAAC;;;;CAyBlE,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"useTransactions.d.ts","sourceRoot":"","sources":["../../src/hooks/useTransactions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EACV,qBAAqB,EACrB,6BAA6B,EAC7B,cAAc,EACd,+BAA+B,EAC/B,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAG/E,YAAY,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,eAAe;iCAgC4B,qBAAqB,mBAAmB,gBAAgB,KAAG,QAAQ,6BAA6B,CAAC;wCAmEtI,MAAM,YACX,0BAA0B,EAAE,KACrC,QAAQ,cAAc,GAAG,IAAI,CAAC;0CAmDrB,uBAAuB,KAChC,QAAQ,qBAAqB,cAAc,CAAC,CAAC;wCAyCrC,+BAA+B,GAAG;QACzC,OAAO,CAAC,EAAE,0BAA0B,EAAE,CAAC;KACxC,KACA,QAAQ,qBAAqB,cAAc,CAAC,CAAC;iCAcI,QAAQ,IAAI,CAAC;;;;CAyBlE,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -134,8 +134,7 @@ export const useTransactions = () => {
134
134
  throw new Error('SDK not initialized. Call initialize() first.');
135
135
  }
136
136
  try {
137
- const result = await sdk.transactions.getTransactionById(transactionId, include);
138
- return result;
137
+ return await sdk.transactions.getTransactionById(transactionId, include);
139
138
  }
140
139
  catch (error) {
141
140
  console.error('Failed to fetch transaction:', error);
@@ -184,8 +183,7 @@ export const useTransactions = () => {
184
183
  throw new Error('SDK not initialized. Call initialize() first.');
185
184
  }
186
185
  try {
187
- const result = await sdk.transactions.getUserTransactionHistory(options);
188
- return result;
186
+ return await sdk.transactions.getUserTransactionHistory(options);
189
187
  }
190
188
  catch (error) {
191
189
  console.error('Failed to fetch transaction history:', error);
@@ -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;0BAqBzD,MAAM,KAAG,QAAQ,MAAM,CAAC;wCAoBV,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"}
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"}
@@ -145,16 +145,27 @@ export const useWeb3 = () => {
145
145
  /**
146
146
  * Resolve IPFS URL to HTTP gateway URL
147
147
  *
148
- * @deprecated Use `sdk.tenant.resolveIPFSUrl()` directly - IPFS is chain-agnostic
148
+ * Converts an ipfs:// URL to an HTTPS URL using the tenant's configured IPFS gateway.
149
+ * Non-IPFS URLs are returned unchanged.
150
+ *
151
+ * Note: Uses sdk.tenants for IPFS resolution (chain-agnostic).
152
+ *
149
153
  * @param url - IPFS URL to resolve (ipfs://...)
150
154
  * @returns Promise resolving to HTTP gateway URL
155
+ *
156
+ * @example
157
+ * ```typescript
158
+ * const { resolveIPFSUrl } = useWeb3();
159
+ * const httpsUrl = await resolveIPFSUrl('ipfs://QmHash...');
160
+ * // Returns: 'https://gateway.pinata.cloud/ipfs/QmHash...'
161
+ * ```
151
162
  */
152
163
  const resolveIPFSUrl = useCallback(async (url) => {
153
164
  if (!isInitialized || !sdk) {
154
165
  throw new Error('SDK not initialized. Call initialize() first.');
155
166
  }
156
167
  try {
157
- const result = await sdk.tenants.resolveIPFSUrl(url);
168
+ const result = await sdk.tenants.resolveIpfsUrl(url);
158
169
  return result;
159
170
  }
160
171
  catch (error) {
@@ -165,22 +176,24 @@ export const useWeb3 = () => {
165
176
  /**
166
177
  * Fetch and process token metadata from a URI
167
178
  *
179
+ * Note: Uses sdk.tenants for metadata fetching (chain-agnostic IPFS).
180
+ *
168
181
  * @param tokenUri - Token URI to fetch metadata from
169
182
  * @returns Promise resolving to processed metadata or null
170
183
  */
171
184
  const fetchAndProcessMetadata = useCallback(async (tokenUri) => {
172
- if (!isInitialized || !web3) {
185
+ if (!isInitialized || !sdk) {
173
186
  throw new Error('SDK not initialized. Call initialize() first.');
174
187
  }
175
188
  try {
176
- const result = await web3.fetchAndProcessMetadata(tokenUri);
189
+ const result = await sdk.tenants.fetchAndProcessMetadata(tokenUri);
177
190
  return result;
178
191
  }
179
192
  catch (error) {
180
193
  console.error('Failed to fetch and process metadata:', error);
181
194
  throw error;
182
195
  }
183
- }, [web3, isInitialized]);
196
+ }, [sdk, isInitialized]);
184
197
  const getChainDataById = useCallback(async (chainId) => {
185
198
  if (!isInitialized || !web3) {
186
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 } from './hooks';
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';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}