From bf4cef4870e6dbd3604289870c9694217fabd916 Mon Sep 17 00:00:00 2001 From: Sida Chen Date: Tue, 31 Jul 2018 11:48:14 -0400 Subject: [PATCH 1/2] Removes HTML tags shown in Browser Notification Fixes https://jira.coreos.com/browse/QUAY-956 --- static/js/services/notification-service.js | 16 +++++++++++++--- static/js/services/util-service.js | 4 ++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/static/js/services/notification-service.js b/static/js/services/notification-service.js index 73d70d227..31b255ddb 100644 --- a/static/js/services/notification-service.js +++ b/static/js/services/notification-service.js @@ -3,9 +3,9 @@ * in the sidebar) and provides helper methods for working with them. */ angular.module('quay').factory('NotificationService', - ['$rootScope', '$interval', 'UserService', 'ApiService', 'StringBuilderService', 'PlanService', 'CookieService', 'Features', 'Config', '$location', 'VulnerabilityService', + ['$rootScope', '$interval', 'UserService', 'ApiService', 'StringBuilderService', 'PlanService', 'CookieService', 'Features', 'Config', '$location', 'VulnerabilityService', 'UtilService', -function($rootScope, $interval, UserService, ApiService, StringBuilderService, PlanService, CookieService, Features, Config, $location, VulnerabilityService) { +function($rootScope, $interval, UserService, ApiService, StringBuilderService, PlanService, CookieService, Features, Config, $location, VulnerabilityService, UtilService) { var notificationService = { 'user': null, 'notifications': [], @@ -229,6 +229,16 @@ function($rootScope, $interval, UserService, ApiService, StringBuilderService, P return StringBuilderService.buildTrustedString(kindInfo['message'], notification['metadata']); }; + notificationService.getBrowserNotificationMessage = function(notification) { + var kindInfo = notificationKinds[notification['kind']]; + if (!kindInfo) { + return '(Unknown notification kind: ' + notification['kind'] + ')'; + } + + const unsafeHtml = StringBuilderService.buildString(kindInfo['message'], notification['metadata']); + return UtilService.removeHtmlTags(unsafeHtml); + } + notificationService.getClass = function(notification) { var kindInfo = notificationKinds[notification['kind']]; if (!kindInfo) { @@ -294,7 +304,7 @@ function($rootScope, $interval, UserService, ApiService, StringBuilderService, P if (newNotifications.length > 0) { let message = 'You have unread notifications'; if (newNotifications.length === 1) { - message = notificationService.getMessage(newNotifications[0]); + message = notificationService.getBrowserNotificationMessage(newNotifications[0]); } new Notification(message, { diff --git a/static/js/services/util-service.js b/static/js/services/util-service.js index d6f08f2c3..3f22e6abe 100644 --- a/static/js/services/util-service.js +++ b/static/js/services/util-service.js @@ -136,5 +136,9 @@ angular.module('quay').factory('UtilService', ['$sanitize', 'markdownConverter', utilService.UrlBuilder = UrlBuilder; + utilService.removeHtmlTags = function(text){ + return new DOMParser().parseFromString(text, 'text/html').body.textContent || text; + }; + return utilService; }]); From fbf5134b2e45c717a9859212d76ee571052b385c Mon Sep 17 00:00:00 2001 From: Sida Chen Date: Tue, 31 Jul 2018 17:10:50 -0400 Subject: [PATCH 2/2] updated according to comment --- static/js/services/util-service.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/static/js/services/util-service.js b/static/js/services/util-service.js index 3f22e6abe..2c7275da5 100644 --- a/static/js/services/util-service.js +++ b/static/js/services/util-service.js @@ -137,7 +137,12 @@ angular.module('quay').factory('UtilService', ['$sanitize', 'markdownConverter', utilService.UrlBuilder = UrlBuilder; utilService.removeHtmlTags = function(text){ - return new DOMParser().parseFromString(text, 'text/html').body.textContent || text; + try { + return new DOMParser().parseFromString(text, 'text/html').body.textContent || text; + } catch(e) { + return text; + } + }; return utilService;