diff --git a/packages/discovery-provider/plugins/notifications/src/email/notifications/index.ts b/packages/discovery-provider/plugins/notifications/src/email/notifications/index.ts
index 28dc6a509c2..74fda06d8f5 100644
--- a/packages/discovery-provider/plugins/notifications/src/email/notifications/index.ts
+++ b/packages/discovery-provider/plugins/notifications/src/email/notifications/index.ts
@@ -335,6 +335,7 @@ export async function processEmailNotifications(
const timeoutMillis = 14400000
const timeout = time + timeoutMillis
+ /* eslint-disable no-constant-condition */
while (true) {
const now = Date.now()
if (now > timeout) return
diff --git a/packages/discovery-provider/plugins/notifications/src/email/notifications/preRendered/purchase.ts b/packages/discovery-provider/plugins/notifications/src/email/notifications/preRendered/purchase.ts
index bb7b9a693cb..ddd71379f66 100644
--- a/packages/discovery-provider/plugins/notifications/src/email/notifications/preRendered/purchase.ts
+++ b/packages/discovery-provider/plugins/notifications/src/email/notifications/preRendered/purchase.ts
@@ -638,7 +638,7 @@ export const email = ({
 |
- |
- |
- |
+ |
+ |
+ |
@@ -832,7 +832,7 @@ export const email = ({
|
- |
+ |
@@ -868,7 +868,7 @@ export const email = ({
|
- |
+ |
diff --git a/packages/discovery-provider/plugins/notifications/src/email/notifications/preRendered/requestManager.ts b/packages/discovery-provider/plugins/notifications/src/email/notifications/preRendered/requestManager.ts
index 18352a0b858..c395d70c71b 100644
--- a/packages/discovery-provider/plugins/notifications/src/email/notifications/preRendered/requestManager.ts
+++ b/packages/discovery-provider/plugins/notifications/src/email/notifications/preRendered/requestManager.ts
@@ -363,7 +363,7 @@ export const email = ({
|
- |
+ |
@@ -462,9 +462,9 @@ export const email = ({
 |
- |
- |
- |
+ |
+ |
+ |
@@ -588,7 +588,7 @@ export const email = ({
|
- |
+ |
@@ -624,7 +624,7 @@ export const email = ({
|
- |
+ |
diff --git a/packages/discovery-provider/plugins/notifications/src/email/notifications/preRendered/sale.ts b/packages/discovery-provider/plugins/notifications/src/email/notifications/preRendered/sale.ts
index c3af4b7e2df..106cf07f262 100644
--- a/packages/discovery-provider/plugins/notifications/src/email/notifications/preRendered/sale.ts
+++ b/packages/discovery-provider/plugins/notifications/src/email/notifications/preRendered/sale.ts
@@ -608,7 +608,7 @@ export const email = ({
 |
- |
+ |
 |
@@ -676,9 +676,9 @@ export const email = ({
 |
- |
- |
- |
+ |
+ |
+ |
@@ -802,7 +802,7 @@ export const email = ({
|
- |
+ |
@@ -838,7 +838,7 @@ export const email = ({
|
- |
+ |
diff --git a/packages/discovery-provider/plugins/notifications/src/email/notifications/preRendered/transfer.ts b/packages/discovery-provider/plugins/notifications/src/email/notifications/preRendered/transfer.ts
index fc6e374579f..4ef86d59248 100644
--- a/packages/discovery-provider/plugins/notifications/src/email/notifications/preRendered/transfer.ts
+++ b/packages/discovery-provider/plugins/notifications/src/email/notifications/preRendered/transfer.ts
@@ -393,7 +393,7 @@ export const email = ({
 |
- |
+ |
 |
@@ -461,9 +461,9 @@ export const email = ({
 |
- |
- |
- |
+ |
+ |
+ |
@@ -587,7 +587,7 @@ export const email = ({
|
- |
+ |
@@ -623,7 +623,7 @@ export const email = ({
|
- |
+ |
diff --git a/packages/discovery-provider/plugins/notifications/src/email/notifications/preRendered/withdrawal.ts b/packages/discovery-provider/plugins/notifications/src/email/notifications/preRendered/withdrawal.ts
index 109debb2839..522a6c58a20 100644
--- a/packages/discovery-provider/plugins/notifications/src/email/notifications/preRendered/withdrawal.ts
+++ b/packages/discovery-provider/plugins/notifications/src/email/notifications/preRendered/withdrawal.ts
@@ -380,7 +380,7 @@ export const email = ({
 |
- |
+ |
 |
@@ -448,9 +448,9 @@ export const email = ({
 |
- |
- |
- |
+ |
+ |
+ |
@@ -574,7 +574,7 @@ export const email = ({
|
- |
+ |
@@ -610,7 +610,7 @@ export const email = ({
|
- |
+ |
diff --git a/packages/discovery-provider/plugins/notifications/src/processNotifications/indexAppNotifications.ts b/packages/discovery-provider/plugins/notifications/src/processNotifications/indexAppNotifications.ts
index 58528ee8df8..7efa01ec6e6 100644
--- a/packages/discovery-provider/plugins/notifications/src/processNotifications/indexAppNotifications.ts
+++ b/packages/discovery-provider/plugins/notifications/src/processNotifications/indexAppNotifications.ts
@@ -64,6 +64,7 @@ export const notificationTypeMapping = {
tip_receive: MappingVariable.PushTipRceive,
tip_send: MappingVariable.PushTipSend,
challenge_reward: MappingVariable.PushChallengeReward,
+ claimable_reward: MappingVariable.PushClaimableReward,
track_added_to_playlist: MappingVariable.PushTrackAddedToPlaylist,
create: MappingVariable.PushCreate,
trending: MappingVariable.PushTrending,
diff --git a/packages/discovery-provider/plugins/notifications/src/processNotifications/mappers/claimableReward.ts b/packages/discovery-provider/plugins/notifications/src/processNotifications/mappers/claimableReward.ts
index 112be19e1d1..58355f849ca 100644
--- a/packages/discovery-provider/plugins/notifications/src/processNotifications/mappers/claimableReward.ts
+++ b/packages/discovery-provider/plugins/notifications/src/processNotifications/mappers/claimableReward.ts
@@ -4,14 +4,23 @@ import { ClaimableRewardNotification } from '../../types/notifications'
import { BaseNotification } from './base'
import { logger } from '../../logger'
import { sendTransactionalEmail } from '../../email/notifications/sendEmail'
-import { buildUserNotificationSettings } from './userNotificationSettings'
+import {
+ buildUserNotificationSettings,
+ Device
+} from './userNotificationSettings'
import { email } from '../../email/notifications/preRendered/claimableReward'
import { formatImageUrl, formatProfileUrl } from '../../utils/format'
+import { sendBrowserNotification } from '../../web'
+import { disableDeviceArns } from '../../utils/disableArnEndpoint'
+import { sendPushNotification } from '../../sns'
type ClaimableRewardRow = Omit & {
data: ClaimableRewardNotification
}
+const messages = {
+ readyToClaim: 'You have $AUDIO rewards ready to claim! '
+}
export class ClaimableReward extends BaseNotification {
userId: number
amount: string
@@ -29,18 +38,63 @@ export class ClaimableReward extends BaseNotification {
}
}
- async processNotification() {
+ async processNotification({ isBrowserPushEnabled }) {
const users = await this.getUsersBasicInfo([this.userId])
const user = users[this.userId]
if (!user) {
logger.error(`Could not find user for notification ${this.userId}`)
return
}
+
// Get the user's notification setting from identity service
const userNotificationSettings = await buildUserNotificationSettings(
this.identityDB,
[user.user_id]
)
+ const title = 'Claim Your Rewards!'
+
+ await sendBrowserNotification(
+ isBrowserPushEnabled,
+ userNotificationSettings,
+ this.userId,
+ title,
+ messages.readyToClaim
+ )
+
+ if (
+ userNotificationSettings.shouldSendPushNotification({
+ receiverUserId: this.userId
+ })
+ ) {
+ const devices: Device[] = userNotificationSettings.getDevices(this.userId)
+ const pushes = await Promise.all(
+ devices.map((device) => {
+ return sendPushNotification(
+ {
+ type: device.type,
+ badgeCount:
+ userNotificationSettings.getBadgeCount(this.userId) + 1,
+ targetARN: device.awsARN
+ },
+ {
+ title,
+ body: messages.readyToClaim,
+ data: {
+ id: `timestamp:${this.getNotificationTimestamp()}:group_id:${
+ this.notification.group_id
+ }`,
+ type: 'ClaimableReward',
+ entityId: this.userId
+ }
+ }
+ )
+ })
+ )
+
+ await disableDeviceArns(this.identityDB, pushes)
+ await this.incrementBadgeCount(this.userId)
+ }
+
await sendTransactionalEmail({
email: userNotificationSettings.getUserEmail(user.user_id),
html: email({
diff --git a/packages/discovery-provider/plugins/notifications/src/remoteConfig.ts b/packages/discovery-provider/plugins/notifications/src/remoteConfig.ts
index 7b1d7bb7857..3bc17365df0 100644
--- a/packages/discovery-provider/plugins/notifications/src/remoteConfig.ts
+++ b/packages/discovery-provider/plugins/notifications/src/remoteConfig.ts
@@ -22,6 +22,7 @@ export enum MappingVariable {
PushTipSend = 'push_tip_send',
PushTastemaker = 'push_tastemaker',
PushChallengeReward = 'push_challenge_reward',
+ PushClaimableReward = 'push_claimable_reward',
PushTrackAddedToPlaylist = 'push_track_added_to_playlist',
PushCreate = 'push_create',
PushTrending = 'push_trending',
diff --git a/packages/discovery-provider/plugins/notifications/src/types/dn.ts b/packages/discovery-provider/plugins/notifications/src/types/dn.ts
index f2035cae5d0..e8efc932a33 100644
--- a/packages/discovery-provider/plugins/notifications/src/types/dn.ts
+++ b/packages/discovery-provider/plugins/notifications/src/types/dn.ts
@@ -496,7 +496,7 @@ export interface RpcLogRow {
from_wallet: string
relayed_at: Date
relayed_by: string
- rpc: Object
+ rpc: object
sig: string
}
export interface SaveRow {
| | | | |