diff options
| author | dakkar <dakkar@thenautilus.net> | 2025-03-15 19:05:28 +0000 |
|---|---|---|
| committer | dakkar <dakkar@thenautilus.net> | 2025-03-15 19:17:36 +0000 |
| commit | d0a074ac899d4bf2f4613ebf34d3650fc80ab2fc (patch) | |
| tree | f93aedf3533081f4d980c6ee4c2ef6e3f14404ca /packages/backend/src/server/web/UrlPreviewService.ts | |
| parent | merge: Add external url warning to url previews (!944) (diff) | |
| download | sharkey-d0a074ac899d4bf2f4613ebf34d3650fc80ab2fc.tar.gz sharkey-d0a074ac899d4bf2f4613ebf34d3650fc80ab2fc.tar.bz2 sharkey-d0a074ac899d4bf2f4613ebf34d3650fc80ab2fc.zip | |
fetch linked notes manually, unless we have them in DB - fixes 1006
Diffstat (limited to 'packages/backend/src/server/web/UrlPreviewService.ts')
| -rw-r--r-- | packages/backend/src/server/web/UrlPreviewService.ts | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/packages/backend/src/server/web/UrlPreviewService.ts b/packages/backend/src/server/web/UrlPreviewService.ts index 19dac1dfb8..cf130a21ec 100644 --- a/packages/backend/src/server/web/UrlPreviewService.ts +++ b/packages/backend/src/server/web/UrlPreviewService.ts @@ -19,6 +19,7 @@ import { MiMeta } from '@/models/Meta.js'; import { RedisKVCache } from '@/misc/cache.js'; import { UtilityService } from '@/core/UtilityService.js'; import type { FastifyRequest, FastifyReply } from 'fastify'; +import { ApDbResolverService } from '@/core/activitypub/ApDbResolverService.js'; @Injectable() export class UrlPreviewService { @@ -38,6 +39,7 @@ export class UrlPreviewService { private httpRequestService: HttpRequestService, private loggerService: LoggerService, private utilityService: UtilityService, + private apDbResolverService: ApDbResolverService, ) { this.logger = this.loggerService.getLogger('url-preview'); this.previewCache = new RedisKVCache<SummalyResult>(this.redisClient, 'summaly', { @@ -102,12 +104,16 @@ export class UrlPreviewService { } const key = `${url}@${lang}`; - const cached = await this.previewCache.get(key); + const cached = await this.previewCache.get(key) as SummalyResult & { haveNoteLocally?: boolean }; if (cached !== undefined) { this.logger.info(`Returning cache preview of ${key}`); // Cache 7days reply.header('Cache-Control', 'max-age=604800, immutable'); + if (cached.activityPub) { + cached.haveNoteLocally = !! await this.apDbResolverService.getNoteFromApId(cached.activityPub); + } + return cached; } @@ -116,7 +122,7 @@ export class UrlPreviewService { : `Getting preview of ${key} ...`); try { - const summary = this.meta.urlPreviewSummaryProxyUrl + const summary: SummalyResult & { haveNoteLocally?: boolean } = this.meta.urlPreviewSummaryProxyUrl ? await this.fetchSummaryFromProxy(url, this.meta, lang) : await this.fetchSummary(url, this.meta, lang); @@ -135,6 +141,10 @@ export class UrlPreviewService { this.previewCache.set(key, summary); + if (summary.activityPub) { + summary.haveNoteLocally = !! await this.apDbResolverService.getNoteFromApId(summary.activityPub); + } + // Cache 7days reply.header('Cache-Control', 'max-age=604800, immutable'); |