@explorins/pers-sdk-react-native 2.3.6 → 2.3.8

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.
Files changed (62) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1266 -1244
  3. package/dist/__tests__/PersSDKProvider.test.js +33 -0
  4. package/dist/hooks/useBusiness.d.ts +2 -2
  5. package/dist/hooks/useBusiness.d.ts.map +1 -1
  6. package/dist/hooks/useBusiness.js +2 -2
  7. package/dist/hooks/useIPFSUrl.d.ts +3 -3
  8. package/dist/hooks/useIPFSUrl.d.ts.map +1 -1
  9. package/dist/hooks/useIPFSUrl.js +7 -7
  10. package/dist/hooks/useTransactions.d.ts.map +1 -1
  11. package/dist/hooks/useTransactions.js +13 -5
  12. package/dist/hooks/useWeb3.js +4 -4
  13. package/dist/index.d.ts +1 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +2412 -492
  16. package/dist/index.js.map +1 -1
  17. package/dist/providers/PersSDKProvider.d.ts +4 -0
  18. package/dist/providers/PersSDKProvider.d.ts.map +1 -1
  19. package/dist/providers/PersSDKProvider.js +14 -0
  20. package/dist/providers/react-native-http-client.d.ts +2 -0
  21. package/dist/providers/react-native-http-client.d.ts.map +1 -1
  22. package/dist/providers/react-native-http-client.js +5 -2
  23. package/dist/storage/rn-secure-storage.d.ts.map +1 -1
  24. package/dist/storage/rn-secure-storage.js +21 -8
  25. package/package.json +3 -3
  26. package/src/__tests__/PersSDKProvider.test.tsx +484 -420
  27. package/src/__tests__/setup.ts +40 -40
  28. package/src/hooks/index.ts +60 -60
  29. package/src/hooks/useAnalytics.ts +327 -327
  30. package/src/hooks/useAuth.ts +265 -265
  31. package/src/hooks/useBookings.ts +191 -191
  32. package/src/hooks/useBusiness.ts +251 -251
  33. package/src/hooks/useCampaigns.ts +500 -500
  34. package/src/hooks/useDonations.ts +66 -66
  35. package/src/hooks/useEvents.ts +372 -372
  36. package/src/hooks/useFiles.ts +155 -155
  37. package/src/hooks/useIPFSUrl.ts +192 -192
  38. package/src/hooks/usePurchases.ts +65 -65
  39. package/src/hooks/useRedemptions.ts +467 -467
  40. package/src/hooks/useTenants.ts +72 -72
  41. package/src/hooks/useTokenBalances.ts +385 -385
  42. package/src/hooks/useTokens.ts +313 -313
  43. package/src/hooks/useTransactionSigner.ts +611 -611
  44. package/src/hooks/useTransactions.ts +299 -290
  45. package/src/hooks/useTriggerSources.ts +301 -301
  46. package/src/hooks/useUserStatus.ts +61 -61
  47. package/src/hooks/useUsers.ts +167 -167
  48. package/src/hooks/useWeb3.ts +355 -355
  49. package/src/index.ts +777 -774
  50. package/src/polyfills/index.ts +160 -160
  51. package/src/polyfills/web3-polyfills.ts +97 -97
  52. package/src/providers/PersSDKProvider.tsx +393 -374
  53. package/src/providers/react-native-auth-provider.ts +110 -110
  54. package/src/providers/react-native-http-client.ts +150 -145
  55. package/src/providers/rn-dpop-provider.ts +190 -190
  56. package/src/storage/async-storage-token-storage.ts +185 -185
  57. package/src/storage/rn-secure-storage.ts +182 -170
  58. package/src/types/react-native-globals.d.ts +45 -45
  59. package/src/utils/index.ts +8 -8
  60. package/src/utils/platform-detection.ts +86 -86
  61. package/dist/index-CzLxqePZ.js +0 -7717
  62. package/dist/index-CzLxqePZ.js.map +0 -1
