fengmk2
2025-02-11 00:18:08 +00:00
parent 9bf1e38e94
commit 7214ef9fbc
3 changed files with 31 additions and 7 deletions

View 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],
};

View File

@@ -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],
})

View File

@@ -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`