mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-09-07 01:09:54 +08:00
fix(server): only handle doc.snapshot.updated event on renderer (#10062)
before  after 
This commit is contained in:
@@ -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 { DocStorageModule } from '../doc';
|
||||||
import { PermissionModule } from '../permission';
|
import { PermissionModule } from '../permission';
|
||||||
import { DocRendererController } from './controller';
|
import { DocRendererController } from './controller';
|
||||||
|
import { DocEventsListenerProvider } from './event';
|
||||||
import { DocContentService } from './service';
|
import { DocContentService } from './service';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [DocStorageModule, PermissionModule],
|
imports: [DocStorageModule, PermissionModule],
|
||||||
providers: [DocContentService],
|
providers: [DocContentService, DocEventsListenerProvider],
|
||||||
controllers: [DocRendererController],
|
controllers: [DocRendererController],
|
||||||
exports: [DocContentService],
|
exports: [DocContentService],
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { applyUpdate, Doc } from 'yjs';
|
import { applyUpdate, Doc } from 'yjs';
|
||||||
|
|
||||||
import { Cache, OnEvent } from '../../base';
|
import { Cache } from '../../base';
|
||||||
import { DocReader } from '../doc';
|
import { DocReader } from '../doc';
|
||||||
import {
|
import {
|
||||||
type PageDocContent,
|
type PageDocContent,
|
||||||
@@ -78,11 +78,7 @@ export class DocContentService {
|
|||||||
return content;
|
return content;
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnEvent('doc.snapshot.updated')
|
async markDocContentCacheStale(workspaceId: string, docId: string) {
|
||||||
async markDocContentCacheStale({
|
|
||||||
workspaceId,
|
|
||||||
docId,
|
|
||||||
}: Events['doc.snapshot.updated']) {
|
|
||||||
const key =
|
const key =
|
||||||
workspaceId === docId
|
workspaceId === docId
|
||||||
? `workspace:${workspaceId}:content`
|
? `workspace:${workspaceId}:content`
|
||||||
|
|||||||
Reference in New Issue
Block a user