From 38ee6c1331d3afae5febc88f477bd4bb9f154e80 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Tue, 16 Jan 2024 17:46:41 +0800 Subject: [PATCH] merge labels and highlights when saving a duplicate item --- packages/api/src/services/labels.ts | 28 ++++++++++++++++++++++++++ packages/api/src/services/save_page.ts | 6 ++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/packages/api/src/services/labels.ts b/packages/api/src/services/labels.ts index 33206093d..cd72e087f 100644 --- a/packages/api/src/services/labels.ts +++ b/packages/api/src/services/labels.ts @@ -58,6 +58,34 @@ export const findOrCreateLabels = async ( ) } +export const createAndAddLabelsToLibraryItem = async ( + libraryItemId: string, + userId: string, + labels?: CreateLabelInput[] | null, + rssFeedUrl?: string | null, + source?: LabelSource, + pubsub?: PubsubClient +) => { + if (rssFeedUrl) { + // add rss label to labels + labels = (labels || []).concat({ name: 'RSS' }) + source = 'system' + } + + // save labels in item + if (labels && labels.length > 0) { + const newLabels = await findOrCreateLabels(labels, userId) + + await addLabelsToLibraryItem( + newLabels, + libraryItemId, + userId, + source, + pubsub + ) + } +} + export const createAndSaveLabelsInLibraryItem = async ( libraryItemId: string, userId: string, diff --git a/packages/api/src/services/save_page.ts b/packages/api/src/services/save_page.ts index e4f065e94..33bec841b 100644 --- a/packages/api/src/services/save_page.ts +++ b/packages/api/src/services/save_page.ts @@ -24,7 +24,7 @@ import { parsePreparedContent } from '../utils/parser' import { contentReaderForLibraryItem } from '../utils/uploads' import { createPageSaveRequest } from './create_page_save_request' import { createHighlight } from './highlights' -import { createAndSaveLabelsInLibraryItem } from './labels' +import { createAndAddLabelsToLibraryItem } from './labels' import { createOrUpdateLibraryItem } from './library_item' // where we can use APIs to fetch their underlying content. @@ -132,7 +132,8 @@ export const savePage = async ( ) clientRequestId = newItem.id - await createAndSaveLabelsInLibraryItem( + // merge labels + await createAndAddLabelsToLibraryItem( clientRequestId, user.id, input.labels, @@ -157,6 +158,7 @@ export const savePage = async ( libraryItem: { id: clientRequestId }, } + // merge highlights try { await createHighlight(highlight, clientRequestId, user.id) } catch (error) {