mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-08-30 13:20:45 +08:00
feat(editor): conditionally display upgrade prompt for free users
This commit is contained in:
@@ -1,6 +1,9 @@
|
|||||||
import { Popover, uniReactRoot } from '@affine/component';
|
import { Popover, uniReactRoot } from '@affine/component';
|
||||||
import { Button } from '@affine/component/ui/button';
|
import { Button } from '@affine/component/ui/button';
|
||||||
import { Menu, MenuItem } from '@affine/component/ui/menu';
|
import { Menu, MenuItem } from '@affine/component/ui/menu';
|
||||||
|
import { SubscriptionService } from '@affine/core/modules/cloud';
|
||||||
|
import { WorkspaceDialogService } from '@affine/core/modules/dialogs';
|
||||||
|
import { useSignalValue } from '@affine/core/modules/doc-info/utils';
|
||||||
import { PeekViewService } from '@affine/core/modules/peek-view';
|
import { PeekViewService } from '@affine/core/modules/peek-view';
|
||||||
import {
|
import {
|
||||||
type Cell,
|
type Cell,
|
||||||
@@ -26,6 +29,7 @@ import {
|
|||||||
} from '@preact/signals-core';
|
} from '@preact/signals-core';
|
||||||
import {
|
import {
|
||||||
generateFractionalIndexingKeyBetween,
|
generateFractionalIndexingKeyBetween,
|
||||||
|
useLiveData,
|
||||||
useService,
|
useService,
|
||||||
} from '@toeverything/infra';
|
} from '@toeverything/infra';
|
||||||
import { fileTypeFromBuffer, type FileTypeResult } from 'file-type';
|
import { fileTypeFromBuffer, type FileTypeResult } from 'file-type';
|
||||||
@@ -39,8 +43,6 @@ import {
|
|||||||
useMemo,
|
useMemo,
|
||||||
} from 'react';
|
} from 'react';
|
||||||
|
|
||||||
import { WorkspaceDialogService } from '../../../../modules/dialogs';
|
|
||||||
import { useSignalValue } from '../../../../modules/doc-info/utils';
|
|
||||||
import type { ImageData } from '../../../../modules/peek-view/view/image-preview';
|
import type { ImageData } from '../../../../modules/peek-view/view/image-preview';
|
||||||
import { CircularProgress } from '../../components/loading';
|
import { CircularProgress } from '../../components/loading';
|
||||||
import { progressIconContainer } from '../../components/loading.css';
|
import { progressIconContainer } from '../../components/loading.css';
|
||||||
@@ -387,6 +389,10 @@ const FileCellComponent: ForwardRefRenderFunction<
|
|||||||
const fileList = useSignalValue(manager.fileList);
|
const fileList = useSignalValue(manager.fileList);
|
||||||
const isEditing = useSignalValue(manager.isEditing);
|
const isEditing = useSignalValue(manager.isEditing);
|
||||||
const workspaceDialogService = useService(WorkspaceDialogService);
|
const workspaceDialogService = useService(WorkspaceDialogService);
|
||||||
|
const subscriptionService = useService(SubscriptionService);
|
||||||
|
const isPro = useLiveData(subscriptionService?.subscription.pro$);
|
||||||
|
const isBeliever = useLiveData(subscriptionService?.subscription.isBeliever$);
|
||||||
|
const isProOrBeliever = isPro || isBeliever;
|
||||||
const jumpToPricePlan = useCallback(() => {
|
const jumpToPricePlan = useCallback(() => {
|
||||||
workspaceDialogService.open('setting', {
|
workspaceDialogService.open('setting', {
|
||||||
activeTab: 'plans',
|
activeTab: 'plans',
|
||||||
@@ -422,9 +428,11 @@ const FileCellComponent: ForwardRefRenderFunction<
|
|||||||
<div className={styles.fileSizeInfo}>
|
<div className={styles.fileSizeInfo}>
|
||||||
The maximum size per file is 100MB
|
The maximum size per file is 100MB
|
||||||
</div>
|
</div>
|
||||||
<a className={styles.upgradeLink} onClick={jumpToPricePlan}>
|
{!isProOrBeliever && (
|
||||||
Upgrade to Pro
|
<a className={styles.upgradeLink} onClick={jumpToPricePlan}>
|
||||||
</a>
|
Upgrade to Pro
|
||||||
|
</a>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user