From f57827c5303287fefa46a313cd7617c27b37b79b Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Sun, 13 Feb 2022 07:09:22 +0100 Subject: [PATCH] =?UTF-8?q?feat(results):=20=F0=9F=9B=82=20Limit=20typebot?= =?UTF-8?q?=20branding?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/account/SubscriptionTag.tsx | 2 +- .../settings/GeneralSettingsForm.tsx | 29 ++++++++++++++++--- .../builder/playwright/tests/settings.spec.ts | 20 +++++++++++++ 3 files changed, 46 insertions(+), 5 deletions(-) diff --git a/apps/builder/components/account/SubscriptionTag.tsx b/apps/builder/components/account/SubscriptionTag.tsx index fcd72a1ec..012dc6289 100644 --- a/apps/builder/components/account/SubscriptionTag.tsx +++ b/apps/builder/components/account/SubscriptionTag.tsx @@ -13,7 +13,7 @@ export const SubscriptionTag = ({ plan }: { plan?: Plan }) => { return Offered } case Plan.PRO: { - return Pro plan + return Pro plan } default: { return Free plan diff --git a/apps/builder/components/settings/GeneralSettingsForm.tsx b/apps/builder/components/settings/GeneralSettingsForm.tsx index 2bea5cc4c..8e2587ddb 100644 --- a/apps/builder/components/settings/GeneralSettingsForm.tsx +++ b/apps/builder/components/settings/GeneralSettingsForm.tsx @@ -1,6 +1,16 @@ -import { Flex, FormLabel, Stack, Switch } from '@chakra-ui/react' +import { + Flex, + FormLabel, + Stack, + Switch, + Tag, + useDisclosure, +} from '@chakra-ui/react' +import { UpgradeModal } from 'components/shared/modals/UpgradeModal.' +import { useUser } from 'contexts/UserContext' import { GeneralSettings } from 'models' import React from 'react' +import { isFreePlan } from 'services/user' type Props = { generalSettings: GeneralSettings @@ -11,16 +21,27 @@ export const GeneralSettingsForm = ({ generalSettings, onGeneralSettingsChange, }: Props) => { - const handleSwitchChange = () => + const { isOpen, onOpen, onClose } = useDisclosure() + const { user } = useUser() + const isUserFreePlan = isFreePlan(user) + const handleSwitchChange = () => { + if (generalSettings?.isBrandingEnabled && isUserFreePlan) return onGeneralSettingsChange({ isBrandingEnabled: !generalSettings?.isBrandingEnabled, }) + } return ( - + + - Typebot.io branding + Typebot.io branding{' '} + {isUserFreePlan && Pro} { await page.fill('textarea#description', 'Lorem ipsum') }) }) + + test.describe('Free user', () => { + test.use({ + storageState: path.join(__dirname, '../freeUser.json'), + }) + test("can't remove branding", async ({ page }) => { + const typebotId = 'free-branding-typebot' + await importTypebotInDatabase( + path.join(__dirname, '../fixtures/typebots/theme.json'), + { + id: typebotId, + } + ) + await page.goto(`/typebots/${typebotId}/settings`) + await page.click('button:has-text("General")') + await expect(page.locator('text=Pro')).toBeVisible() + await page.click('text=Typebot.io branding') + await expect(page.locator('text=Upgrade now')).toBeVisible() + }) + }) })