@@ -30,8 +30,11 @@ jest.mock('@explorins/pers-sdk/core', () => {
30
30
  };
31
31
  const MockPersSDK = jest.fn().mockImplementation(() => {
32
32
  const events = createMockEventEmitter();
33
+ let currentLocale = null;
33
34
  mockSdkInstance = {
34
35
  events,
36
+ getLocale: jest.fn(() => currentLocale),
37
+ setLocale: jest.fn((next) => { currentLocale = next ? next.toLowerCase() : null; }),
35
38
  auth: {
36
39
  ensureValidToken: jest.fn().mockResolvedValue(true)
37
40
  },
@@ -119,6 +122,36 @@ describe('PersSDKProvider', () => {
119
122
  expect(PersSDK).toHaveBeenCalledTimes(1);
120
123
  });
121
124
  });
125
+ describe('locale', () => {
126
+ it('exposes a null locale until one is set', async () => {
127
+ let capturedContext = null;
128
+ render(_jsx(PersSDKProvider, { config: { apiProjectKey: 'test-project' }, children: _jsx(TestConsumer, { onContext: (ctx) => { capturedContext = ctx; } }) }));
129
+ await waitFor(() => expect(capturedContext?.isInitialized).toBe(true));
130
+ expect(capturedContext.locale).toBeNull();
131
+ });
132
+ it('passes the configured locale through to the SDK config', async () => {
133
+ const { PersSDK } = require('@explorins/pers-sdk/core');
134
+ render(_jsx(PersSDKProvider, { config: { apiProjectKey: 'test-project', locale: 'auto' }, children: _jsx("div", {}) }));
135
+ await waitFor(() => expect(PersSDK).toHaveBeenCalledTimes(1));
136
+ expect(PersSDK.mock.calls[0][1]).toMatchObject({ locale: 'auto' });
137
+ });
138
+ it('setLocale updates the SDK and the context so consumers re-render', async () => {
139
+ let capturedContext = null;
140
+ render(_jsx(PersSDKProvider, { config: { apiProjectKey: 'test-project' }, children: _jsx(TestConsumer, { onContext: (ctx) => { capturedContext = ctx; } }) }));
141
+ await waitFor(() => expect(capturedContext?.isInitialized).toBe(true));
142
+ act(() => { capturedContext.setLocale('ar-SA'); });
143
+ await waitFor(() => expect(capturedContext?.locale).toBe('ar-sa'));
144
+ expect(mockSdkInstance.setLocale).toHaveBeenCalledWith('ar-SA');
145
+ act(() => { capturedContext.setLocale(null); });
146
+ await waitFor(() => expect(capturedContext?.locale).toBeNull());
147
+ });
148
+ it('setLocale throws before the SDK is initialized', async () => {
149
+ let capturedContext = null;
150
+ render(_jsx(PersSDKProvider, { children: _jsx(TestConsumer, { onContext: (ctx) => { capturedContext = ctx; } }) }));
151
+ await waitFor(() => expect(capturedContext).not.toBeNull());
152
+ expect(() => capturedContext.setLocale('de')).toThrow('SDK not initialized');
153
+ });
154
+ });
122
155
  describe('event handling', () => {
123
156
  it('should set user on session_restored event', async () => {
124
157
  let capturedContext = null;
@@ -1,4 +1,4 @@
1
- import type { BusinessDTO, BusinessTypeDTO, BusinessUpdateRequestDTO, BusinessToggleActiveRequestDTO, PaginatedResponseDTO, BusinessFilterOptions } from '@explorins/pers-sdk';
1
+ import type { BusinessDTO, BusinessCreateRequestDTO, BusinessTypeDTO, BusinessUpdateRequestDTO, BusinessToggleActiveRequestDTO, PaginatedResponseDTO, BusinessFilterOptions } from '@explorins/pers-sdk';
2
2
  export type { BusinessFilterOptions } from '@explorins/pers-sdk';
3
3
  /**
4
4
  * React hook for business operations in the PERS SDK
@@ -41,7 +41,7 @@ export declare const useBusiness: () => {
41
41
  getBusinessById: (businessId: string) => Promise<BusinessDTO | null>;
42
42
  getBusinessByAccount: (accountAddress: string) => Promise<BusinessDTO>;
43
43
  getBusinessesByType: (typeId: string) => Promise<PaginatedResponseDTO<BusinessDTO>>;
44
- createBusiness: (displayName: string) => Promise<BusinessDTO>;
44
+ createBusiness: (dto: BusinessCreateRequestDTO) => Promise<BusinessDTO>;
45
45
  updateBusiness: (businessId: string, businessData: BusinessUpdateRequestDTO) => Promise<BusinessDTO>;
46
46
  toggleBusinessStatus: (businessId: string, toggleData: BusinessToggleActiveRequestDTO) => Promise<BusinessDTO>;
47
47
  isAvailable: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"useBusiness.d.ts","sourceRoot":"","sources":["../../src/hooks/useBusiness.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAG/K,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,WAAW;+BAgB4B,QAAQ,qBAAqB,WAAW,CAAC,CAAC;4BA2B7C,QAAQ,qBAAqB,eAAe,CAAC,CAAC;8BAsD1C,qBAAqB,KAAG,QAAQ,qBAAqB,WAAW,CAAC,CAAC;kCAxC9D,MAAM,KAAG,QAAQ,WAAW,GAAG,IAAI,CAAC;2CAsD3B,MAAM,KAAG,QAAQ,WAAW,CAAC;kCActC,MAAM,KAAG,QAAQ,qBAAqB,WAAW,CAAC,CAAC;kCA6BnD,MAAM,KAAG,QAAQ,WAAW,CAAC;iCAc9B,MAAM,gBAAgB,wBAAwB,KAAG,QAAQ,WAAW,CAAC;uCAc/D,MAAM,cAAc,8BAA8B,KAAG,QAAQ,WAAW,CAAC;;CA0BtI,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC"}
1
+ {"version":3,"file":"useBusiness.d.ts","sourceRoot":"","sources":["../../src/hooks/useBusiness.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAwB,EAAE,eAAe,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAGzM,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,WAAW;+BAgB4B,QAAQ,qBAAqB,WAAW,CAAC,CAAC;4BA2B7C,QAAQ,qBAAqB,eAAe,CAAC,CAAC;8BAsD1C,qBAAqB,KAAG,QAAQ,qBAAqB,WAAW,CAAC,CAAC;kCAxC9D,MAAM,KAAG,QAAQ,WAAW,GAAG,IAAI,CAAC;2CAsD3B,MAAM,KAAG,QAAQ,WAAW,CAAC;kCActC,MAAM,KAAG,QAAQ,qBAAqB,WAAW,CAAC,CAAC;0BA6B3D,wBAAwB,KAAG,QAAQ,WAAW,CAAC;iCAcxC,MAAM,gBAAgB,wBAAwB,KAAG,QAAQ,WAAW,CAAC;uCAc/D,MAAM,cAAc,8BAA8B,KAAG,QAAQ,WAAW,CAAC;;CA0BtI,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC"}
@@ -181,12 +181,12 @@ export const useBusiness = () => {
181
181
  * console.log('Business created:', business);
182
182
  * ```
183
183
  */
184
- const createBusiness = useCallback(async (displayName) => {
184
+ const createBusiness = useCallback(async (dto) => {
185
185
  if (!isInitialized || !sdk) {
186
186
  throw new Error('SDK not initialized. Call initialize() first.');
187
187
  }
188
188
  try {
189
- const result = await sdk.businesses.createBusiness(displayName);
189
+ const result = await sdk.businesses.createBusiness(dto);
190
190
  return result;
191
191
  }
192
192
  catch (error) {
@@ -5,7 +5,7 @@ import type { TokenMetadata } from '@explorins/pers-sdk';
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).
8
+ * Uses sdk.ipfs for IPFS resolution (lightweight, no Web3 deps).
9
9
  *
10
10
  * @param url - The URL to resolve (can be ipfs://, https://, or undefined)
11
11
  * @returns Object with resolved URL, loading state, and error
@@ -34,7 +34,7 @@ export declare function useResolvedUrl(url: string | undefined | null): {
34
34
  * Handles IPFS resolution automatically and returns parsed metadata
35
35
  * with all nested IPFS URLs already resolved to HTTPS.
36
36
  *
37
- * Uses sdk.tenants for metadata fetching (lightweight, no Web3 deps).
37
+ * Uses sdk.ipfs for metadata fetching (lightweight, no Web3 deps).
38
38
  *
39
39
  * @param metadataUri - The metadata URI to fetch (can be ipfs:// or https://)
40
40
  * @returns Object with metadata, loading state, error, and refresh function
@@ -59,7 +59,7 @@ export declare function useResolvedUrl(url: string | undefined | null): {
59
59
  * ```
60
60
  */
61
61
  export declare function useMetadata(metadataUri: string | undefined | null): {
62
- /** Parsed metadata with resolved IPFS URLs (imageUrl, animationUrl, etc.) */
62
+ /** Parsed metadata with resolved IPFS URLs (imageUrl, animationUrl, etc.), localized for the current locale */
63
63
  metadata: TokenMetadata | null;
64
64
  /** Whether fetch is in progress */
65
65
  isLoading: boolean;
@@ -1 +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"}
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,+GAA+G;;IAE/G,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"}
@@ -6,7 +6,7 @@ import { usePersSDK } from '../providers/PersSDKProvider';
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).
9
+ * Uses sdk.ipfs for IPFS resolution (lightweight, no Web3 deps).
10
10
  *
11
11
  * @param url - The URL to resolve (can be ipfs://, https://, or undefined)
12
12
  * @returns Object with resolved URL, loading state, and error
@@ -38,7 +38,7 @@ export function useResolvedUrl(url) {
38
38
  }
39
39
  setIsLoading(true);
40
40
  setError(null);
41
- sdk.tenants.resolveIpfsUrl(url)
41
+ sdk.ipfs.resolveUrl(url)
42
42
  .then((resolved) => {
43
43
  setResolvedUrl(resolved);
44
44
  })
@@ -65,7 +65,7 @@ export function useResolvedUrl(url) {
65
65
  * Handles IPFS resolution automatically and returns parsed metadata
66
66
  * with all nested IPFS URLs already resolved to HTTPS.
67
67
  *
68
- * Uses sdk.tenants for metadata fetching (lightweight, no Web3 deps).
68
+ * Uses sdk.ipfs for metadata fetching (lightweight, no Web3 deps).
69
69
  *
70
70
  * @param metadataUri - The metadata URI to fetch (can be ipfs:// or https://)
71
71
  * @returns Object with metadata, loading state, error, and refresh function
@@ -90,7 +90,7 @@ export function useResolvedUrl(url) {
90
90
  * ```
91
91
  */
92
92
  export function useMetadata(metadataUri) {
93
- const { sdk, isInitialized } = usePersSDK();
93
+ const { sdk, isInitialized, locale } = usePersSDK();
94
94
  const [metadata, setMetadata] = useState(null);
95
95
  const [isLoading, setIsLoading] = useState(false);
96
96
  const [error, setError] = useState(null);
@@ -102,7 +102,7 @@ export function useMetadata(metadataUri) {
102
102
  setIsLoading(true);
103
103
  setError(null);
104
104
  try {
105
- const result = await sdk.tenants.fetchAndProcessMetadata(metadataUri);
105
+ const result = await sdk.ipfs.fetchMetadata(metadataUri);
106
106
  setMetadata(result);
107
107
  }
108
108
  catch (err) {
@@ -112,12 +112,12 @@ export function useMetadata(metadataUri) {
112
112
  finally {
113
113
  setIsLoading(false);
114
114
  }
115
- }, [metadataUri, isInitialized, sdk]);
115
+ }, [metadataUri, isInitialized, sdk, locale]);
116
116
  useEffect(() => {
117
117
  fetchMetadata();
118
118
  }, [fetchMetadata]);
119
119
  return {
120
- /** Parsed metadata with resolved IPFS URLs (imageUrl, animationUrl, etc.) */
120
+ /** Parsed metadata with resolved IPFS URLs (imageUrl, animationUrl, etc.), localized for the current locale */
121
121
  metadata,
122
122
  /** Whether fetch is in progress */
123
123
  isLoading,
@@ -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;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"}
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;AAI/E,YAAY,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,eAAe;iCAgC4B,qBAAqB,mBAAmB,gBAAgB,KAAG,QAAQ,6BAA6B,CAAC;wCA2EtI,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"}
@@ -1,6 +1,7 @@
1
1
  import { useCallback } from 'react';
2
2
  import { usePersSDK } from '../providers/PersSDKProvider';
3
3
  import { useTransactionSigner } from './useTransactionSigner';
4
+ import { needsSubmission } from '@explorins/pers-sdk/transaction';
4
5
  /**
5
6
  * React hook for transaction operations in the PERS SDK
6
7
  *
@@ -73,15 +74,22 @@ export const useTransactions = () => {
73
74
  }
74
75
  try {
75
76
  const result = await sdk.transactions.createTransaction(request);
76
- // Check if transaction requires signing (contains actionable authToken)
77
+ // If backend already signed custodially, return as-is so caller can build QR
78
+ // from result.signatureData directly (no client signing needed)
79
+ if (needsSubmission(result)) {
80
+ return result;
81
+ }
82
+ // If client signer is unavailable, return as-is so caller can fall back to
83
+ // result.actionable.actionUrl (external signing URL) if present
84
+ if (!isSignerAvailable) {
85
+ console.warn('[useTransactions] Transaction signer not available, returning result for caller to handle');
86
+ return result;
87
+ }
88
+ // Check if transaction requires client signing (contains actionable authToken)
77
89
  // Type assertion needed as TransactionRequestResponseDTO type may not include all dynamic properties
78
90
  const txToken = result?.actionable?.authToken;
79
91
  if (txToken) {
80
92
  try {
81
- if (!isSignerAvailable) {
82
- console.warn('[useTransactions] Transaction signer not available, skipping automatic signing');
83
- return result;
84
- }
85
93
  // Automatically sign the transaction using the authToken
86
94
  const signingResult = await signAndSubmitTransactionWithJWT(txToken, onStatusUpdate);
87
95
  if (signingResult.success) {
@@ -148,7 +148,7 @@ 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).
151
+ * Note: Uses sdk.ipfs for IPFS resolution (chain-agnostic).
152
152
  *
153
153
  * @param url - IPFS URL to resolve (ipfs://...)
154
154
  * @returns Promise resolving to HTTP gateway URL
@@ -165,7 +165,7 @@ export const useWeb3 = () => {
165
165
  throw new Error('SDK not initialized. Call initialize() first.');
166
166
  }
167
167
  try {
168
- const result = await sdk.tenants.resolveIpfsUrl(url);
168
+ const result = await sdk.ipfs.resolveUrl(url);
169
169
  return result;
170
170
  }
171
171
  catch (error) {
@@ -176,7 +176,7 @@ export const useWeb3 = () => {
176
176
  /**
177
177
  * Fetch and process token metadata from a URI
178
178
  *
179
- * Note: Uses sdk.tenants for metadata fetching (chain-agnostic IPFS).
179
+ * Note: Uses sdk.ipfs for metadata fetching (chain-agnostic IPFS).
180
180
  *
181
181
  * @param tokenUri - Token URI to fetch metadata from
182
182
  * @returns Promise resolving to processed metadata or null
@@ -186,7 +186,7 @@ export const useWeb3 = () => {
186
186
  throw new Error('SDK not initialized. Call initialize() first.');
187
187
  }
188
188
  try {
189
- const result = await sdk.tenants.fetchAndProcessMetadata(tokenUri);
189
+ const result = await sdk.ipfs.fetchMetadata(tokenUri);
190
190
  return result;
191
191
  }
192
192
  catch (error) {
package/dist/index.d.ts CHANGED
@@ -325,7 +325,7 @@ export type { TokenBalanceRequest, TokenBalance, TokenMetadata, TokenCollection,
325
325
  * @see {@link buildPOSBurnRequest} - Create POS burn requests (business submits burn on behalf of user)
326
326
  * @see {@link buildSubmissionRequest} - Create submission requests from QR/signature data
327
327
  */
328
- export { buildMintRequest, buildBurnRequest, buildTransferRequest, buildPOSTransferRequest, buildPOSBurnRequest, buildSubmissionRequest, ClientTransactionType, extractDeadlineFromSigningData, buildPendingTransactionData } from '@explorins/pers-sdk/transaction';
328
+ export { buildMintRequest, buildBurnRequest, buildTransferRequest, buildPOSTransferRequest, buildPOSBurnRequest, buildSubmissionRequest, ClientTransactionType, extractDeadlineFromSigningData, buildPendingTransactionData, needsSubmission, needsExternalSigning, getSigningUrl } from '@explorins/pers-sdk/transaction';
329
329
  export type { POSAuthorizationOptions, PendingTransactionParams } from '@explorins/pers-sdk/transaction';
330
330
  /**
331
331
  * Structured error handling for PERS SDK
@@ -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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"}