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 = ({ -   + @@ -706,9 +706,9 @@ 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 {