mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-14 21:27:20 +00:00
refactor(editor): file size limit service (#12026)
Closes: [BS-3359](https://linear.app/affine-design/issue/BS-3359/重构-filesizelimitservice-支持-handle-文件超出限制) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Added an "Upgrade" button to attachment blocks that appears when file size limits are exceeded, enabling users to view storage plans and upgrade. - **Refactor** - Unified file size limit handling across attachments and images for consistency. - Redesigned file size limit service with improved integration and dependency injection. - **Chores** - Updated service registrations and dependency management for file size limit enforcement. - Integrated a new file size limit extension that triggers storage plan dialogs and tracking events on limit exceedance. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
import { WorkspaceDialogService } from '@affine/core/modules/dialogs';
|
||||
import track from '@affine/track';
|
||||
import type { Container } from '@blocksuite/affine/global/di';
|
||||
import {
|
||||
FileSizeLimitProvider,
|
||||
type IFileSizeLimitService,
|
||||
} from '@blocksuite/affine/shared/services';
|
||||
import { Extension } from '@blocksuite/affine/store';
|
||||
import type { FrameworkProvider } from '@toeverything/infra';
|
||||
|
||||
export function patchFileSizeLimitExtension(framework: FrameworkProvider) {
|
||||
const workspaceDialogService = framework.get(WorkspaceDialogService);
|
||||
|
||||
class AffineFileSizeLimitService
|
||||
extends Extension
|
||||
implements IFileSizeLimitService
|
||||
{
|
||||
// 2GB
|
||||
maxFileSize = 2 * 1024 * 1024 * 1024;
|
||||
|
||||
onOverFileSize() {
|
||||
workspaceDialogService.open('setting', {
|
||||
activeTab: 'plans',
|
||||
scrollAnchor: 'cloudPricingPlan',
|
||||
});
|
||||
track.$.paywall.storage.viewPlans();
|
||||
}
|
||||
|
||||
static override setup(di: Container) {
|
||||
di.override(FileSizeLimitProvider, AffineFileSizeLimitService);
|
||||
}
|
||||
}
|
||||
|
||||
return AffineFileSizeLimitService;
|
||||
}
|
||||
@@ -26,6 +26,7 @@ import { edgelessCopilotWidget } from '../ai/widgets/edgeless-copilot';
|
||||
import { buildDocDisplayMetaExtension } from '../extensions/display-meta';
|
||||
import { getEditorConfigExtension } from '../extensions/editor-config';
|
||||
import { getPagePreviewThemeExtension } from '../extensions/entry/enable-preview';
|
||||
import { patchFileSizeLimitExtension } from '../extensions/file-size-limit';
|
||||
import { getFontConfigExtension } from '../extensions/font-config';
|
||||
import { patchPeekViewService } from '../extensions/peek-view-service';
|
||||
import { getTelemetryExtension } from '../extensions/telemetry';
|
||||
@@ -58,6 +59,7 @@ class MigratingAffineViewExtension extends ViewExtensionProvider<
|
||||
if (context.scope === 'page' || context.scope === 'edgeless') {
|
||||
context.register(getTelemetryExtension());
|
||||
context.register(getEditorConfigExtension(framework));
|
||||
context.register(patchFileSizeLimitExtension(framework));
|
||||
}
|
||||
if (
|
||||
context.scope === 'preview-page' ||
|
||||
|
||||
Reference in New Issue
Block a user