refactor: native feature management (#2350)
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
import RevisionContentLocked from './RevisionContentLocked'
|
||||
import { observer } from 'mobx-react-lite'
|
||||
import { SubscriptionController } from '@/Controllers/Subscription/SubscriptionController'
|
||||
import { NoteHistoryController, RevisionContentState } from '@/Controllers/NoteHistory/NoteHistoryController'
|
||||
import Spinner from '@/Components/Spinner/Spinner'
|
||||
import { ReadonlyNoteContent } from '../NoteView/ReadonlyNoteContent'
|
||||
@@ -9,10 +8,9 @@ import { SNNote } from '@standardnotes/snjs'
|
||||
type Props = {
|
||||
noteHistoryController: NoteHistoryController
|
||||
note: SNNote
|
||||
subscriptionController: SubscriptionController
|
||||
}
|
||||
|
||||
const HistoryModalContentPane = ({ noteHistoryController, subscriptionController, note }: Props) => {
|
||||
const HistoryModalContentPane = ({ noteHistoryController, note }: Props) => {
|
||||
const { selectedRevision, contentState } = noteHistoryController
|
||||
|
||||
switch (contentState) {
|
||||
@@ -30,7 +28,7 @@ const HistoryModalContentPane = ({ noteHistoryController, subscriptionController
|
||||
}
|
||||
return <ReadonlyNoteContent note={note} content={selectedRevision.payload.content} showLinkedItems={false} />
|
||||
case RevisionContentState.NotEntitled:
|
||||
return <RevisionContentLocked subscriptionController={subscriptionController} />
|
||||
return <RevisionContentLocked />
|
||||
default:
|
||||
return null
|
||||
}
|
||||
|
||||
@@ -15,7 +15,6 @@ import MobileModalHeader from '../Modal/MobileModalHeader'
|
||||
const HistoryModalDialogContent = ({
|
||||
application,
|
||||
dismissModal,
|
||||
subscriptionController,
|
||||
note,
|
||||
selectionController,
|
||||
}: RevisionHistoryModalContentProps) => {
|
||||
@@ -87,11 +86,7 @@ const HistoryModalDialogContent = ({
|
||||
selectedMobileTab === 'Content' ? 'flex' : 'hidden',
|
||||
)}
|
||||
>
|
||||
<HistoryModalContentPane
|
||||
noteHistoryController={noteHistoryController}
|
||||
note={note}
|
||||
subscriptionController={subscriptionController}
|
||||
/>
|
||||
<HistoryModalContentPane noteHistoryController={noteHistoryController} note={note} />
|
||||
</div>
|
||||
</div>
|
||||
<HistoryModalFooter dismissModal={dismissModal} noteHistoryController={noteHistoryController} />
|
||||
|
||||
@@ -2,7 +2,7 @@ import { observer } from 'mobx-react-lite'
|
||||
import { FunctionComponent } from 'react'
|
||||
import { HistoryLockedIllustration } from '@standardnotes/icons'
|
||||
import Button from '@/Components/Button/Button'
|
||||
import { SubscriptionController } from '@/Controllers/Subscription/SubscriptionController'
|
||||
import { useApplication } from '../ApplicationProvider'
|
||||
|
||||
const getPlanHistoryDuration = (planName: string | undefined) => {
|
||||
switch (planName) {
|
||||
@@ -19,12 +19,15 @@ const getPremiumContentCopy = (planName: string | undefined) => {
|
||||
return `Version history is limited to ${getPlanHistoryDuration(planName)} in the ${planName} plan`
|
||||
}
|
||||
|
||||
type Props = {
|
||||
subscriptionController: SubscriptionController
|
||||
}
|
||||
const RevisionContentLocked: FunctionComponent = () => {
|
||||
const application = useApplication()
|
||||
|
||||
const RevisionContentLocked: FunctionComponent<Props> = ({ subscriptionController }) => {
|
||||
const { userSubscriptionName, isUserSubscriptionExpired, isUserSubscriptionCanceled } = subscriptionController
|
||||
let planName = 'free'
|
||||
if (application.subscriptions.hasOnlineSubscription()) {
|
||||
if (!application.subscriptions.isUserSubscriptionCanceled && !application.subscriptions.isUserSubscriptionExpired) {
|
||||
planName = application.subscriptions.userSubscriptionName
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="flex h-full w-full items-center justify-center">
|
||||
@@ -32,12 +35,7 @@ const RevisionContentLocked: FunctionComponent<Props> = ({ subscriptionControlle
|
||||
<HistoryLockedIllustration />
|
||||
<div className="mt-2 mb-1 text-lg font-bold">Can't access this version</div>
|
||||
<div className="leading-140% mb-4 text-passive-0">
|
||||
{getPremiumContentCopy(
|
||||
!isUserSubscriptionCanceled && !isUserSubscriptionExpired && userSubscriptionName
|
||||
? userSubscriptionName
|
||||
: 'free',
|
||||
)}
|
||||
. Learn more about our other plans to upgrade your history capacity.
|
||||
{getPremiumContentCopy(planName)}. Learn more about our other plans to upgrade your history capacity.
|
||||
</div>
|
||||
<Button
|
||||
primary
|
||||
|
||||
@@ -10,7 +10,6 @@ const RevisionHistoryModal: FunctionComponent<RevisionHistoryModalProps> = ({
|
||||
application,
|
||||
historyModalController,
|
||||
selectionController,
|
||||
subscriptionController,
|
||||
}) => {
|
||||
const addAndroidBackHandler = useAndroidBackHandler()
|
||||
|
||||
@@ -49,7 +48,6 @@ const RevisionHistoryModal: FunctionComponent<RevisionHistoryModalProps> = ({
|
||||
dismissModal={historyModalController.dismissModal}
|
||||
note={historyModalController.note}
|
||||
selectionController={selectionController}
|
||||
subscriptionController={subscriptionController}
|
||||
/>
|
||||
)}
|
||||
</HistoryModalDialog>
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
import { WebApplication } from '@/Application/WebApplication'
|
||||
import { HistoryModalController } from '@/Controllers/NoteHistory/HistoryModalController'
|
||||
import { SelectedItemsController } from '@/Controllers/SelectedItemsController'
|
||||
import { SubscriptionController } from '@/Controllers/Subscription/SubscriptionController'
|
||||
import { SNNote } from '@standardnotes/snjs'
|
||||
|
||||
type CommonProps = {
|
||||
application: WebApplication
|
||||
selectionController: SelectedItemsController
|
||||
subscriptionController: SubscriptionController
|
||||
}
|
||||
|
||||
export type RevisionHistoryModalProps = CommonProps & {
|
||||
|
||||
Reference in New Issue
Block a user