Skip to content

Commit a556806

Browse files
committed
Small fixes
1 parent 4111b33 commit a556806

8 files changed

Lines changed: 93 additions & 16 deletions

File tree

example/ios/Podfile.lock

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2160,6 +2160,37 @@ PODS:
21602160
- React-perflogger (= 0.80.1)
21612161
- React-utils (= 0.80.1)
21622162
- SocketRocket
2163+
- RNCClipboard (1.16.3):
2164+
- boost
2165+
- DoubleConversion
2166+
- fast_float
2167+
- fmt
2168+
- glog
2169+
- hermes-engine
2170+
- RCT-Folly
2171+
- RCT-Folly/Fabric
2172+
- RCTRequired
2173+
- RCTTypeSafety
2174+
- React-Core
2175+
- React-debug
2176+
- React-Fabric
2177+
- React-featureflags
2178+
- React-graphics
2179+
- React-hermes
2180+
- React-ImageManager
2181+
- React-jsi
2182+
- React-NativeModulesApple
2183+
- React-RCTFabric
2184+
- React-renderercss
2185+
- React-rendererdebug
2186+
- React-utils
2187+
- ReactCodegen
2188+
- ReactCommon/turbomodule/bridging
2189+
- ReactCommon/turbomodule/core
2190+
- SocketRocket
2191+
- Yoga
2192+
- RNSnackbar (2.9.0):
2193+
- React-Core
21632194
- SocketRocket (0.7.1)
21642195
- Yoga (0.0.0)
21652196

@@ -2237,6 +2268,8 @@ DEPENDENCIES:
22372268
- ReactAppDependencyProvider (from `build/generated/ios`)
22382269
- ReactCodegen (from `build/generated/ios`)
22392270
- ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
2271+
- "RNCClipboard (from `../node_modules/@react-native-clipboard/clipboard`)"
2272+
- RNSnackbar (from `../node_modules/react-native-snackbar`)
22402273
- SocketRocket (~> 0.7.1)
22412274
- Yoga (from `../node_modules/react-native/ReactCommon/yoga`)
22422275

@@ -2393,6 +2426,10 @@ EXTERNAL SOURCES:
23932426
:path: build/generated/ios
23942427
ReactCommon:
23952428
:path: "../node_modules/react-native/ReactCommon"
2429+
RNCClipboard:
2430+
:path: "../node_modules/@react-native-clipboard/clipboard"
2431+
RNSnackbar:
2432+
:path: "../node_modules/react-native-snackbar"
23962433
Yoga:
23972434
:path: "../node_modules/react-native/ReactCommon/yoga"
23982435

@@ -2406,7 +2443,7 @@ SPEC CHECKSUMS:
24062443
hermes-engine: 4f07404533b808de66cf48ac4200463068d0e95a
24072444
NoCodes: 21b87d320a16758c6eb79167ff98010d81b4894e
24082445
Qonversion: 2b32ae8681de3ba02db5b5ed69c8f213ac4a28fa
2409-
qonversion-react-native-sdk: dc32c5cf63d9e4f1d650ba3692209d09f115df06
2446+
qonversion-react-native-sdk: 908023a6c5440ddc45b861a8b1547140c031d3a6
24102447
QonversionSandwich: 6a8c8704a57bc97393ec1684c8932402aa0b7ba9
24112448
RCT-Folly: 59ec0ac1f2f39672a0c6e6cecdd39383b764646f
24122449
RCTDeprecation: efa5010912100e944a7ac9a93a157e1def1988fe
@@ -2472,6 +2509,8 @@ SPEC CHECKSUMS:
24722509
ReactAppDependencyProvider: afd905e84ee36e1678016ae04d7370c75ed539be
24732510
ReactCodegen: f8d5fb047c4cd9d2caade972cad9edac22521362
24742511
ReactCommon: 17fd88849a174bf9ce45461912291aca711410fc
2512+
RNCClipboard: b228d492733d66e0126e18ce66c6d2f90bacc7e5
2513+
RNSnackbar: c1b235eb606b03938c693ce769ed3059c31dff9b
24752514
SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
24762515
Yoga: 703055a9f39562521cdb8657162dfd80f8c174c3
24772516

File renamed without changes.

example/src/App.tsx

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,6 @@ const App: React.FC = () => {
6666
)
6767
.setEnvironment(Environment.SANDBOX)
6868
.setEntitlementsCacheLifetime(EntitlementsCacheLifetime.MONTH)
69-
.setEntitlementsUpdateListener({
70-
onEntitlementsUpdated(entitlements: any) {
71-
console.log(
72-
'📡 [Qonversion] Entitlements updated via listener:',
73-
entitlements
74-
);
75-
dispatch({ type: 'SET_ENTITLEMENTS', payload: entitlements });
76-
},
77-
})
7869
.setProxyURL('api-eu.qonversion.io')
7970
.build();
8071
console.log('✅ [Qonversion] Config built successfully:', config);

