Bpistle/src/services/post-content-cache.service.ts
2025-05-23 22:47:31 +08:00

48 lines
1.2 KiB
TypeScript

import { Content } from '@tiptap/react'
import { Event } from 'nostr-tools'
class PostContentCacheService {
static instance: PostContentCacheService
private normalPostCache: Map<string, Content> = new Map()
constructor() {
if (!PostContentCacheService.instance) {
PostContentCacheService.instance = this
}
return PostContentCacheService.instance
}
getPostCache({
defaultContent,
parentEvent
}: { defaultContent?: string; parentEvent?: Event } = {}) {
return (
this.normalPostCache.get(this.generateCacheKey(defaultContent, parentEvent)) ?? defaultContent
)
}
setPostCache(
{ defaultContent, parentEvent }: { defaultContent?: string; parentEvent?: Event },
content: Content
) {
this.normalPostCache.set(this.generateCacheKey(defaultContent, parentEvent), content)
}
clearPostCache({
defaultContent,
parentEvent
}: {
defaultContent?: string
parentEvent?: Event
}) {
this.normalPostCache.delete(this.generateCacheKey(defaultContent, parentEvent))
}
generateCacheKey(defaultContent: string = '', parentEvent?: Event): string {
return parentEvent ? parentEvent.id : defaultContent
}
}
const instance = new PostContentCacheService()
export default instance