From 7c281359e84d5a08f6171d41eb90bc76b0e54652 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Wed, 27 Mar 2024 11:29:47 +0800 Subject: [PATCH] fix recommendations not filtered correctly by rules --- .../api/src/resolvers/recommendations/index.ts | 4 ++-- packages/api/src/services/groups.ts | 2 +- packages/api/src/services/library_item.ts | 17 +++++++++-------- packages/api/src/services/recommendation.ts | 12 +++++++++++- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/packages/api/src/resolvers/recommendations/index.ts b/packages/api/src/resolvers/recommendations/index.ts index 061db3728..e22401542 100644 --- a/packages/api/src/resolvers/recommendations/index.ts +++ b/packages/api/src/resolvers/recommendations/index.ts @@ -171,7 +171,7 @@ export const recommendResolver = authorized< member.user.id, item.id, { - group: { id: group.id }, + group: { id: group.id, name: group.name }, note: input.note, recommender: { id: uid }, createdAt: new Date(), @@ -278,11 +278,11 @@ export const recommendHighlightsResolver = authorized< member.user.id, item.id, { - id: group.id, note: input.note, recommender: { id: uid }, createdAt: new Date(), libraryItem: { id: item.id }, + group: { id: group.id, name: group.name }, }, auth, input.highlightIds diff --git a/packages/api/src/services/groups.ts b/packages/api/src/services/groups.ts index e3ec84ebe..cedfecd5a 100644 --- a/packages/api/src/services/groups.ts +++ b/packages/api/src/services/groups.ts @@ -259,7 +259,7 @@ export const createLabelAndRuleForGroup = async ( }, ], // add a condition to check if the page is created - filter: `event:created recommendedBy:"${groupName}"`, + filter: `recommendedBy:"${groupName}"`, }) await Promise.all([addLabelPromise, sendNotificationPromise]) diff --git a/packages/api/src/services/library_item.ts b/packages/api/src/services/library_item.ts index f239cea81..9290b8ece 100644 --- a/packages/api/src/services/library_item.ts +++ b/packages/api/src/services/library_item.ts @@ -1528,16 +1528,17 @@ export const filterItemEvents = ( return event.id && ids.includes(event.id.toString()) } case 'recommendedby': { - if (lowercasedValue === '*') { - // select all if * is provided - return event.recommenderNames && event.recommenderNames.length > 0 + if (!event.recommenderNames) { + return false } - return ( - event.recommenderNames && - (event.recommenderNames as string[]).some( - (name) => name.toLowerCase() === lowercasedValue - ) + if (lowercasedValue === '*') { + // select all if * is provided + return event.recommenderNames.length > 0 + } + + return (event.recommenderNames as string[]).some( + (name) => name.toLowerCase() === lowercasedValue ) } case 'no': diff --git a/packages/api/src/services/recommendation.ts b/packages/api/src/services/recommendation.ts index af73e5b4c..72b6ff0bd 100644 --- a/packages/api/src/services/recommendation.ts +++ b/packages/api/src/services/recommendation.ts @@ -9,6 +9,7 @@ import { createOrUpdateLibraryItem, CreateOrUpdateLibraryItemArgs, findLibraryItemByUrl, + updateLibraryItem, } from './library_item' export const addRecommendation = async ( @@ -41,7 +42,7 @@ export const addRecommendation = async ( uploadFile: item.uploadFile, wordCount: item.wordCount, publishedAt: item.publishedAt, - recommenderNames: item.recommenderNames, + recommenderNames: [recommendation.group?.name], } recommendedItem = await createOrUpdateLibraryItem(newItem, userId) @@ -66,6 +67,15 @@ export const addRecommendation = async ( if (highlights) { await createHighlights(highlights, userId) } + } else { + // update the item + await updateLibraryItem( + recommendedItem.id, + { + recommenderNames: [recommendation.group?.name], + }, + userId + ) } await createRecommendation(