diff --git a/src/modules/announcements/queue/announcment.processor.ts b/src/modules/announcements/queue/announcment.processor.ts index 8f02bef..4496530 100755 --- a/src/modules/announcements/queue/announcment.processor.ts +++ b/src/modules/announcements/queue/announcment.processor.ts @@ -10,6 +10,7 @@ import { SubscriptionPlan } from "../../subscriptions/entities/subscription.enti import { UserSubscription } from "../../subscriptions/entities/user-subscription.entity"; import { User } from "../../users/entities/user.entity"; import { UsersService } from "../../users/providers/users.service"; +import { stripHtmlTags } from "../../utils/providers/string.utils"; import { ANNOUNCEMENT } from "../constants"; import { Announcement } from "../entities/announcement.entity"; import { UserAnnouncement } from "../entities/user-announcement.entity"; @@ -109,7 +110,7 @@ export class AnnouncementProcessor extends WorkerProcessor { userPhone: user.phone, userEmail: user.email, title: announcement.title, - description: announcement.content, + description: stripHtmlTags(announcement.content), date: announcement.publishAt ?? new Date(), }; await this.notificationQueue.addAnnouncementNotification(userId, notifData); diff --git a/src/modules/utils/providers/string.utils.ts b/src/modules/utils/providers/string.utils.ts index 9785101..451911a 100644 --- a/src/modules/utils/providers/string.utils.ts +++ b/src/modules/utils/providers/string.utils.ts @@ -1,4 +1,4 @@ -export function truncateIfLong(str: string, maxLength = 30): string { +export function truncateIfLong(str: string, maxLength = 35): string { if (typeof str !== "string") return str; return str.length > maxLength ? str.slice(0, maxLength) + "..." : str; } @@ -18,3 +18,18 @@ export function randomizeCase(str: string): string { }) .join(""); } + +export function stripHtmlTags(str: string): string { + if (typeof str !== "string") return str; + + // Remove HTML tags and decode common HTML entities + return str + .replace(/<[^>]*>/g, "") // Remove all HTML tags + .replace(/ /g, " ") // Replace non-breaking spaces + .replace(/&/g, "&") // Replace ampersand entities + .replace(/</g, "<") // Replace less than entities + .replace(/>/g, ">") // Replace greater than entities + .replace(/"/g, '"') // Replace quote entities + .replace(/'/g, "'") // Replace apostrophe entities + .trim(); // Remove leading/trailing whitespace +}