mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-11 20:08:37 +00:00
fix(server): only handle doc.snapshot.updated event on renderer (#10062)
before  after 
This commit is contained in:
27
packages/backend/server/src/core/doc-renderer/event.ts
Normal file
27
packages/backend/server/src/core/doc-renderer/event.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import { FactoryProvider } from '@nestjs/common';
|
||||
|
||||
import { Config, OnEvent } from '../../base';
|
||||
import { DocContentService } from './service';
|
||||
|
||||
class DocEventsListener {
|
||||
constructor(private readonly doc: DocContentService) {}
|
||||
|
||||
@OnEvent('doc.snapshot.updated')
|
||||
async handleDocSnapshotUpdated({
|
||||
workspaceId,
|
||||
docId,
|
||||
}: Events['doc.snapshot.updated']) {
|
||||
await this.doc.markDocContentCacheStale(workspaceId, docId);
|
||||
}
|
||||
}
|
||||
|
||||
export const DocEventsListenerProvider: FactoryProvider = {
|
||||
provide: DocEventsListener,
|
||||
useFactory: (config: Config, doc: DocContentService) => {
|
||||
if (config.flavor.renderer) {
|
||||
return new DocEventsListener(doc);
|
||||
}
|
||||
return;
|
||||
},
|
||||
inject: [Config, DocContentService],
|
||||
};
|
||||
@@ -3,11 +3,12 @@ import { Module } from '@nestjs/common';
|
||||
import { DocStorageModule } from '../doc';
|
||||
import { PermissionModule } from '../permission';
|
||||
import { DocRendererController } from './controller';
|
||||
import { DocEventsListenerProvider } from './event';
|
||||
import { DocContentService } from './service';
|
||||
|
||||
@Module({
|
||||
imports: [DocStorageModule, PermissionModule],
|
||||
providers: [DocContentService],
|
||||
providers: [DocContentService, DocEventsListenerProvider],
|
||||
controllers: [DocRendererController],
|
||||
exports: [DocContentService],
|
||||
})
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { applyUpdate, Doc } from 'yjs';
|
||||
|
||||
import { Cache, OnEvent } from '../../base';
|
||||
import { Cache } from '../../base';
|
||||
import { DocReader } from '../doc';
|
||||
import {
|
||||
type PageDocContent,
|
||||
@@ -78,11 +78,7 @@ export class DocContentService {
|
||||
return content;
|
||||
}
|
||||
|
||||
@OnEvent('doc.snapshot.updated')
|
||||
async markDocContentCacheStale({
|
||||
workspaceId,
|
||||
docId,
|
||||
}: Events['doc.snapshot.updated']) {
|
||||
async markDocContentCacheStale(workspaceId: string, docId: string) {
|
||||
const key =
|
||||
workspaceId === docId
|
||||
? `workspace:${workspaceId}:content`
|
||||
|
||||
Reference in New Issue
Block a user