example/src/screens/EntitlementsScreen/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ const EntitlementsScreen: React.FC = () => {
2626
await Qonversion.getSharedInstance().checkEntitlements();
2727
console.log(
2828
'✅ [Qonversion] checkEntitlements() call successful:',
29-
entitlements
29+
Object.fromEntries(entitlements)
3030
);
3131
dispatch({ type: 'SET_ENTITLEMENTS', payload: entitlements });
3232
} catch (error: any) {
@@ -62,7 +62,7 @@ const EntitlementsScreen: React.FC = () => {
6262
console.log('🔄 [Qonversion] Starting restore() call...');
6363
dispatch({ type: 'SET_LOADING', payload: true });
6464
const entitlements = await Qonversion.getSharedInstance().restore();
65-
console.log('✅ [Qonversion] restore() call successful:', entitlements);
65+
console.log('✅ [Qonversion] restore() call successful:', Object.fromEntries(entitlements));
6666
dispatch({ type: 'SET_ENTITLEMENTS', payload: entitlements });
6767
Snackbar.show({
6868
text: 'Purchases restored successfully!',

example/src/screens/OtherScreen/index.tsx

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
ScrollView,
88
Platform,
99
} from 'react-native';
10-
import Qonversion from '@qonversion/react-native-sdk';
10+
import Qonversion, { Entitlement, type PromoPurchasesListener } from '@qonversion/react-native-sdk';
1111
import { AppContext } from '../../store/AppStore';
1212
import SkeletonLoader from '../../components/SkeletonLoader';
1313
import styles from './styles';
@@ -120,6 +120,47 @@ const OtherScreen: React.FC = () => {
120120
}
121121
};
122122

123+
const setPromoPurchasesDelegate = () => {
124+
if (Platform.OS !== 'ios') {
125+
Alert.alert('Error', 'This method is iOS only');
126+
return;
127+
}
128+
try {
129+
console.log(
130+
'🔄 [Qonversion] Starting setPromoPurchasesDelegate() call...'
131+
);
132+
133+
const promoPurchasesListener: PromoPurchasesListener = {
134+
onPromoPurchaseReceived: (productId: string, promoPurchaseExecutor: () => Promise<Map<string, Entitlement>>) => {
135+
console.log('🎁 [PromoPurchasesListener] onPromoPurchaseReceived:', {
136+
productId,
137+
});
138+
139+
promoPurchaseExecutor().then(entitlements => {
140+
console.log('✅ [PromoPurchasesListener] promo purchase executed:', Object.fromEntries(entitlements));
141+
}).catch(error => {
142+
console.error('❌ [PromoPurchasesListener] promo purchase failed:', error);
143+
});
144+
},
145+
};
146+
147+
Qonversion.getSharedInstance().setPromoPurchasesDelegate(promoPurchasesListener);
148+
console.log(
149+
'✅ [Qonversion] setPromoPurchasesDelegate() call successful'
150+
);
151+
Snackbar.show({
152+
text: 'Promo purchases delegate set!',
153+
duration: Snackbar.LENGTH_SHORT,
154+
});
155+
} catch (error: any) {
156+
console.error(
157+
'❌ [Qonversion] setPromoPurchasesDelegate() call failed:',
158+
error
159+
);
160+
Alert.alert('Error', error.message);
161+
}
162+
};
163+
123164
if (state.loading) {
124165
return <SkeletonLoader />;
125166
}
@@ -164,6 +205,12 @@ const OtherScreen: React.FC = () => {
164205
>
165206
<Text style={styles.buttonText}>Present Code Redemption Sheet</Text>
166207
</TouchableOpacity>
208+
<TouchableOpacity
209+
style={styles.button}
210+
onPress={setPromoPurchasesDelegate}
211+
>
212+
<Text style={styles.buttonText}>Set Promo Purchases Delegate</Text>
213+
</TouchableOpacity>
167214
</View>
168215
</ScrollView>
169216
);

example/src/screens/ProductDetailScreen/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ const ProductDetailScreen: React.FC<ProductDetailScreenProps> = ({
2828
await Qonversion.getSharedInstance().purchaseProduct(product);
2929
console.log(
3030
'✅ [Qonversion] purchaseProduct() call successful:',
31-
entitlements
31+
Object.fromEntries(entitlements)
3232
);
3333
dispatch({ type: 'SET_ENTITLEMENTS', payload: entitlements });
3434
Snackbar.show({

example/src/screens/ProductsScreen/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const ProductsScreen: React.FC = () => {
1616
console.log('🔄 [Qonversion] Starting products() call...');
1717
dispatch({ type: 'SET_LOADING', payload: true });
1818
const products = await Qonversion.getSharedInstance().products();
19-
console.log('✅ [Qonversion] products() call successful:', products);
19+
console.log('✅ [Qonversion] products() call successful:', Object.fromEntries(products));
2020
dispatch({ type: 'SET_PRODUCTS', payload: products });
2121
} catch (error: any) {
2222
console.error('❌ [Qonversion] products() call failed:', error);

ios/RNNoCodes.mm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ - (void)close:(RCTPromiseResolveBlock)resolve
4747
}
4848

4949
- (void)noCodesDidTriggerWithEvent:(NSString * _Nonnull)event payload:(NSDictionary<NSString *,id> * _Nullable)payload {
50-
[self emitOnNoCodeEvent:@{@"name": event, @"payload": payload}];
50+
[self emitOnNoCodeEvent:@{@"name": event, @"payload": payload ?: [NSNull null]}];
5151
}
5252

5353
#pragma mark - TurboModule

0 commit comments

Comments
 (0)