From e85ec51e6cd24eb43d294da1d3d70c6587fa96c9 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Fri, 9 Dec 2022 10:41:23 +0800 Subject: [PATCH 1/4] Get notification data from params --- packages/rule-handler/src/filter.ts | 4 ++++ packages/rule-handler/src/notification.ts | 12 +++++++---- packages/rule-handler/src/rule.ts | 26 +++++++++++++++++------ 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/packages/rule-handler/src/filter.ts b/packages/rule-handler/src/filter.ts index 907c8d88f..76ed4d6bd 100644 --- a/packages/rule-handler/src/filter.ts +++ b/packages/rule-handler/src/filter.ts @@ -17,6 +17,8 @@ interface Page { labels?: Label[] // labels is optional in the API response isArchived: boolean readingProgressPercent: number + title: string + image?: string } interface Label { @@ -41,6 +43,8 @@ export const search = async ( } isArchived readingProgressPercent + title + image } } } diff --git a/packages/rule-handler/src/notification.ts b/packages/rule-handler/src/notification.ts index a03ddc323..79c5c2a52 100644 --- a/packages/rule-handler/src/notification.ts +++ b/packages/rule-handler/src/notification.ts @@ -8,13 +8,17 @@ interface RequestData { notificationType?: string } +export interface NotificationData { + body: string + title?: string + image?: string + data?: Record +} + export const sendNotification = async ( apiEndpoint: string, auth: string, - body: string, - title?: string, - image?: string, - data?: Record + { body, title, image, data }: NotificationData ) => { const requestData: RequestData = { body, diff --git a/packages/rule-handler/src/rule.ts b/packages/rule-handler/src/rule.ts index e8e5a7ce0..605fa4e83 100644 --- a/packages/rule-handler/src/rule.ts +++ b/packages/rule-handler/src/rule.ts @@ -1,4 +1,4 @@ -import { sendNotification } from './notification' +import { NotificationData, sendNotification } from './notification' import { getAuthToken, PubSubData } from './index' import axios, { AxiosResponse } from 'axios' import { setLabels } from './label' @@ -122,14 +122,26 @@ export const triggerActions = async ( filteredPage.readingProgressPercent < 100 && actionPromises.push(markPageAsRead(apiEndpoint, authToken, data.id)) ) - case RuleActionType.SendNotification: + case RuleActionType.SendNotification: { + const data: NotificationData = { + title: 'New page added to your feed', + body: filteredPage.title, + image: filteredPage.image, + } + + const params = action.params + if (params.length > 0) { + const param = JSON.parse(params[0]) as NotificationData + data.body = param.body + data.title = param.title + data.image = param.image + data.data = param.data + } + return actionPromises.push( - sendNotification( - apiEndpoint, - authToken, - 'New page added to your feed' - ) + sendNotification(apiEndpoint, authToken, data) ) + } } }) } From 181b401030b26c3e4863a5e50ba7e5a874aec5a0 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Fri, 9 Dec 2022 10:56:08 +0800 Subject: [PATCH 2/4] Update new recommendation notification message --- packages/api/src/services/groups.ts | 9 ++++++++- packages/rule-handler/src/rule.ts | 3 +-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/api/src/services/groups.ts b/packages/api/src/services/groups.ts index 716ccdddc..64f5d0f41 100644 --- a/packages/api/src/services/groups.ts +++ b/packages/api/src/services/groups.ts @@ -221,7 +221,14 @@ export const createLabelAndRuleForGroup = async ( }, { type: RuleActionType.SendNotification, - params: [groupName], + params: [ + ` + { + "title": "New page recommended in ${groupName}", + "body": "A new page was added to the group ${groupName}" + } + `, + ], }, ], filter: `recommendedBy:"${groupName}"`, diff --git a/packages/rule-handler/src/rule.ts b/packages/rule-handler/src/rule.ts index 605fa4e83..7bc8ca877 100644 --- a/packages/rule-handler/src/rule.ts +++ b/packages/rule-handler/src/rule.ts @@ -134,8 +134,7 @@ export const triggerActions = async ( const param = JSON.parse(params[0]) as NotificationData data.body = param.body data.title = param.title - data.image = param.image - data.data = param.data + data.image = param.image || data.image } return actionPromises.push( From 4e8a58724e97253664d92a14ac3d7da34461daaf Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Fri, 9 Dec 2022 11:01:49 +0800 Subject: [PATCH 3/4] Change wording --- packages/rule-handler/src/rule.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rule-handler/src/rule.ts b/packages/rule-handler/src/rule.ts index 7bc8ca877..5b07b706b 100644 --- a/packages/rule-handler/src/rule.ts +++ b/packages/rule-handler/src/rule.ts @@ -124,7 +124,7 @@ export const triggerActions = async ( ) case RuleActionType.SendNotification: { const data: NotificationData = { - title: 'New page added to your feed', + title: 'New page added to your library', body: filteredPage.title, image: filteredPage.image, } From 2cfb367a98f55932b5fe4e1c3b83463f1554ece7 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Fri, 9 Dec 2022 11:15:59 +0800 Subject: [PATCH 4/4] Add fallback notification data --- packages/rule-handler/src/rule.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/rule-handler/src/rule.ts b/packages/rule-handler/src/rule.ts index 5b07b706b..de151da61 100644 --- a/packages/rule-handler/src/rule.ts +++ b/packages/rule-handler/src/rule.ts @@ -132,8 +132,8 @@ export const triggerActions = async ( const params = action.params if (params.length > 0) { const param = JSON.parse(params[0]) as NotificationData - data.body = param.body - data.title = param.title + data.body = param.body || data.body + data.title = param.title || data.title data.image = param.image || data.image }