Not a Plant Fehlermeldung
This commit is contained in:
@@ -12,6 +12,7 @@ import Purchases, {
|
||||
PurchasesStoreProduct,
|
||||
} from 'react-native-purchases';
|
||||
import { useApp } from '../../context/AppContext';
|
||||
import { usePostHog } from 'posthog-react-native';
|
||||
import { useColors } from '../../constants/Colors';
|
||||
import { ThemeBackdrop } from '../../components/ThemeBackdrop';
|
||||
import { Language } from '../../types';
|
||||
@@ -211,6 +212,7 @@ export default function BillingScreen() {
|
||||
const router = useRouter();
|
||||
const { isDarkMode, language, billingSummary, isLoadingBilling, simulatePurchase, simulateWebhookEvent, syncRevenueCatState, colorPalette, session } = useApp();
|
||||
const colors = useColors(isDarkMode, colorPalette);
|
||||
const posthog = usePostHog();
|
||||
const copy = getBillingCopy(language);
|
||||
const isExpoGo = Constants.appOwnership === 'expo';
|
||||
|
||||
@@ -272,6 +274,10 @@ export default function BillingScreen() {
|
||||
};
|
||||
}, [isExpoGo]);
|
||||
|
||||
useEffect(() => {
|
||||
posthog.capture('paywall_viewed', { plan_id: planId });
|
||||
}, [posthog, planId]);
|
||||
|
||||
const monthlyPackage = subscriptionPackages.monthly_pro;
|
||||
const yearlyPackage = subscriptionPackages.yearly_pro;
|
||||
|
||||
@@ -290,6 +296,7 @@ export default function BillingScreen() {
|
||||
|
||||
const handlePurchase = async (productId: PurchaseProductId) => {
|
||||
setIsUpdating(true);
|
||||
posthog.capture('purchase_initiated', { product_id: productId });
|
||||
try {
|
||||
if (isExpoGo) {
|
||||
// ExpoGo has no native RevenueCat — use simulation for development only
|
||||
@@ -316,6 +323,7 @@ export default function BillingScreen() {
|
||||
// Derive plan locally from RevenueCat — backend sync via webhook comes later (Step 3)
|
||||
const customerInfo = await Purchases.getCustomerInfo();
|
||||
await syncRevenueCatState(customerInfo as any, 'subscription_purchase');
|
||||
posthog.capture('subscription_started', { product_id: productId });
|
||||
} else {
|
||||
const selectedProduct = topupProducts[productId];
|
||||
if (!selectedProduct) {
|
||||
@@ -324,6 +332,7 @@ export default function BillingScreen() {
|
||||
await Purchases.purchaseStoreProduct(selectedProduct);
|
||||
const customerInfo = await Purchases.getCustomerInfo();
|
||||
await syncRevenueCatState(customerInfo as any, 'topup_purchase');
|
||||
posthog.capture('topup_purchased', { product_id: productId });
|
||||
}
|
||||
}
|
||||
setSubModalVisible(false);
|
||||
@@ -332,6 +341,7 @@ export default function BillingScreen() {
|
||||
const userCancelled = typeof e === 'object' && e !== null && 'userCancelled' in e && Boolean((e as { userCancelled?: boolean }).userCancelled);
|
||||
|
||||
if (userCancelled) {
|
||||
posthog.capture('purchase_cancelled', { product_id: productId });
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -345,6 +355,7 @@ export default function BillingScreen() {
|
||||
}
|
||||
|
||||
console.error('Payment failed', e);
|
||||
posthog.capture('purchase_failed', { product_id: productId, error: msg });
|
||||
Alert.alert('Unerwarteter Fehler', msg);
|
||||
} finally {
|
||||
setIsUpdating(false);
|
||||
|
||||
Reference in New Issue
Block a user