diff --git a/newIDE/app/src/fixtures/GDevelopServicesTestData/index.js b/newIDE/app/src/fixtures/GDevelopServicesTestData/index.js index a749442f611f..8166e7f6f670 100644 --- a/newIDE/app/src/fixtures/GDevelopServicesTestData/index.js +++ b/newIDE/app/src/fixtures/GDevelopServicesTestData/index.js @@ -3,7 +3,6 @@ import { type Usages, type Subscription, type Limits, - type SubscriptionPlanWithPricingSystems, } from '../../Utils/GDevelopServices/Usage'; import { User as FirebaseUser } from 'firebase/auth'; import { type Profile } from '../../Utils/GDevelopServices/Authentication'; @@ -313,2036 +312,6 @@ export const noSubscription: Subscription = { pricingSystemId: null, }; -export const subscriptionPlansWithPricingSystems: SubscriptionPlanWithPricingSystems[] = [ - { - id: 'free', - isLegacy: false, - nameByLocale: { - en: 'Free', - }, - targetAudiences: ['CASUAL'], - pillarNamesPerLocale: { - 'ASSET-STORE': { - en: 'Asset Store', - }, - CREATION: { - en: 'Creation', - }, - MARKETING: { - en: 'Marketing & Promotion', - }, - PRO: { - en: 'Professional features', - }, - PUBLISHING: { - en: 'Publishing', - }, - SOCIAL: { - en: 'Social & Online', - }, - SUPPORT: { - en: 'Community & Support', - }, - MONETIZATION: { - en: 'Monetization', - }, - }, - featureNamesByLocale: { - ENGINE_AND_EDITOR: { - en: 'Open-source (MIT) editor and game engine', - }, - DEBUGGER_AND_LIVE_PREVIEW: { - en: 'Debugger and live preview', - }, - CLOUD_PROJECTS: { - en: 'Cloud projects', - }, - AI_PROTOTYPING: { - en: 'Game prototypes with AI', - }, - MOBILE_APP: { - en: 'Mobile app access', - }, - MANUAL_EXPORT: { - en: 'Export (any platform) manually with devtools', - }, - PUBLISH_GD_GAMES: { - en: 'Publish your game on gd.games', - }, - PUBLISH_DESKTOP: { - en: 'Publish for desktop (Windows, macOS, Linux)', - }, - PUBLISH_ANDROID: { - en: 'Publish your game on Google Play (Android)', - }, - PUBLISH_IOS: { - en: 'Publish your game on iOS (App Store)', - }, - REMOVE_MANDATORY_LOGO: { - en: 'Remove GDevelop logo/watermark', - }, - VERSION_HISTORY: { - en: 'Version history', - }, - COLLABORATORS: { - en: 'Collaborator (project sharing)', - }, - INVOICES: { - en: 'Invoices for your company', - }, - LEADERBOARDS: { - en: 'Leaderboards for games', - }, - LEADERBOARDS_STYLING: { - en: 'Leaderboards styling', - }, - ANALYTICS: { - en: 'Analytics on game usage', - }, - FEEDBACKS: { - en: 'Player feedbacks', - }, - MULTIPLAYER: { - en: 'Multiplayer', - }, - EMBED_GD_GAMES: { - en: 'Embed game on any website in one click', - }, - DEDICATED_SUPPORT_CHANNEL: { - en: 'Dedicated professional support channel', - }, - DEDICATED_COMMUNITY_CHANNEL: { - en: 'Dedicated community channel', - }, - FREE_CREDITS: { - en: 'Free credits every month', - }, - FEATURING_TIER1: { - en: 'Featuring on gd.games', - }, - FEATURING_TIER2: { - en: 'Featuring on social/newsletter', - }, - FEATURING_TIER3: { - en: 'Featuring inside GDevelop', - }, - GET_FREE_ASSET_PACKS: { - en: 'Use thousands of free asset packs', - }, - CLAIM_PREMIUM_ASSET_PACKS: { - en: 'Claim a premium asset pack or template', - }, - BUY_PREMIUM_ASSET_PACKS: { - en: 'Buy premium asset packs', - }, - ADMOB_ADS: { - en: 'Show ads in games (Admob for Android)', - }, - COMMUNITY_IAP: { - en: 'In-App Purchases (community extension)', - }, - SELL_GAMES: { - en: 'Sell your games (Steam, App Stores...)', - }, - SELL_ON_ASSET_STORE: { - en: 'Sell your assets or templates on GDevelop Asset Store', - }, - }, - descriptionByLocale: { - en: 'Create your first game 100% free.', - }, - bulletPointsByLocale: [ - { - en: 'Fully featured, open-source game engine', - }, - { - en: 'Publish to Android/Desktop (once per day)', - }, - { - en: 'Try GDevelop.io online services for free', - }, - { - en: 'Thousands of free assets on the Asset Store', - }, - ], - fullFeatures: [ - { - featureName: 'ENGINE_AND_EDITOR', - pillarName: 'CREATION', - enabled: 'yes', - }, - { - featureName: 'DEBUGGER_AND_LIVE_PREVIEW', - pillarName: 'CREATION', - descriptionByLocale: { - en: 'Nag screen', - }, - trialLike: true, - }, - { - featureName: 'CLOUD_PROJECTS', - pillarName: 'CREATION', - descriptionByLocale: { - en: '3', - }, - tooltipByLocale: { - en: - '10 for early bird accounts, created and verified before Feb 2024.', - }, - }, - { - featureName: 'MOBILE_APP', - pillarName: 'CREATION', - enabled: 'no', - }, - { - featureName: 'AI_PROTOTYPING', - pillarName: 'CREATION', - descriptionByLocale: { - en: '1 per day', - }, - trialLike: true, - tooltipByLocale: { - en: - '2 per day for early bird accounts, created and verified before Feb 2024.', - }, - }, - { - featureName: 'PUBLISH_GD_GAMES', - pillarName: 'PUBLISHING', - unlimited: true, - }, - { - featureName: 'PUBLISH_DESKTOP', - pillarName: 'PUBLISHING', - descriptionByLocale: { - en: '1 per day', - }, - tooltipByLocale: { - en: - '2 per day for early bird accounts, created and verified before Feb 2024.', - }, - trialLike: true, - }, - { - featureName: 'PUBLISH_ANDROID', - pillarName: 'PUBLISHING', - descriptionByLocale: { - en: '1 per day', - }, - tooltipByLocale: { - en: - '2 per day for early bird accounts, created and verified before Feb 2024.', - }, - trialLike: true, - }, - { - featureName: 'PUBLISH_IOS', - pillarName: 'PUBLISHING', - enabled: 'no', - }, - { - featureName: 'MANUAL_EXPORT', - pillarName: 'PUBLISHING', - enabled: 'yes', - }, - { - featureName: 'REMOVE_MANDATORY_LOGO', - pillarName: 'PUBLISHING', - enabled: 'no', - }, - { - featureName: 'VERSION_HISTORY', - pillarName: 'PRO', - enabled: 'no', - }, - { - featureName: 'COLLABORATORS', - pillarName: 'PRO', - enabled: 'no', - }, - { - featureName: 'INVOICES', - pillarName: 'PRO', - enabled: 'no', - }, - { - featureName: 'FEEDBACKS', - pillarName: 'SOCIAL', - descriptionByLocale: { - en: '3 per game', - }, - }, - { - featureName: 'LEADERBOARDS', - pillarName: 'SOCIAL', - descriptionByLocale: { - en: '1 per game', - }, - }, - { - featureName: 'LEADERBOARDS_STYLING', - pillarName: 'SOCIAL', - enabled: 'no', - }, - { - featureName: 'ANALYTICS', - pillarName: 'SOCIAL', - enabled: 'no', - }, - { - featureName: 'MULTIPLAYER', - pillarName: 'SOCIAL', - enabled: 'no', - upcoming: true, - }, - { - featureName: 'EMBED_GD_GAMES', - upcoming: true, - pillarName: 'SOCIAL', - enabled: 'no', - }, - { - featureName: 'DEDICATED_COMMUNITY_CHANNEL', - pillarName: 'SUPPORT', - enabled: 'no', - }, - { - featureName: 'DEDICATED_SUPPORT_CHANNEL', - pillarName: 'SUPPORT', - enabled: 'no', - }, - { - featureName: 'FREE_CREDITS', - pillarName: 'MARKETING', - enabled: 'no', - }, - { - featureName: 'FEATURING_TIER1', - pillarName: 'MARKETING', - descriptionByLocale: { - en: 'Buy with credits', - }, - }, - { - featureName: 'FEATURING_TIER2', - pillarName: 'MARKETING', - descriptionByLocale: { - en: 'Buy with credits', - }, - }, - { - featureName: 'FEATURING_TIER3', - pillarName: 'MARKETING', - descriptionByLocale: { - en: 'Buy with credits', - }, - }, - { - featureName: 'GET_FREE_ASSET_PACKS', - pillarName: 'ASSET-STORE', - enabled: 'yes', - }, - { - featureName: 'BUY_PREMIUM_ASSET_PACKS', - pillarName: 'ASSET-STORE', - enabled: 'yes', - }, - { - featureName: 'CLAIM_PREMIUM_ASSET_PACKS', - pillarName: 'ASSET-STORE', - enabled: 'no', - }, - { - featureName: 'ADMOB_ADS', - pillarName: 'MONETIZATION', - enabled: 'yes', - }, - { - featureName: 'COMMUNITY_IAP', - pillarName: 'MONETIZATION', - enabled: 'yes', - }, - { - featureName: 'SELL_GAMES', - pillarName: 'MONETIZATION', - enabled: 'yes', - }, - { - featureName: 'SELL_ON_ASSET_STORE', - pillarName: 'MONETIZATION', - descriptionByLocale: { - en: 'Yes - get in touch', - }, - }, - ], - pricingSystems: [], - }, - { - id: 'gdevelop_silver', - isLegacy: false, - nameByLocale: { - en: 'Silver', - }, - targetAudiences: ['CASUAL'], - pillarNamesPerLocale: { - 'ASSET-STORE': { - en: 'Asset Store', - }, - CREATION: { - en: 'Creation', - }, - MARKETING: { - en: 'Marketing & Promotion', - }, - PRO: { - en: 'Professional features', - }, - PUBLISHING: { - en: 'Publishing', - }, - SOCIAL: { - en: 'Social & Online', - }, - SUPPORT: { - en: 'Community & Support', - }, - MONETIZATION: { - en: 'Monetization', - }, - }, - featureNamesByLocale: { - ENGINE_AND_EDITOR: { - en: 'Open-source (MIT) editor and game engine', - }, - DEBUGGER_AND_LIVE_PREVIEW: { - en: 'Debugger and live preview', - }, - CLOUD_PROJECTS: { - en: 'Cloud projects', - }, - AI_PROTOTYPING: { - en: 'Game prototypes with AI', - }, - MOBILE_APP: { - en: 'Mobile app access', - }, - MANUAL_EXPORT: { - en: 'Export (any platform) manually with devtools', - }, - PUBLISH_GD_GAMES: { - en: 'Publish your game on gd.games', - }, - PUBLISH_DESKTOP: { - en: 'Publish for desktop (Windows, macOS, Linux)', - }, - PUBLISH_ANDROID: { - en: 'Publish your game on Google Play (Android)', - }, - PUBLISH_IOS: { - en: 'Publish your game on iOS (App Store)', - }, - REMOVE_MANDATORY_LOGO: { - en: 'Remove GDevelop logo/watermark', - }, - VERSION_HISTORY: { - en: 'Version history', - }, - COLLABORATORS: { - en: 'Collaborator (project sharing)', - }, - INVOICES: { - en: 'Invoices for your company', - }, - LEADERBOARDS: { - en: 'Leaderboards for games', - }, - LEADERBOARDS_STYLING: { - en: 'Leaderboards styling', - }, - ANALYTICS: { - en: 'Analytics on game usage', - }, - FEEDBACKS: { - en: 'Player feedbacks', - }, - MULTIPLAYER: { - en: 'Multiplayer', - }, - EMBED_GD_GAMES: { - en: 'Embed game on any website in one click', - }, - DEDICATED_SUPPORT_CHANNEL: { - en: 'Dedicated professional support channel', - }, - DEDICATED_COMMUNITY_CHANNEL: { - en: 'Dedicated community channel', - }, - FREE_CREDITS: { - en: 'Free credits every month', - }, - FEATURING_TIER1: { - en: 'Featuring on gd.games', - }, - FEATURING_TIER2: { - en: 'Featuring on social/newsletter', - }, - FEATURING_TIER3: { - en: 'Featuring inside GDevelop', - }, - GET_FREE_ASSET_PACKS: { - en: 'Use thousands of free asset packs', - }, - CLAIM_PREMIUM_ASSET_PACKS: { - en: 'Claim a premium asset pack or template', - }, - BUY_PREMIUM_ASSET_PACKS: { - en: 'Buy premium asset packs', - }, - ADMOB_ADS: { - en: 'Show ads in games (Admob for Android)', - }, - COMMUNITY_IAP: { - en: 'In-App Purchases (community extension)', - }, - SELL_GAMES: { - en: 'Sell your games (Steam, App Stores...)', - }, - SELL_ON_ASSET_STORE: { - en: 'Sell your assets or templates on GDevelop Asset Store', - }, - }, - descriptionByLocale: { - en: 'Publish your first games on Android.', - }, - specificRequirementByLocale: { - en: - "If you're using your GDevelop account for a company having more than $50,000 USD revenue per year, you must use the Pro membership.", - }, - bulletPointsByLocale: [ - { - en: 'Publish on Google Play, desktop and on the web', - }, - { - en: 'Access GDevelop mobile app (iOS/Android)', - }, - { - en: 'Analytics to follow your game virality', - }, - { - en: '100 credits per month', - }, - ], - fullFeatures: [ - { - featureName: 'ENGINE_AND_EDITOR', - pillarName: 'CREATION', - enabled: 'yes', - }, - { - featureName: 'DEBUGGER_AND_LIVE_PREVIEW', - pillarName: 'CREATION', - enabled: 'yes', - }, - { - featureName: 'CLOUD_PROJECTS', - pillarName: 'CREATION', - descriptionByLocale: { - en: '50', - }, - }, - { - featureName: 'MOBILE_APP', - pillarName: 'CREATION', - enabled: 'yes', - }, - { - featureName: 'AI_PROTOTYPING', - pillarName: 'CREATION', - descriptionByLocale: { - en: '10 per day', - }, - }, - { - featureName: 'PUBLISH_GD_GAMES', - pillarName: 'PUBLISHING', - unlimited: true, - }, - { - featureName: 'PUBLISH_DESKTOP', - pillarName: 'PUBLISHING', - descriptionByLocale: { - en: '10 per day', - }, - }, - { - featureName: 'PUBLISH_ANDROID', - pillarName: 'PUBLISHING', - descriptionByLocale: { - en: '10 per day', - }, - }, - { - featureName: 'PUBLISH_IOS', - pillarName: 'PUBLISHING', - enabled: 'no', - }, - { - featureName: 'MANUAL_EXPORT', - pillarName: 'PUBLISHING', - enabled: 'yes', - }, - { - featureName: 'REMOVE_MANDATORY_LOGO', - pillarName: 'PUBLISHING', - enabled: 'yes', - }, - { - featureName: 'VERSION_HISTORY', - pillarName: 'PRO', - enabled: 'no', - }, - { - featureName: 'COLLABORATORS', - pillarName: 'PRO', - enabled: 'no', - }, - { - featureName: 'INVOICES', - pillarName: 'PRO', - enabled: 'no', - }, - { - featureName: 'FEEDBACKS', - pillarName: 'SOCIAL', - descriptionByLocale: { - en: '10 per game', - }, - }, - { - featureName: 'LEADERBOARDS', - pillarName: 'SOCIAL', - descriptionByLocale: { - en: '1 per game', - }, - }, - { - featureName: 'LEADERBOARDS_STYLING', - pillarName: 'SOCIAL', - enabled: 'no', - }, - { - featureName: 'ANALYTICS', - pillarName: 'SOCIAL', - enabled: 'yes', - }, - { - featureName: 'MULTIPLAYER', - pillarName: 'SOCIAL', - enabled: 'no', - upcoming: true, - }, - { - featureName: 'EMBED_GD_GAMES', - upcoming: true, - pillarName: 'SOCIAL', - enabled: 'no', - }, - { - featureName: 'DEDICATED_COMMUNITY_CHANNEL', - pillarName: 'SUPPORT', - enabled: 'no', - }, - { - featureName: 'DEDICATED_SUPPORT_CHANNEL', - pillarName: 'SUPPORT', - enabled: 'no', - }, - { - featureName: 'FREE_CREDITS', - pillarName: 'MARKETING', - descriptionByLocale: { - en: '100 per month', - }, - }, - { - featureName: 'FEATURING_TIER1', - pillarName: 'MARKETING', - descriptionByLocale: { - en: 'Buy with credits', - }, - }, - { - featureName: 'FEATURING_TIER2', - pillarName: 'MARKETING', - descriptionByLocale: { - en: 'Buy with credits', - }, - }, - { - featureName: 'FEATURING_TIER3', - pillarName: 'MARKETING', - descriptionByLocale: { - en: 'Buy with credits', - }, - }, - { - featureName: 'GET_FREE_ASSET_PACKS', - pillarName: 'ASSET-STORE', - enabled: 'yes', - }, - { - featureName: 'BUY_PREMIUM_ASSET_PACKS', - pillarName: 'ASSET-STORE', - enabled: 'yes', - }, - { - featureName: 'CLAIM_PREMIUM_ASSET_PACKS', - pillarName: 'ASSET-STORE', - enabled: 'no', - }, - { - featureName: 'ADMOB_ADS', - pillarName: 'MONETIZATION', - enabled: 'yes', - }, - { - featureName: 'COMMUNITY_IAP', - pillarName: 'MONETIZATION', - enabled: 'yes', - }, - { - featureName: 'SELL_GAMES', - pillarName: 'MONETIZATION', - enabled: 'yes', - }, - { - featureName: 'SELL_ON_ASSET_STORE', - pillarName: 'MONETIZATION', - descriptionByLocale: { - en: 'Yes - get in touch', - }, - }, - ], - pricingSystems: [ - { - id: 'silver_1month_499EUR', - status: 'active', - planId: 'gdevelop_silver', - period: 'month', - periodCount: 1, - currency: 'EUR', - amountInCents: 499, - region: 'eurozone', - }, - { - id: 'silver_1year_3599EUR', - status: 'active', - planId: 'gdevelop_silver', - period: 'year', - periodCount: 1, - currency: 'EUR', - amountInCents: 3599, - region: 'eurozone', - }, - ], - }, - { - id: 'gdevelop_gold', - isLegacy: false, - nameByLocale: { - en: 'Gold', - }, - targetAudiences: ['CASUAL'], - pillarNamesPerLocale: { - 'ASSET-STORE': { - en: 'Asset Store', - }, - CREATION: { - en: 'Creation', - }, - MARKETING: { - en: 'Marketing & Promotion', - }, - PRO: { - en: 'Professional features', - }, - PUBLISHING: { - en: 'Publishing', - }, - SOCIAL: { - en: 'Social & Online', - }, - SUPPORT: { - en: 'Community & Support', - }, - MONETIZATION: { - en: 'Monetization', - }, - }, - featureNamesByLocale: { - ENGINE_AND_EDITOR: { - en: 'Open-source (MIT) editor and game engine', - }, - DEBUGGER_AND_LIVE_PREVIEW: { - en: 'Debugger and live preview', - }, - CLOUD_PROJECTS: { - en: 'Cloud projects', - }, - AI_PROTOTYPING: { - en: 'Game prototypes with AI', - }, - MOBILE_APP: { - en: 'Mobile app access', - }, - MANUAL_EXPORT: { - en: 'Export (any platform) manually with devtools', - }, - PUBLISH_GD_GAMES: { - en: 'Publish your game on gd.games', - }, - PUBLISH_DESKTOP: { - en: 'Publish for desktop (Windows, macOS, Linux)', - }, - PUBLISH_ANDROID: { - en: 'Publish your game on Google Play (Android)', - }, - PUBLISH_IOS: { - en: 'Publish your game on iOS (App Store)', - }, - REMOVE_MANDATORY_LOGO: { - en: 'Remove GDevelop logo/watermark', - }, - VERSION_HISTORY: { - en: 'Version history', - }, - COLLABORATORS: { - en: 'Collaborator (project sharing)', - }, - INVOICES: { - en: 'Invoices for your company', - }, - LEADERBOARDS: { - en: 'Leaderboards for games', - }, - LEADERBOARDS_STYLING: { - en: 'Leaderboards styling', - }, - ANALYTICS: { - en: 'Analytics on game usage', - }, - FEEDBACKS: { - en: 'Player feedbacks', - }, - MULTIPLAYER: { - en: 'Multiplayer', - }, - EMBED_GD_GAMES: { - en: 'Embed game on any website in one click', - }, - DEDICATED_SUPPORT_CHANNEL: { - en: 'Dedicated professional support channel', - }, - DEDICATED_COMMUNITY_CHANNEL: { - en: 'Dedicated community channel', - }, - FREE_CREDITS: { - en: 'Free credits every month', - }, - FEATURING_TIER1: { - en: 'Featuring on gd.games', - }, - FEATURING_TIER2: { - en: 'Featuring on social/newsletter', - }, - FEATURING_TIER3: { - en: 'Featuring inside GDevelop', - }, - GET_FREE_ASSET_PACKS: { - en: 'Use thousands of free asset packs', - }, - CLAIM_PREMIUM_ASSET_PACKS: { - en: 'Claim a premium asset pack or template', - }, - BUY_PREMIUM_ASSET_PACKS: { - en: 'Buy premium asset packs', - }, - ADMOB_ADS: { - en: 'Show ads in games (Admob for Android)', - }, - COMMUNITY_IAP: { - en: 'In-App Purchases (community extension)', - }, - SELL_GAMES: { - en: 'Sell your games (Steam, App Stores...)', - }, - SELL_ON_ASSET_STORE: { - en: 'Sell your assets or templates on GDevelop Asset Store', - }, - }, - descriptionByLocale: { - en: 'Full creation and marketing features. Publish anywhere.', - }, - specificRequirementByLocale: { - en: - "If you're using your GDevelop account for a company having more than $50,000 USD revenue per year, you must use the Pro membership.", - }, - bulletPointsByLocale: [ - { - en: 'Publish your game on iOS', - }, - { - en: 'Dedicated channel on Discord', - }, - { - en: 'Unlimited leaderboards and player feedbacks', - }, - { - en: '300 credits per month, to promote your game or use in asset store', - }, - { - en: '1 free asset pack to claim per month', - }, - ], - fullFeatures: [ - { - featureName: 'ENGINE_AND_EDITOR', - pillarName: 'CREATION', - enabled: 'yes', - }, - { - featureName: 'DEBUGGER_AND_LIVE_PREVIEW', - pillarName: 'CREATION', - enabled: 'yes', - }, - { - featureName: 'CLOUD_PROJECTS', - pillarName: 'CREATION', - descriptionByLocale: { - en: '100', - }, - }, - { - featureName: 'MOBILE_APP', - pillarName: 'CREATION', - enabled: 'yes', - }, - { - featureName: 'AI_PROTOTYPING', - pillarName: 'CREATION', - descriptionByLocale: { - en: '100 per day', - }, - }, - { - featureName: 'PUBLISH_GD_GAMES', - pillarName: 'PUBLISHING', - unlimited: true, - }, - { - featureName: 'PUBLISH_DESKTOP', - pillarName: 'PUBLISHING', - descriptionByLocale: { - en: '100 per day', - }, - }, - { - featureName: 'PUBLISH_ANDROID', - pillarName: 'PUBLISHING', - descriptionByLocale: { - en: '100 per day', - }, - }, - { - featureName: 'PUBLISH_IOS', - pillarName: 'PUBLISHING', - descriptionByLocale: { - en: '5 per month', - }, - }, - { - featureName: 'MANUAL_EXPORT', - pillarName: 'PUBLISHING', - enabled: 'yes', - }, - { - featureName: 'REMOVE_MANDATORY_LOGO', - pillarName: 'PUBLISHING', - enabled: 'yes', - }, - { - featureName: 'VERSION_HISTORY', - pillarName: 'PRO', - enabled: 'no', - }, - { - featureName: 'COLLABORATORS', - pillarName: 'PRO', - enabled: 'no', - }, - { - featureName: 'INVOICES', - pillarName: 'PRO', - enabled: 'no', - }, - { - featureName: 'FEEDBACKS', - pillarName: 'SOCIAL', - unlimited: true, - }, - { - featureName: 'LEADERBOARDS', - pillarName: 'SOCIAL', - unlimited: true, - }, - { - featureName: 'LEADERBOARDS_STYLING', - pillarName: 'SOCIAL', - descriptionByLocale: { - en: 'Custom colors', - }, - }, - { - featureName: 'ANALYTICS', - pillarName: 'SOCIAL', - enabled: 'yes', - }, - { - featureName: 'MULTIPLAYER', - pillarName: 'SOCIAL', - enabled: 'yes', - upcoming: true, - }, - { - featureName: 'EMBED_GD_GAMES', - upcoming: true, - pillarName: 'SOCIAL', - enabled: 'no', - }, - { - featureName: 'DEDICATED_COMMUNITY_CHANNEL', - pillarName: 'SUPPORT', - enabled: 'yes', - }, - { - featureName: 'DEDICATED_SUPPORT_CHANNEL', - pillarName: 'SUPPORT', - enabled: 'no', - }, - { - featureName: 'FREE_CREDITS', - pillarName: 'MARKETING', - descriptionByLocale: { - en: '300 per month', - }, - }, - { - featureName: 'FEATURING_TIER1', - pillarName: 'MARKETING', - descriptionByLocale: { - en: 'Buy with credits', - }, - }, - { - featureName: 'FEATURING_TIER2', - pillarName: 'MARKETING', - descriptionByLocale: { - en: 'Buy with credits', - }, - }, - { - featureName: 'FEATURING_TIER3', - pillarName: 'MARKETING', - descriptionByLocale: { - en: 'Buy with credits', - }, - }, - { - featureName: 'GET_FREE_ASSET_PACKS', - pillarName: 'ASSET-STORE', - enabled: 'yes', - }, - { - featureName: 'BUY_PREMIUM_ASSET_PACKS', - pillarName: 'ASSET-STORE', - enabled: 'yes', - }, - { - featureName: 'CLAIM_PREMIUM_ASSET_PACKS', - pillarName: 'ASSET-STORE', - descriptionByLocale: { - en: '1 per month', - }, - }, - { - featureName: 'ADMOB_ADS', - pillarName: 'MONETIZATION', - enabled: 'yes', - }, - { - featureName: 'COMMUNITY_IAP', - pillarName: 'MONETIZATION', - enabled: 'yes', - }, - { - featureName: 'SELL_GAMES', - pillarName: 'MONETIZATION', - enabled: 'yes', - }, - { - featureName: 'SELL_ON_ASSET_STORE', - pillarName: 'MONETIZATION', - descriptionByLocale: { - en: 'Yes - get in touch', - }, - }, - ], - pricingSystems: [ - { - id: 'gold_1month_999EUR', - planId: 'gdevelop_gold', - status: 'active', - period: 'month', - periodCount: 1, - currency: 'EUR', - amountInCents: 999, - region: 'eurozone', - }, - { - id: 'gold_1year_7199EUR', - planId: 'gdevelop_gold', - status: 'active', - period: 'year', - periodCount: 1, - currency: 'EUR', - amountInCents: 7199, - region: 'eurozone', - }, - ], - }, - { - id: 'gdevelop_startup', - isLegacy: false, - nameByLocale: { - en: 'Pro', - }, - targetAudiences: ['PRO'], - pillarNamesPerLocale: { - 'ASSET-STORE': { - en: 'Asset Store', - }, - CREATION: { - en: 'Creation', - }, - MARKETING: { - en: 'Marketing & Promotion', - }, - PRO: { - en: 'Professional features', - }, - PUBLISHING: { - en: 'Publishing', - }, - SOCIAL: { - en: 'Social & Online', - }, - SUPPORT: { - en: 'Community & Support', - }, - MONETIZATION: { - en: 'Monetization', - }, - }, - featureNamesByLocale: { - ENGINE_AND_EDITOR: { - en: 'Open-source (MIT) editor and game engine', - }, - DEBUGGER_AND_LIVE_PREVIEW: { - en: 'Debugger and live preview', - }, - CLOUD_PROJECTS: { - en: 'Cloud projects', - }, - AI_PROTOTYPING: { - en: 'Game prototypes with AI', - }, - MOBILE_APP: { - en: 'Mobile app access', - }, - MANUAL_EXPORT: { - en: 'Export (any platform) manually with devtools', - }, - PUBLISH_GD_GAMES: { - en: 'Publish your game on gd.games', - }, - PUBLISH_DESKTOP: { - en: 'Publish for desktop (Windows, macOS, Linux)', - }, - PUBLISH_ANDROID: { - en: 'Publish your game on Google Play (Android)', - }, - PUBLISH_IOS: { - en: 'Publish your game on iOS (App Store)', - }, - REMOVE_MANDATORY_LOGO: { - en: 'Remove GDevelop logo/watermark', - }, - VERSION_HISTORY: { - en: 'Version history', - }, - COLLABORATORS: { - en: 'Collaborator (project sharing)', - }, - INVOICES: { - en: 'Invoices for your company', - }, - LEADERBOARDS: { - en: 'Leaderboards for games', - }, - LEADERBOARDS_STYLING: { - en: 'Leaderboards styling', - }, - ANALYTICS: { - en: 'Analytics on game usage', - }, - FEEDBACKS: { - en: 'Player feedbacks', - }, - MULTIPLAYER: { - en: 'Multiplayer', - }, - EMBED_GD_GAMES: { - en: 'Embed game on any website in one click', - }, - DEDICATED_SUPPORT_CHANNEL: { - en: 'Dedicated professional support channel', - }, - DEDICATED_COMMUNITY_CHANNEL: { - en: 'Dedicated community channel', - }, - FREE_CREDITS: { - en: 'Free credits every month', - }, - FEATURING_TIER1: { - en: 'Featuring on gd.games', - }, - FEATURING_TIER2: { - en: 'Featuring on social/newsletter', - }, - FEATURING_TIER3: { - en: 'Featuring inside GDevelop', - }, - GET_FREE_ASSET_PACKS: { - en: 'Use thousands of free asset packs', - }, - CLAIM_PREMIUM_ASSET_PACKS: { - en: 'Claim a premium asset pack or template', - }, - BUY_PREMIUM_ASSET_PACKS: { - en: 'Buy premium asset packs', - }, - ADMOB_ADS: { - en: 'Show ads in games (Admob for Android)', - }, - COMMUNITY_IAP: { - en: 'In-App Purchases (community extension)', - }, - SELL_GAMES: { - en: 'Sell your games (Steam, App Stores...)', - }, - SELL_ON_ASSET_STORE: { - en: 'Sell your assets or templates on GDevelop Asset Store', - }, - }, - descriptionByLocale: { - en: 'Full professional features.', - }, - bulletPointsByLocale: [ - { - en: 'Dedicated support channel on Discord for pros', - }, - { - en: 'Collaboration: share projects with teammates', - }, - { - en: 'Version history for projects', - }, - { - en: 'Unlimited cloud projects', - }, - { - en: 'Access to the upcoming pro marketplace', - }, - { - en: 'Billing/invoices available', - }, - ], - fullFeatures: [ - { - featureName: 'ENGINE_AND_EDITOR', - pillarName: 'CREATION', - enabled: 'yes', - }, - { - featureName: 'DEBUGGER_AND_LIVE_PREVIEW', - pillarName: 'CREATION', - enabled: 'yes', - }, - { - featureName: 'CLOUD_PROJECTS', - pillarName: 'CREATION', - unlimited: true, - }, - { - featureName: 'MOBILE_APP', - pillarName: 'CREATION', - enabled: 'yes', - }, - { - featureName: 'AI_PROTOTYPING', - pillarName: 'CREATION', - unlimited: true, - }, - { - featureName: 'PUBLISH_GD_GAMES', - pillarName: 'PUBLISHING', - unlimited: true, - }, - { - featureName: 'PUBLISH_DESKTOP', - pillarName: 'PUBLISHING', - unlimited: true, - }, - { - featureName: 'PUBLISH_ANDROID', - pillarName: 'PUBLISHING', - unlimited: true, - }, - { - featureName: 'PUBLISH_IOS', - pillarName: 'PUBLISHING', - descriptionByLocale: { - en: '15 per month', - }, - }, - { - featureName: 'MANUAL_EXPORT', - pillarName: 'PUBLISHING', - enabled: 'yes', - }, - { - featureName: 'REMOVE_MANDATORY_LOGO', - pillarName: 'PUBLISHING', - enabled: 'yes', - }, - { - featureName: 'VERSION_HISTORY', - pillarName: 'PRO', - enabled: 'yes', - }, - { - featureName: 'COLLABORATORS', - pillarName: 'PRO', - enabled: 'yes', - }, - { - featureName: 'INVOICES', - pillarName: 'PRO', - enabled: 'yes', - }, - { - featureName: 'FEEDBACKS', - pillarName: 'SOCIAL', - unlimited: true, - }, - { - featureName: 'LEADERBOARDS', - pillarName: 'SOCIAL', - unlimited: true, - }, - { - featureName: 'LEADERBOARDS_STYLING', - pillarName: 'SOCIAL', - descriptionByLocale: { - en: 'Custom CSS/styling', - }, - }, - { - featureName: 'ANALYTICS', - pillarName: 'SOCIAL', - enabled: 'yes', - }, - { - featureName: 'MULTIPLAYER', - pillarName: 'SOCIAL', - enabled: 'yes', - upcoming: true, - }, - { - featureName: 'EMBED_GD_GAMES', - upcoming: true, - pillarName: 'SOCIAL', - enabled: 'yes', - }, - { - featureName: 'DEDICATED_COMMUNITY_CHANNEL', - pillarName: 'SUPPORT', - enabled: 'yes', - }, - { - featureName: 'DEDICATED_SUPPORT_CHANNEL', - pillarName: 'SUPPORT', - enabled: 'yes', - }, - { - featureName: 'FREE_CREDITS', - pillarName: 'MARKETING', - descriptionByLocale: { - en: '1000 per month', - }, - }, - { - featureName: 'FEATURING_TIER1', - pillarName: 'MARKETING', - descriptionByLocale: { - en: 'Buy with credits', - }, - }, - { - featureName: 'FEATURING_TIER2', - pillarName: 'MARKETING', - descriptionByLocale: { - en: 'Buy with credits', - }, - }, - { - featureName: 'FEATURING_TIER3', - pillarName: 'MARKETING', - descriptionByLocale: { - en: 'Buy with credits', - }, - }, - { - featureName: 'GET_FREE_ASSET_PACKS', - pillarName: 'ASSET-STORE', - enabled: 'yes', - }, - { - featureName: 'BUY_PREMIUM_ASSET_PACKS', - pillarName: 'ASSET-STORE', - enabled: 'yes', - }, - { - featureName: 'CLAIM_PREMIUM_ASSET_PACKS', - pillarName: 'ASSET-STORE', - descriptionByLocale: { - en: '1 per month', - }, - }, - { - featureName: 'ADMOB_ADS', - pillarName: 'MONETIZATION', - enabled: 'yes', - }, - { - featureName: 'COMMUNITY_IAP', - pillarName: 'MONETIZATION', - enabled: 'yes', - }, - { - featureName: 'SELL_GAMES', - pillarName: 'MONETIZATION', - enabled: 'yes', - }, - { - featureName: 'SELL_ON_ASSET_STORE', - pillarName: 'MONETIZATION', - descriptionByLocale: { - en: 'Yes - get in touch', - }, - }, - ], - pricingSystems: [ - { - id: 'startup_1month_3000EUR', - planId: 'gdevelop_startup', - status: 'active', - period: 'month', - periodCount: 1, - currency: 'EUR', - amountInCents: 3000, - region: 'eurozone', - }, - { - id: 'startup_1year_30900EUR', - planId: 'gdevelop_startup', - status: 'active', - period: 'year', - periodCount: 1, - currency: 'EUR', - amountInCents: 30900, - region: 'eurozone', - }, - ], - }, - { - id: 'gdevelop_education', - isLegacy: false, - nameByLocale: { - en: 'Education', - }, - targetAudiences: ['EDUCATION'], - pillarNamesPerLocale: { - 'ASSET-STORE': { - en: 'Asset Store', - }, - CREATION: { - en: 'Creation', - }, - MARKETING: { - en: 'Marketing & Promotion', - }, - PRO: { - en: 'Professional features', - }, - PUBLISHING: { - en: 'Publishing', - }, - SOCIAL: { - en: 'Social & Online', - }, - SUPPORT: { - en: 'Community & Support', - }, - MONETIZATION: { - en: 'Monetization', - }, - }, - featureNamesByLocale: { - ENGINE_AND_EDITOR: { - en: 'Open-source (MIT) editor and game engine', - }, - DEBUGGER_AND_LIVE_PREVIEW: { - en: 'Debugger and live preview', - }, - CLOUD_PROJECTS: { - en: 'Cloud projects', - }, - AI_PROTOTYPING: { - en: 'Game prototypes with AI', - }, - MOBILE_APP: { - en: 'Mobile app access', - }, - MANUAL_EXPORT: { - en: 'Export (any platform) manually with devtools', - }, - PUBLISH_GD_GAMES: { - en: 'Publish your game on gd.games', - }, - PUBLISH_DESKTOP: { - en: 'Publish for desktop (Windows, macOS, Linux)', - }, - PUBLISH_ANDROID: { - en: 'Publish your game on Google Play (Android)', - }, - PUBLISH_IOS: { - en: 'Publish your game on iOS (App Store)', - }, - REMOVE_MANDATORY_LOGO: { - en: 'Remove GDevelop logo/watermark', - }, - VERSION_HISTORY: { - en: 'Version history', - }, - COLLABORATORS: { - en: 'Collaborator (project sharing)', - }, - INVOICES: { - en: 'Invoices for your company', - }, - LEADERBOARDS: { - en: 'Leaderboards for games', - }, - LEADERBOARDS_STYLING: { - en: 'Leaderboards styling', - }, - ANALYTICS: { - en: 'Analytics on game usage', - }, - FEEDBACKS: { - en: 'Player feedbacks', - }, - MULTIPLAYER: { - en: 'Multiplayer', - }, - EMBED_GD_GAMES: { - en: 'Embed game on any website in one click', - }, - DEDICATED_SUPPORT_CHANNEL: { - en: 'Dedicated professional support channel', - }, - DEDICATED_COMMUNITY_CHANNEL: { - en: 'Dedicated community channel', - }, - FREE_CREDITS: { - en: 'Free credits every month', - }, - FEATURING_TIER1: { - en: 'Featuring on gd.games', - }, - FEATURING_TIER2: { - en: 'Featuring on social/newsletter', - }, - FEATURING_TIER3: { - en: 'Featuring inside GDevelop', - }, - GET_FREE_ASSET_PACKS: { - en: 'Use thousands of free asset packs', - }, - CLAIM_PREMIUM_ASSET_PACKS: { - en: 'Claim a premium asset pack or template', - }, - BUY_PREMIUM_ASSET_PACKS: { - en: 'Buy premium asset packs', - }, - ADMOB_ADS: { - en: 'Show ads in games (Admob for Android)', - }, - COMMUNITY_IAP: { - en: 'In-App Purchases (community extension)', - }, - SELL_GAMES: { - en: 'Sell your games (Steam, App Stores...)', - }, - SELL_ON_ASSET_STORE: { - en: 'Sell your assets or templates on GDevelop Asset Store', - }, - }, - descriptionByLocale: { - en: 'Teach logic, coding and game creation.', - }, - bulletPointsByLocale: [ - { - en: 'Full anonymous accounts for students', - 'ar-SA': 'سرية الطلاب.', - 'de-DE': 'Anonymität der Schüler.', - 'es-ES': 'Anonimato de los estudiantes.', - 'fr-FR': 'Anonymat des étudiants.', - 'it-IT': 'Anonimato degli studenti.', - 'ja-JP': '学生の匿名性。', - 'ko-KR': '학생 익명성.', - 'pl-PL': 'Anonimowość uczniów.', - 'pt-BR': 'Anonimato dos alunos.', - 'ru-RU': 'Анонимность студентов.', - 'sl-SI': 'Anonimnost študentov.', - 'uk-UA': 'Анонімність студентів.', - 'zh-CN': '学生匿名性。', - }, - { - en: 'NDPA or custom privacy agreements', - }, - { - en: 'Organize students per classroom', - 'ar-SA': 'تنظيم الطلاب حسب الصف.', - 'de-DE': 'Schüler pro Klassenzimmer organisieren.', - 'es-ES': 'Organizar estudiantes por aulas.', - 'fr-FR': 'Organiser les étudiants par classe.', - 'it-IT': 'Organizza gli studenti per classe.', - 'ja-JP': 'クラスごとに学生を組織化。', - 'ko-KR': '학생을 강의실별로 정리하십시오.', - 'pl-PL': 'Organizuj uczniów według sal lekcyjnych.', - 'pt-BR': 'Organize os alunos por sala de aula.', - 'ru-RU': 'Организация студентов по классам.', - 'sl-SI': 'Organizacija študentov po učilnicah.', - 'uk-UA': 'Організація студентів за класами.', - 'zh-CN': '根据教室组织学生。', - }, - { - en: 'Access students projects', - 'ar-SA': 'الوصول إلى مشاريع الطلاب الخاصة بك', - 'de-DE': 'Zugriff auf die Projekte Ihrer Schüler.', - 'es-ES': 'Acceda a los proyectos de sus estudiantes.', - 'fr-FR': 'Accédez aux projets de vos étudiants.', - 'it-IT': 'Accedi ai progetti dei tuoi studenti.', - 'ja-JP': '生徒のプロジェクトにアクセス。', - 'ko-KR': '학생 프로젝트에 액세스하십시오.', - 'pl-PL': 'Dostęp do projektów uczniów.', - 'pt-BR': 'Acesse os projetos dos seus alunos.', - 'ru-RU': 'Доступ к проектам ваших студентов.', - 'sl-SI': 'Dostop do projektov vaših študentov.', - 'uk-UA': 'Доступ до проектів ваших студентів.', - 'zh-CN': '访问您的学生项目。', - }, - { - en: 'Version history for all projects', - }, - { - en: 'Publishing to any platform', - }, - { - en: 'GDevelop mobile app full access', - }, - ], - fullFeatures: [], - pricingSystems: [ - { - id: 'education_1month_299EUR', - planId: 'gdevelop_education', - status: 'active', - period: 'month', - periodCount: 1, - currency: 'EUR', - amountInCents: 299, - isPerUser: true, - region: 'eurozone', - }, - { - id: 'education_1year_2999EUR', - planId: 'gdevelop_education', - status: 'active', - period: 'year', - periodCount: 1, - currency: 'EUR', - amountInCents: 2999, - isPerUser: true, - region: 'eurozone', - }, - ], - }, - { - id: 'gdevelop_indie', - isLegacy: true, - nameByLocale: { - en: 'Silver (Legacy)', - }, - targetAudiences: ['CASUAL'], - pillarNamesPerLocale: { - 'ASSET-STORE': { - en: 'Asset Store', - }, - CREATION: { - en: 'Creation', - }, - MARKETING: { - en: 'Marketing & Promotion', - }, - PRO: { - en: 'Professional features', - }, - PUBLISHING: { - en: 'Publishing', - }, - SOCIAL: { - en: 'Social & Online', - }, - SUPPORT: { - en: 'Community & Support', - }, - MONETIZATION: { - en: 'Monetization', - }, - }, - featureNamesByLocale: { - ENGINE_AND_EDITOR: { - en: 'Open-source (MIT) editor and game engine', - }, - DEBUGGER_AND_LIVE_PREVIEW: { - en: 'Debugger and live preview', - }, - CLOUD_PROJECTS: { - en: 'Cloud projects', - }, - AI_PROTOTYPING: { - en: 'Game prototypes with AI', - }, - MOBILE_APP: { - en: 'Mobile app access', - }, - MANUAL_EXPORT: { - en: 'Export (any platform) manually with devtools', - }, - PUBLISH_GD_GAMES: { - en: 'Publish your game on gd.games', - }, - PUBLISH_DESKTOP: { - en: 'Publish for desktop (Windows, macOS, Linux)', - }, - PUBLISH_ANDROID: { - en: 'Publish your game on Google Play (Android)', - }, - PUBLISH_IOS: { - en: 'Publish your game on iOS (App Store)', - }, - REMOVE_MANDATORY_LOGO: { - en: 'Remove GDevelop logo/watermark', - }, - VERSION_HISTORY: { - en: 'Version history', - }, - COLLABORATORS: { - en: 'Collaborator (project sharing)', - }, - INVOICES: { - en: 'Invoices for your company', - }, - LEADERBOARDS: { - en: 'Leaderboards for games', - }, - LEADERBOARDS_STYLING: { - en: 'Leaderboards styling', - }, - ANALYTICS: { - en: 'Analytics on game usage', - }, - FEEDBACKS: { - en: 'Player feedbacks', - }, - MULTIPLAYER: { - en: 'Multiplayer', - }, - EMBED_GD_GAMES: { - en: 'Embed game on any website in one click', - }, - DEDICATED_SUPPORT_CHANNEL: { - en: 'Dedicated professional support channel', - }, - DEDICATED_COMMUNITY_CHANNEL: { - en: 'Dedicated community channel', - }, - FREE_CREDITS: { - en: 'Free credits every month', - }, - FEATURING_TIER1: { - en: 'Featuring on gd.games', - }, - FEATURING_TIER2: { - en: 'Featuring on social/newsletter', - }, - FEATURING_TIER3: { - en: 'Featuring inside GDevelop', - }, - GET_FREE_ASSET_PACKS: { - en: 'Use thousands of free asset packs', - }, - CLAIM_PREMIUM_ASSET_PACKS: { - en: 'Claim a premium asset pack or template', - }, - BUY_PREMIUM_ASSET_PACKS: { - en: 'Buy premium asset packs', - }, - ADMOB_ADS: { - en: 'Show ads in games (Admob for Android)', - }, - COMMUNITY_IAP: { - en: 'In-App Purchases (community extension)', - }, - SELL_GAMES: { - en: 'Sell your games (Steam, App Stores...)', - }, - SELL_ON_ASSET_STORE: { - en: 'Sell your assets or templates on GDevelop Asset Store', - }, - }, - descriptionByLocale: { - en: 'Build more and faster', - }, - bulletPointsByLocale: [ - { - en: - '50 cloud projects with 250MB of resources per project and 3-month version history.', - }, - { - en: '10 packagings per day for Android and for desktop.', - }, - { - en: 'Unlimited leaderboards and unlimited player feedback responses.', - }, - ], - fullFeatures: [], - pricingSystems: [ - { - id: 'indie_1month', - planId: 'gdevelop_indie', - status: 'active', - period: 'month', - periodCount: 1, - currency: 'EUR', - amountInCents: 200, - region: 'default', - }, - ], - }, - { - id: 'gdevelop_pro', - isLegacy: true, - nameByLocale: { - en: 'Gold (Legacy)', - }, - targetAudiences: ['CASUAL'], - pillarNamesPerLocale: { - 'ASSET-STORE': { - en: 'Asset Store', - }, - CREATION: { - en: 'Creation', - }, - MARKETING: { - en: 'Marketing & Promotion', - }, - PRO: { - en: 'Professional features', - }, - PUBLISHING: { - en: 'Publishing', - }, - SOCIAL: { - en: 'Social & Online', - }, - SUPPORT: { - en: 'Community & Support', - }, - MONETIZATION: { - en: 'Monetization', - }, - }, - featureNamesByLocale: { - ENGINE_AND_EDITOR: { - en: 'Open-source (MIT) editor and game engine', - }, - DEBUGGER_AND_LIVE_PREVIEW: { - en: 'Debugger and live preview', - }, - CLOUD_PROJECTS: { - en: 'Cloud projects', - }, - AI_PROTOTYPING: { - en: 'Game prototypes with AI', - }, - MOBILE_APP: { - en: 'Mobile app access', - }, - MANUAL_EXPORT: { - en: 'Export (any platform) manually with devtools', - }, - PUBLISH_GD_GAMES: { - en: 'Publish your game on gd.games', - }, - PUBLISH_DESKTOP: { - en: 'Publish for desktop (Windows, macOS, Linux)', - }, - PUBLISH_ANDROID: { - en: 'Publish your game on Google Play (Android)', - }, - PUBLISH_IOS: { - en: 'Publish your game on iOS (App Store)', - }, - REMOVE_MANDATORY_LOGO: { - en: 'Remove GDevelop logo/watermark', - }, - VERSION_HISTORY: { - en: 'Version history', - }, - COLLABORATORS: { - en: 'Collaborator (project sharing)', - }, - INVOICES: { - en: 'Invoices for your company', - }, - LEADERBOARDS: { - en: 'Leaderboards for games', - }, - LEADERBOARDS_STYLING: { - en: 'Leaderboards styling', - }, - ANALYTICS: { - en: 'Analytics on game usage', - }, - FEEDBACKS: { - en: 'Player feedbacks', - }, - MULTIPLAYER: { - en: 'Multiplayer', - }, - EMBED_GD_GAMES: { - en: 'Embed game on any website in one click', - }, - DEDICATED_SUPPORT_CHANNEL: { - en: 'Dedicated professional support channel', - }, - DEDICATED_COMMUNITY_CHANNEL: { - en: 'Dedicated community channel', - }, - FREE_CREDITS: { - en: 'Free credits every month', - }, - FEATURING_TIER1: { - en: 'Featuring on gd.games', - }, - FEATURING_TIER2: { - en: 'Featuring on social/newsletter', - }, - FEATURING_TIER3: { - en: 'Featuring inside GDevelop', - }, - GET_FREE_ASSET_PACKS: { - en: 'Use thousands of free asset packs', - }, - CLAIM_PREMIUM_ASSET_PACKS: { - en: 'Claim a premium asset pack or template', - }, - BUY_PREMIUM_ASSET_PACKS: { - en: 'Buy premium asset packs', - }, - ADMOB_ADS: { - en: 'Show ads in games (Admob for Android)', - }, - COMMUNITY_IAP: { - en: 'In-App Purchases (community extension)', - }, - SELL_GAMES: { - en: 'Sell your games (Steam, App Stores...)', - }, - SELL_ON_ASSET_STORE: { - en: 'Sell your assets or templates on GDevelop Asset Store', - }, - }, - descriptionByLocale: { - en: 'Experimented creators, ambitious games', - }, - bulletPointsByLocale: [ - { - en: - '100 cloud projects with 500MB of resources per project and one-year version history.', - }, - { - en: '70 packagings per day for Android and for desktop.', - }, - { - en: 'Unlimited leaderboards and unlimited player feedback responses.', - }, - { - en: - 'Immerse your players by removing GDevelop logo when the game loads.', - }, - ], - fullFeatures: [], - pricingSystems: [ - { - id: 'pro_1month', - planId: 'gdevelop_pro', - status: 'active', - period: 'month', - periodCount: 1, - currency: 'EUR', - amountInCents: 700, - region: 'default', - }, - ], - }, -]; - const prices = { 'cordova-build': { priceInCredits: 50, diff --git a/newIDE/app/src/stories/componentStories/HomePage/GetStartedSection/RecommendationList.stories.js b/newIDE/app/src/stories/componentStories/HomePage/GetStartedSection/RecommendationList.stories.js index d9570713dfe8..5a7d7bbd5837 100644 --- a/newIDE/app/src/stories/componentStories/HomePage/GetStartedSection/RecommendationList.stories.js +++ b/newIDE/app/src/stories/componentStories/HomePage/GetStartedSection/RecommendationList.stories.js @@ -2,17 +2,17 @@ import * as React from 'react'; import { action } from '@storybook/addon-actions'; import paperDecorator from '../../../PaperDecorator'; -import { - fakeAuthenticatedUserWithGitHubStarBadge, - fakeAuthenticatedUserWithNoSubscription, - subscriptionPlansWithPricingSystems, -} from '../../../../fixtures/GDevelopServicesTestData'; +import { fakeAuthenticatedUserWithNoSubscription } from '../../../../fixtures/GDevelopServicesTestData'; import RecommendationList from '../../../../MainFrame/EditorContainers/HomePage/GetStartedSection/RecommendationList'; import PreferencesContext, { initialPreferences, } from '../../../../MainFrame/Preferences/PreferencesContext'; import inAppTutorialDecorator from '../../../InAppTutorialDecorator'; import { TutorialStateProvider } from '../../../../Tutorial/TutorialContext'; +import useSubscriptionPlans, { + getAvailableSubscriptionPlansWithPrices, +} from '../../../../Utils/UseSubscriptionPlans'; +import LoaderModal from '../../../../UI/LoaderModal'; export default { title: 'HomePage/GetStartedSectionSection/RecommendationList', @@ -20,78 +20,85 @@ export default { decorators: [paperDecorator, inAppTutorialDecorator], }; -export const Default = () => ( - - - true} - onCreateProjectFromExample={action('onCreateProjectFromExample')} - /> - - -); +export const Default = () => { + const { subscriptionPlansWithPricingSystems } = useSubscriptionPlans({ + includeLegacy: true, + authenticatedUser: fakeAuthenticatedUserWithNoSubscription, + }); + return subscriptionPlansWithPricingSystems ? ( + + + true} + onCreateProjectFromExample={action('onCreateProjectFromExample')} + /> + + + ) : ( + + ); +}; + +export const WithSurvey = () => { + const { subscriptionPlansWithPricingSystems } = useSubscriptionPlans({ + includeLegacy: true, + authenticatedUser: fakeAuthenticatedUserWithNoSubscription, + }); -export const WithGitHubStarAlreadyMade = () => ( - - - true} - onCreateProjectFromExample={action('onCreateProjectFromExample')} - /> - - -); + return subscriptionPlansWithPricingSystems ? ( + + + true} + onCreateProjectFromExample={action('onCreateProjectFromExample')} + /> + + + ) : ( + + ); +}; -export const WithSurvey = () => ( - - - true} - onCreateProjectFromExample={action('onCreateProjectFromExample')} - /> - - -); +export const WithSurveyAlreadyFilled = () => { + const { subscriptionPlansWithPricingSystems } = useSubscriptionPlans({ + includeLegacy: true, + authenticatedUser: fakeAuthenticatedUserWithNoSubscription, + }); -export const WithSurveyAlreadyFilled = () => ( - - - true} - onCreateProjectFromExample={action('onCreateProjectFromExample')} - /> - - -); + return subscriptionPlansWithPricingSystems ? ( + + + true} + onCreateProjectFromExample={action('onCreateProjectFromExample')} + /> + + + ) : ( + + ); +}; diff --git a/newIDE/app/src/stories/componentStories/Profile/Subscription/PromotionSubscriptionDialog.stories.js b/newIDE/app/src/stories/componentStories/Profile/Subscription/PromotionSubscriptionDialog.stories.js index 4b56e7518908..fd412afc8653 100644 --- a/newIDE/app/src/stories/componentStories/Profile/Subscription/PromotionSubscriptionDialog.stories.js +++ b/newIDE/app/src/stories/componentStories/Profile/Subscription/PromotionSubscriptionDialog.stories.js @@ -7,11 +7,13 @@ import AuthenticatedUserContext from '../../../../Profile/AuthenticatedUserConte import { fakeAuthenticatedUserWithNoSubscription, fakeNotAuthenticatedUser, - subscriptionPlansWithPricingSystems, } from '../../../../fixtures/GDevelopServicesTestData'; import PromotionSubscriptionDialog from '../../../../Profile/Subscription/PromotionSubscriptionDialog'; import AlertProvider from '../../../../UI/Alert/AlertProvider'; -import { getAvailableSubscriptionPlansWithPrices } from '../../../../Utils/UseSubscriptionPlans'; +import useSubscriptionPlans, { + getAvailableSubscriptionPlansWithPrices, +} from '../../../../Utils/UseSubscriptionPlans'; +import LoaderModal from '../../../../UI/LoaderModal'; export default { title: 'Subscription/PromotionSubscriptionDialog', @@ -19,122 +21,155 @@ export default { decorators: [paperDecorator], }; -const availableSubscriptionPlansWithPrices = getAvailableSubscriptionPlansWithPrices( - subscriptionPlansWithPricingSystems -); - export const NotAuthenticatedSilverRecommended = () => { - return ( + const { subscriptionPlansWithPricingSystems } = useSubscriptionPlans({ + includeLegacy: true, + authenticatedUser: fakeNotAuthenticatedUser, + }); + return subscriptionPlansWithPricingSystems ? ( action('on close')()} recommendedPlanId="gdevelop_silver" onOpenPendingDialog={() => action('on open pending dialog')()} /> + ) : ( + ); }; export const AuthenticatedSilverRecommended = () => { - return ( + const { subscriptionPlansWithPricingSystems } = useSubscriptionPlans({ + includeLegacy: true, + authenticatedUser: fakeAuthenticatedUserWithNoSubscription, + }); + return subscriptionPlansWithPricingSystems ? ( action('on close')()} recommendedPlanId="gdevelop_silver" onOpenPendingDialog={() => action('on open pending dialog')()} /> + ) : ( + ); }; export const GoldRecommended = () => { - return ( + const { subscriptionPlansWithPricingSystems } = useSubscriptionPlans({ + includeLegacy: true, + authenticatedUser: fakeAuthenticatedUserWithNoSubscription, + }); + return subscriptionPlansWithPricingSystems ? ( action('on close')()} recommendedPlanId="gdevelop_gold" onOpenPendingDialog={() => action('on open pending dialog')()} /> + ) : ( + ); }; export const ProRecommended = () => { - return ( + const { subscriptionPlansWithPricingSystems } = useSubscriptionPlans({ + includeLegacy: true, + authenticatedUser: fakeAuthenticatedUserWithNoSubscription, + }); + return subscriptionPlansWithPricingSystems ? ( action('on close')()} recommendedPlanId="gdevelop_startup" onOpenPendingDialog={() => action('on open pending dialog')()} /> + ) : ( + ); }; export const EducationRecommended = () => { - return ( + const { subscriptionPlansWithPricingSystems } = useSubscriptionPlans({ + includeLegacy: true, + authenticatedUser: fakeAuthenticatedUserWithNoSubscription, + }); + return subscriptionPlansWithPricingSystems ? ( action('on close')()} recommendedPlanId="gdevelop_education" onOpenPendingDialog={() => action('on open pending dialog')()} /> + ) : ( + ); }; export const WithoutSilverButRecommended = () => { - const availableSubscriptionPlansWithPrices = getAvailableSubscriptionPlansWithPrices( - subscriptionPlansWithPricingSystems - ); - const subscritionPlansWithoutSilver = availableSubscriptionPlansWithPrices.filter( - plan => plan.id !== 'gdevelop_silver' - ); - return ( + const { subscriptionPlansWithPricingSystems } = useSubscriptionPlans({ + includeLegacy: true, + authenticatedUser: fakeAuthenticatedUserWithNoSubscription, + }); + const subscritionPlansWithoutSilver = subscriptionPlansWithPricingSystems + ? subscriptionPlansWithPricingSystems.filter( + plan => plan.id !== 'gdevelop_silver' + ) + : null; + return subscritionPlansWithoutSilver ? ( action('on close')()} recommendedPlanId="gdevelop_silver" onOpenPendingDialog={() => action('on open pending dialog')()} /> + ) : ( + ); }; diff --git a/newIDE/app/src/stories/componentStories/Profile/Subscription/SubscriptionDetails.stories.js b/newIDE/app/src/stories/componentStories/Profile/Subscription/SubscriptionDetails.stories.js index fd8d2a3990b2..a113306dcc27 100644 --- a/newIDE/app/src/stories/componentStories/Profile/Subscription/SubscriptionDetails.stories.js +++ b/newIDE/app/src/stories/componentStories/Profile/Subscription/SubscriptionDetails.stories.js @@ -4,7 +4,6 @@ import { action } from '@storybook/addon-actions'; import paperDecorator from '../../../PaperDecorator'; import { - subscriptionPlansWithPricingSystems, fakeNotAuthenticatedUser, fakeAuthenticatedUserLoggingIn, fakeAuthenticatedUserWithNoSubscription, @@ -21,6 +20,10 @@ import { import subscriptionSuggestionDecorator from '../../../SubscriptionSuggestionDecorator'; import SubscriptionDetails from '../../../../Profile/Subscription/SubscriptionDetails'; import AlertProvider from '../../../../UI/Alert/AlertProvider'; +import useSubscriptionPlans, { + getAvailableSubscriptionPlansWithPrices, +} from '../../../../Utils/UseSubscriptionPlans'; +import LoaderModal from '../../../../UI/LoaderModal'; export default { title: 'Subscription/SubscriptionDetails', @@ -181,18 +184,24 @@ export const Default = ({ } const { subscription: userSubscription } = authenticatedUser; + const { subscriptionPlansWithPricingSystems } = useSubscriptionPlans({ + includeLegacy: true, + authenticatedUser, + }); - return ( + return subscriptionPlansWithPricingSystems ? ( + ) : ( + ); }; diff --git a/newIDE/app/src/stories/componentStories/Profile/Subscription/SubscriptionDialog.stories.js b/newIDE/app/src/stories/componentStories/Profile/Subscription/SubscriptionDialog.stories.js index 0614b724a0fb..ee00e56f9e98 100644 --- a/newIDE/app/src/stories/componentStories/Profile/Subscription/SubscriptionDialog.stories.js +++ b/newIDE/app/src/stories/componentStories/Profile/Subscription/SubscriptionDialog.stories.js @@ -14,11 +14,13 @@ import { fakeAuthenticatedUserWithLegacyProSubscription, fakeAuthenticatedUserWithEducationPlan, fakeStartupAuthenticatedUser, - subscriptionPlansWithPricingSystems, } from '../../../../fixtures/GDevelopServicesTestData'; import SubscriptionDialog from '../../../../Profile/Subscription/SubscriptionDialog'; import AlertProvider from '../../../../UI/Alert/AlertProvider'; -import { getAvailableSubscriptionPlansWithPrices } from '../../../../Utils/UseSubscriptionPlans'; +import useSubscriptionPlans, { + getAvailableSubscriptionPlansWithPrices, +} from '../../../../Utils/UseSubscriptionPlans'; +import LoaderModal from '../../../../UI/LoaderModal'; export default { title: 'Subscription/SubscriptionDialog', @@ -159,16 +161,22 @@ export const Default = ({ } } + const { subscriptionPlansWithPricingSystems } = useSubscriptionPlans({ + includeLegacy: true, + authenticatedUser, + }); + const { subscription: userSubscription } = authenticatedUser; - const userLegacySubscriptionPlanWithPricingSystem = userSubscription - ? subscriptionPlansWithPricingSystems.find( - planWithPricingSystem => - planWithPricingSystem.id === userSubscription.planId && - planWithPricingSystem.isLegacy - ) - : null; + const userLegacySubscriptionPlanWithPricingSystem = + userSubscription && subscriptionPlansWithPricingSystems + ? subscriptionPlansWithPricingSystems.find( + planWithPricingSystem => + planWithPricingSystem.id === userSubscription.planId && + planWithPricingSystem.isLegacy + ) + : null; - return ( + return subscriptionPlansWithPricingSystems ? ( + ) : ( + ); };