mirror of
https://github.com/ecency/ecency-mobile.git
synced 2024-12-22 12:51:42 +03:00
wip on iap
This commit is contained in:
parent
ebd8c9108b
commit
0919190de3
@ -28,59 +28,114 @@ import BoostScreen from '../screen/boostScreen';
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
const ITEM_SKUS = Platform.select({
|
||||||
|
ios: ['099points', '199points', '499points', '999points', '4999points', '9999points'],
|
||||||
|
android: ['099points', '199points', '499points', '999points', '4999points', '9999points'],
|
||||||
|
});
|
||||||
|
|
||||||
|
const BOOST_DATA = Platform.select({
|
||||||
|
ios: [
|
||||||
|
{
|
||||||
|
id: '099points',
|
||||||
|
name: '10000 ESTM',
|
||||||
|
priceText: '100$',
|
||||||
|
price: 100,
|
||||||
|
description: 'BEST DEAL!',
|
||||||
|
},
|
||||||
|
{ id: '199points', name: '5000 ESTM', quantity: 500, price: 50, description: 'POPULAR' },
|
||||||
|
{ id: '499points', name: '1000 ESTM', quantity: 10000, price: 10, description: '' },
|
||||||
|
{ id: '999points', name: '500 ESTM', quantity: 500, price: 5, description: '' },
|
||||||
|
{ id: '4999points', name: '200 ESTM', quantity: 200, price: 2, description: '' },
|
||||||
|
{ id: '9999points', name: '100 ESTM', quantity: 100, price: 1, description: '' },
|
||||||
|
],
|
||||||
|
android: [
|
||||||
|
{
|
||||||
|
id: '099points',
|
||||||
|
name: '10000 ESTM',
|
||||||
|
priceText: '100$',
|
||||||
|
price: 100,
|
||||||
|
description: 'BEST DEAL!',
|
||||||
|
},
|
||||||
|
{ id: '199points', name: '5000 ESTM', quantity: 500, price: 50, description: 'POPULAR' },
|
||||||
|
{ id: '499points', name: '1000 ESTM', quantity: 10000, price: 10, description: '' },
|
||||||
|
{ id: '999points', name: '500 ESTM', quantity: 500, price: 5, description: '' },
|
||||||
|
{ id: '4999points', name: '200 ESTM', quantity: 200, price: 2, description: '' },
|
||||||
|
{ id: '9999points', name: '100 ESTM', quantity: 100, price: 1, description: '' },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
class BoostContainer extends Component {
|
class BoostContainer extends Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
this.state = {};
|
this.state = {
|
||||||
|
receipt: '',
|
||||||
|
// productList: '',
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Component Life Cycle Functions
|
// Component Life Cycle Functions
|
||||||
async componentDidMount() {
|
async componentDidMount() {
|
||||||
try {
|
this._getItems();
|
||||||
const itemSkus = Platform.select({
|
|
||||||
ios: ['app.esteem.mobile.ios.099_points'],
|
|
||||||
android: ['com.example.099points'],
|
|
||||||
});
|
|
||||||
// await RNIap.prepare();
|
|
||||||
const products = await RNIap.getProducts([
|
|
||||||
'099points',
|
|
||||||
'199points',
|
|
||||||
'499points',
|
|
||||||
'999points',
|
|
||||||
'4999points',
|
|
||||||
'9999points',
|
|
||||||
]);
|
|
||||||
// this.setState({ items });
|
|
||||||
console.log(products);
|
|
||||||
} catch (err) {
|
|
||||||
console.warn(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.purchaseUpdateSubscription = purchaseUpdatedListener((purchase: ProductPurchase) => {
|
|
||||||
console.log('purchaseUpdatedListener', purchase);
|
|
||||||
const receipt = purchase.transactionReceipt;
|
|
||||||
if (receipt) {
|
|
||||||
alert('done');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
this.purchaseErrorSubscription = purchaseErrorListener((error: PurchaseError) => {
|
|
||||||
console.warn('purchaseErrorListener', error);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Component Functions
|
_getAvailablePurchases = async () => {
|
||||||
|
|
||||||
_purchase = async sku => {
|
|
||||||
try {
|
try {
|
||||||
await RNIap.requestPurchase('099points', false);
|
const purchases = await RNIap.getAvailablePurchases();
|
||||||
|
console.info('Available purchases :: ', purchases);
|
||||||
|
if (purchases && purchases.length > 0) {
|
||||||
|
this.setState({
|
||||||
|
receipt: purchases[0].transactionReceipt,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
console.warn(err.code, err.message);
|
||||||
|
Alert.alert(err.message);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
_getItems = async () => {
|
||||||
|
try {
|
||||||
|
console.log(ITEM_SKUS);
|
||||||
|
const products = await RNIap.getProducts(ITEM_SKUS);
|
||||||
|
// const products = await RNIap.getSubscriptions(itemSkus);
|
||||||
|
console.log('Products', products);
|
||||||
|
// this.setState({ productList: products });
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.warn(err.code, err.message);
|
console.warn(err.code, err.message);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Component Functions
|
||||||
|
|
||||||
|
_buyItem = async sku => {
|
||||||
|
try {
|
||||||
|
RNIap.requestPurchase(sku);
|
||||||
|
} catch (err) {
|
||||||
|
console.warn(err.code, err.message);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// _buyItem = async sku => {
|
||||||
|
// console.info('buyItem', sku);
|
||||||
|
// // const purchase = await RNIap.buyProduct(sku);
|
||||||
|
// // const products = await RNIap.buySubscription(sku);
|
||||||
|
// // const purchase = await RNIap.buyProductWithoutFinishTransaction(sku);
|
||||||
|
// try {
|
||||||
|
// const purchase = await RNIap.buyProduct(sku);
|
||||||
|
// // console.log('purchase', purchase);
|
||||||
|
// // await RNIap.consumePurchaseAndroid(purchase.purchaseToken);
|
||||||
|
// this.setState({ receipt: purchase.transactionReceipt }, () => this.goNext());
|
||||||
|
// } catch (err) {
|
||||||
|
// console.warn(err.code, err.message);
|
||||||
|
// const subscription = RNIap.addAdditionalSuccessPurchaseListenerIOS(async purchase => {
|
||||||
|
// this.setState({ receipt: purchase.transactionReceipt }, () => this.goNext());
|
||||||
|
// subscription.remove();
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
return <BoostScreen purchase={this._purchase} />;
|
return <BoostScreen boostData={BOOST_DATA} buyItem={this._buyItem} />;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,21 +12,6 @@ import { Icon } from '../../../components/icon';
|
|||||||
import globalStyles from '../../../globalStyles';
|
import globalStyles from '../../../globalStyles';
|
||||||
import styles from './boostScreenStyles';
|
import styles from './boostScreenStyles';
|
||||||
|
|
||||||
const BOOST_DATA = [
|
|
||||||
{
|
|
||||||
id: 0,
|
|
||||||
name: '10000 ESTM',
|
|
||||||
priceText: '100$',
|
|
||||||
price: 100,
|
|
||||||
description: 'BEST DEAL!',
|
|
||||||
},
|
|
||||||
{ id: 1, name: '5000 ESTM', quantity: 500, price: 50, description: 'POPULAR' },
|
|
||||||
{ id: 2, name: '1000 ESTM', quantity: 10000, price: 10, description: '' },
|
|
||||||
{ id: 3, name: '500 ESTM', quantity: 500, price: 5, description: '' },
|
|
||||||
{ id: 4, name: '200 ESTM', quantity: 200, price: 2, description: '' },
|
|
||||||
{ id: 5, name: '100 ESTM', quantity: 100, price: 1, description: '' },
|
|
||||||
];
|
|
||||||
|
|
||||||
class BoostScreen extends PureComponent {
|
class BoostScreen extends PureComponent {
|
||||||
/* Props
|
/* Props
|
||||||
* ------------------------------------------------
|
* ------------------------------------------------
|
||||||
@ -45,7 +30,7 @@ class BoostScreen extends PureComponent {
|
|||||||
// Component Functions
|
// Component Functions
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { intl, purchase } = this.props;
|
const { intl, buyItem, boostData } = this.props;
|
||||||
const { selectedBoost } = this.state;
|
const { selectedBoost } = this.state;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -56,7 +41,7 @@ class BoostScreen extends PureComponent {
|
|||||||
})}
|
})}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{BOOST_DATA.map(item => (
|
{boostData.map(item => (
|
||||||
<View style={styles.boostLine} key={get(item, 'id')}>
|
<View style={styles.boostLine} key={get(item, 'id')}>
|
||||||
{!!get(item, 'description', null) && (
|
{!!get(item, 'description', null) && (
|
||||||
<View style={styles.descriptionWrapper}>
|
<View style={styles.descriptionWrapper}>
|
||||||
@ -69,7 +54,7 @@ class BoostScreen extends PureComponent {
|
|||||||
<View style={styles.buttonWrapper}>
|
<View style={styles.buttonWrapper}>
|
||||||
<MainButton
|
<MainButton
|
||||||
style={styles.button}
|
style={styles.button}
|
||||||
onPress={() => purchase()}
|
onPress={() => buyItem(item.id)}
|
||||||
height={50}
|
height={50}
|
||||||
text={intl.formatMessage({
|
text={intl.formatMessage({
|
||||||
id: 'boost.buy',
|
id: 'boost.buy',
|
||||||
|
Loading…
Reference in New Issue
Block a user