import React from 'react'; import { View, Modal, ScrollView, StyleSheet, ActivityIndicator } from 'react-native'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import Button from '~/components/atoms/Button'; import Text from '~/components/atoms/Text'; import { useTheme } from '~/features/theme/ThemeProvider'; import Icon from '~/components/atoms/Icon'; import MemoroLogo from '~/components/atoms/MemoroLogo'; import { useTranslation } from 'react-i18next'; import { getSubscriptionDisplayName, getSubscriptionTier, isYearlySubscription, getSubscriptionPrices, } from '../utils/subscriptionPlanMapping'; interface MigrationNotificationModalProps { isVisible: boolean; onClose: () => void; subscriptionPlanId?: string | null; isActiveSubscription?: boolean; migrationStats?: { memos_count: number; memories_count: number; images_count: number; tags_count: number; migrated_at: string; }; } const MigrationNotificationModal: React.FC = ({ isVisible, onClose, subscriptionPlanId, isActiveSubscription, migrationStats, }) => { const { isDark } = useTheme(); const insets = useSafeAreaInsets(); // Use actual migration stats or default values const stats = migrationStats ? { memoCount: migrationStats.memos_count, memoryCount: migrationStats.memories_count, imageCount: migrationStats.images_count, tagCount: migrationStats.tags_count, } : { memoCount: 0, memoryCount: 0, imageCount: 0, tagCount: 0 }; const isLoading = false; const error = null; const subscriptionInfo = null; const { t } = useTranslation(); // Subscription plan details with 33% bonus calculations const subscriptionPlans = { Mini: { price: t('migration.month_price', { price: '1€' }), monthlyMana: 600, bonusMana: 200, // 33% bonus }, Plus: { price: t('migration.month_price', { price: '7€' }), monthlyMana: 1500, bonusMana: 500, // 33% bonus }, Pro: { price: t('migration.month_price', { price: '23€' }), monthlyMana: 3000, bonusMana: 1000, // 33% bonus }, Ultra: { price: t('migration.month_price', { price: '47€' }), monthlyMana: 5000, bonusMana: 1650, // 33% bonus }, 'Pro User': { price: t('migration.month_price', { price: '23€' }), monthlyMana: 3000, bonusMana: 1000, }, Free: { price: t('migration.free_plan'), monthlyMana: 150, bonusMana: 50, // 33% bonus }, }; const currentPlanId = subscriptionPlanId || subscriptionInfo; const currentPlanDisplayName = getSubscriptionDisplayName(currentPlanId, isActiveSubscription); const currentPlanTier = getSubscriptionTier(currentPlanId, isActiveSubscription); const isYearly = isYearlySubscription(currentPlanId); const prices = getSubscriptionPrices(); // Update plan details with correct price based on subscription type const planDetails = subscriptionPlans[currentPlanTier] || subscriptionPlans['Pro User']; const planPrice = currentPlanTier !== 'Pro User' ? isYearly ? t('migration.year_price', { price: prices.yearly[currentPlanTier] }) : t('migration.month_price', { price: prices.monthly[currentPlanTier] }) : planDetails.price; const features = [ { id: 'mana', title: t('migration.mana_credits_title'), description: t('migration.mana_credits_desc'), icon: 'sparkles', iconColor: '#9B59B6', }, { id: 'question', title: t('migration.question_memos_title'), description: t('migration.question_memos_desc'), icon: 'help-circle-outline', iconColor: '#3498DB', }, { id: 'combine', title: t('migration.combine_memos_title'), description: t('migration.combine_memos_desc'), icon: 'git-merge-outline', iconColor: '#2ECC71', }, ]; return ( {t('migration.welcome_title')} {/* Migration Success Section */} {t('migration.data_transferred')} {isLoading ? ( {t('migration.loading_stats')} ) : error ? ( {error} ) : ( {[ { icon: 'document-text-outline', text: t('migration.memos'), count: stats.memoCount, color: '#3498DB', }, { icon: 'heart-outline', text: t('migration.memories'), count: stats.memoryCount, color: '#E91E63', }, { icon: 'image-outline', text: t('migration.images'), count: stats.imageCount, color: '#FF9800', }, { icon: 'pricetag-outline', text: t('migration.tags'), count: stats.tagCount, color: '#9C27B0', }, ].map((item, index) => ( {item.text} {item.count.toLocaleString('de-DE')} ))} )} {/* Subscription Benefits Section */} {currentPlanTier !== 'Free' && ( {t('migration.your_plan', { plan: currentPlanDisplayName })} {planPrice} {t('migration.monthly_mana')} {planDetails.monthlyMana.toLocaleString('de-DE')} +{planDetails.bonusMana.toLocaleString('de-DE')} 🎁 {t('migration.loyalty_bonus_simple')} )} {/* Free Plan Section */} {currentPlanTier === 'Free' && ( {currentPlanDisplayName} {t('migration.free_plan_message')} )} {/* New Features Section */} {t('migration.new_features_title')} {features.map((feature) => ( {feature.title} {feature.description} ))} {/* Privacy Section */} {t('migration.privacy_improved')} {t('migration.no_google_analytics')} {t('migration.no_google_analytics_desc')} {t('migration.opensource_analytics')} {t('migration.opensource_analytics_desc')} {t('migration.opensource_database')} {t('migration.opensource_database_desc')} {t('migration.data_stays_eu')} {t('migration.data_stays_eu_desc')}