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
2019-01-19 10:05:51 +01:00

57 lines
1.4 KiB
JavaScript

import { default as computed } from "ember-addons/ember-computed-decorators";
import { keyValueStore as pushNotificationKeyValueStore } from "discourse/lib/push-notifications";
import { default as DesktopNotificationConfig } from "discourse/components/desktop-notification-config";
const userDismissedPromptKey = "dismissed-prompt";
export default DesktopNotificationConfig.extend({
@computed
bannerDismissed: {
set(value) {
pushNotificationKeyValueStore.setItem(userDismissedPromptKey, value);
return pushNotificationKeyValueStore.getItem(userDismissedPromptKey);
},
get() {
return pushNotificationKeyValueStore.getItem(userDismissedPromptKey);
}
},
@computed(
"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);
}
}
});