This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/components/notification-consent-banner.js.es6
Jarek Radosz fe588cc7f8
DEV: Fix function prototype deprecations (#8681)
* DEV: Fix the function prototype observers deprecation

DEPRECATION: Function prototype extensions have been deprecated, please migrate from function(){}.observes('foo') to observer('foo', function() {}). [deprecation id: function-prototype-extensions.observes] See https://deprecations.emberjs.com/v3.x/#toc_function-prototype-extensions-observes for more details.

* DEV: Fix the function prototype event listeners deprecation

DEPRECATION: Function prototype extensions have been deprecated, please migrate from function(){}.on('foo') to on('foo', function() {}). [deprecation id: function-prototype-extensions.on] See https://deprecations.emberjs.com/v3.x/#toc_function-prototype-extensions-on for more details.

* DEV: Simplify `default as` imports

Co-authored-by: Joffrey JAFFEUX <j.jaffeux@gmail.com>
2020-01-16 18:56:53 +01:00

55 lines
1.4 KiB
JavaScript

import discourseComputed from "discourse-common/utils/decorators";
import { keyValueStore as pushNotificationKeyValueStore } from "discourse/lib/push-notifications";
import DesktopNotificationConfig from "discourse/components/desktop-notification-config";
const userDismissedPromptKey = "dismissed-prompt";
export default DesktopNotificationConfig.extend({
@discourseComputed
bannerDismissed: {
set(value) {
pushNotificationKeyValueStore.setItem(userDismissedPromptKey, value);
return pushNotificationKeyValueStore.getItem(userDismissedPromptKey);
},
get() {
return pushNotificationKeyValueStore.getItem(userDismissedPromptKey);
}
},
@discourseComputed(
"isNotSupported",
"isEnabled",
"bannerDismissed",
"currentUser.reply_count",
"currentUser.topic_count"
)
showNotificationPromptBanner(
isNotSupported,
isEnabled,
bannerDismissed,
replyCount,
topicCount
) {
return (
this.siteSettings.push_notifications_prompt &&
!isNotSupported &&
this.currentUser &&
replyCount + topicCount > 0 &&
Notification.permission !== "denied" &&
Notification.permission !== "granted" &&
!isEnabled &&
!bannerDismissed
);
},
actions: {
turnon() {
this._super(...arguments);
this.set("bannerDismissed", true);
},
dismiss() {
this.set("bannerDismissed", true);
}
}
});