fix recommendations not filtered correctly by rules

This commit is contained in:
Hongbo Wu
2024-03-27 11:29:47 +08:00
parent c022cf0a22
commit 7c281359e8
4 changed files with 23 additions and 12 deletions

View File

@ -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

View File

@ -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])

View File

@ -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':

View File

@ -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(