62 lines
1.6 KiB
TypeScript
62 lines
1.6 KiB
TypeScript
import { Event } from 'nostr-tools'
|
|
|
|
class PostContentCacheService {
|
|
static instance: PostContentCacheService
|
|
|
|
private normalPostCache: Map<
|
|
string,
|
|
{
|
|
content: string
|
|
pictureInfos: { url: string; tags: string[][] }[]
|
|
}
|
|
> = new Map()
|
|
private picturePostCache: {
|
|
content: string
|
|
pictureInfos: { url: string; tags: string[][] }[]
|
|
} = { content: '', pictureInfos: [] }
|
|
|
|
constructor() {
|
|
if (!PostContentCacheService.instance) {
|
|
PostContentCacheService.instance = this
|
|
}
|
|
return PostContentCacheService.instance
|
|
}
|
|
|
|
getNormalPostCache({
|
|
defaultContent,
|
|
parentEvent
|
|
}: { defaultContent?: string; parentEvent?: Event } = {}) {
|
|
return (
|
|
this.normalPostCache.get(this.generateCacheKey(defaultContent, parentEvent)) ?? {
|
|
content: defaultContent,
|
|
pictureInfos: [] as { url: string; tags: string[][] }[]
|
|
}
|
|
)
|
|
}
|
|
|
|
setNormalPostCache(
|
|
{ defaultContent, parentEvent }: { defaultContent?: string; parentEvent?: Event },
|
|
content: string,
|
|
pictureInfos: { url: string; tags: string[][] }[]
|
|
) {
|
|
this.normalPostCache.set(this.generateCacheKey(defaultContent, parentEvent), {
|
|
content,
|
|
pictureInfos
|
|
})
|
|
}
|
|
|
|
getPicturePostCache() {
|
|
return this.picturePostCache
|
|
}
|
|
|
|
setPicturePostCache(content: string, pictureInfos: { url: string; tags: string[][] }[]) {
|
|
this.picturePostCache = { content, pictureInfos }
|
|
}
|
|
|
|
generateCacheKey(defaultContent: string = '', parentEvent?: Event): string {
|
|
return parentEvent ? parentEvent.id : defaultContent
|
|
}
|
|
}
|
|
|
|
const instance = new PostContentCacheService()
|
|
export default instance
|