/* This file is part of the Notesnook project (https://notesnook.com/) Copyright (C) 2022 Streetwriters (Private) Limited This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ import React, { useState } from "react"; import { ActivityIndicator, ScrollView, View } from "react-native"; import { LAUNCH_ROCKET } from "../../assets/images/assets"; import umami from "../../common/analytics"; import { db } from "../../common/database"; import { usePricing } from "../../hooks/use-pricing"; import { DDS } from "../../services/device-detection"; import { eSendEvent, presentSheet } from "../../services/event-manager"; import { useThemeStore } from "../../stores/use-theme-store"; import { useUserStore } from "../../stores/use-user-store"; import { getElevation } from "../../utils"; import { eClosePremiumDialog, eCloseProgressDialog, eOpenLoginDialog } from "../../utils/events"; import { SIZE } from "../../utils/size"; import { sleep } from "../../utils/time"; import { AuthMode } from "../auth"; import SheetProvider from "../sheet-provider"; import { Toast } from "../toast"; import { Button } from "../ui/button"; import { IconButton } from "../ui/icon-button"; import Seperator from "../ui/seperator"; import { SvgView } from "../ui/svg"; import Heading from "../ui/typography/heading"; import Paragraph from "../ui/typography/paragraph"; import { Walkthrough } from "../walkthroughs"; import { features } from "./features"; import { Group } from "./group"; import { PricingPlans } from "./pricing-plans"; export const Component = ({ close, promo }) => { const colors = useThemeStore((state) => state.colors); const user = useUserStore((state) => state.user); const userCanRequestTrial = user && (!user.subscription || !user.subscription.expiry) ? true : false; const [floatingButton, setFloatingButton] = useState(false); const pricing = usePricing("monthly"); const onPress = async () => { if (user) { umami.pageView("/pro-plans", "/pro-screen"); presentSheet({ context: "pricing_plans", component: ( ) }); } else { close(); umami.pageView("/signup", "/pro-screen"); setTimeout(() => { eSendEvent(eOpenLoginDialog, AuthMode.trialSignup); }, 400); } }; const onScroll = (event) => { let contentSize = event.nativeEvent.contentSize.height; contentSize = contentSize - event.nativeEvent.layoutMeasurement.height; let yOffset = event.nativeEvent.contentOffset.y; if (yOffset > 600 && yOffset < contentSize - 400) { setFloatingButton(true); } else { setFloatingButton(false); } }; return ( { close(); }} customStyle={{ position: "absolute", right: DDS.isTab ? 30 : 15, top: 30, zIndex: 10, width: 50, height: 50 }} color={colors.pri} name="close" /> Notesnook{" "} Pro {!pricing ? ( ) : ( ({pricing?.product?.localizedPrice} / mo) )} Ready to take the next step on your private note taking journey? {userCanRequestTrial ? (