import React, { useState, useEffect } from 'react';
import { View, Text, TextInput, Button, Alert, StyleSheet } from 'react-native';
import ShinaraSDK from 'path-to-your-sdk-instance';
import {
initConnection,
purchaseUpdatedListener,
requestPurchase,
getProducts,
} from 'react-native-iap';
// Define your product IDs (as configured in your App Store)
const productIds = ['com.example.product1'];
const App = () => {
const [referralCode, setReferralCode] = useState('');
const [products, setProducts] = useState([]);
useEffect(() => {
// Initialize the Shinara SDK
const initializeSDK = async () => {
try {
await ShinaraSDK.initialize('<YOUR_API_KEY>');
console.log('SDK initialized successfully.');
} catch (error) {
console.error('SDK initialization failed:', error);
Alert.alert('Error', 'Failed to initialize SDK.');
}
};
initializeSDK();
// Initialize In-App Purchase connection
const initIAP = async () => {
try {
await initConnection();
const availableProducts = await getProducts({ skus: productIds });
setProducts(availableProducts);
} catch (error) {
console.error('Failed to initialize IAP:', error);
Alert.alert('Error', 'Failed to initialize IAP.');
}
};
initIAP();
// Setup purchase listener
const purchaseListener = purchaseUpdatedListener(async (purchase) => {
// Attribute your purchase
if (purchase.transactionId !== null) {
await ShinaraSDK.attributePurchase(
purchase.productId,
purchase.transactionId || '',
);
}
});
// Clean up listener on component unmount
return () => {
if (purchaseListener) {
purchaseListener.remove();
}
};
}, []);
const handleValidateReferralCode = async () => {
try {
const response = await ShinaraSDK.validateReferralCode({ code: referralCode });
console.log('Referral code validated:', response);
Alert.alert('Success', 'Referral code is valid. Program ID: ' + response.programId);
} catch (error) {
console.error('Failed to validate referral code:', error);
Alert.alert('Error', 'Failed to validate referral code.');
}
};
const handlePurchase = async (productId) => {
try {
await requestPurchase({ skus: productId });
console.log('Purchase requested for product:', productId);
} catch (error) {
console.error('Failed to request purchase:', error);
Alert.alert('Error', 'Failed to initiate purchase.');
}
};
return (
<View style={styles.container}>
<Text style={styles.title}>Enter Referral Code</Text>
<TextInput
style={styles.input}
placeholder="Referral Code"
value={referralCode}
onChangeText={setReferralCode}
/>
<Button title="Validate Referral Code" onPress={handleValidateReferralCode} />
<Text style={styles.title}>Available Products:</Text>
{products.map((product) => (
<Button key={product.productId} title={`Buy ${product.title}`} onPress={() => handlePurchase(product.productId)} />
))}
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
padding: 16,
},
title: {
fontSize: 24,
marginBottom: 16,
},
input: {
width: '80%',
borderColor: '#ccc',
borderWidth: 1,
padding: 8,
marginBottom: 16,
},
});
export default App;