discourse/app/assets/javascripts/select-kit/components/topic-notifications-options.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

41 lines
1.1 KiB
JavaScript

import NotificationOptionsComponent from "select-kit/components/notifications-button";
import discourseComputed, { on } from "discourse-common/utils/decorators";
import { topicLevels } from "discourse/lib/notification-levels";
export default NotificationOptionsComponent.extend({
pluginApiIdentifiers: ["topic-notifications-options"],
classNames: "topic-notifications-options",
content: topicLevels,
i18nPrefix: "topic.notifications",
allowInitialValueMutation: false,
@discourseComputed("topic.archetype")
i18nPostfix(archetype) {
return archetype === "private_message" ? "_pm" : "";
},
_changed(msg) {
if (this.computedValue !== msg.id) {
this.get("topic.details").updateNotifications(msg.id);
}
},
@on("didInsertElement")
_bindGlobalLevelChanged() {
this.appEvents.on("topic-notifications-button:changed", this, "_changed");
},
@on("willDestroyElement")
_unbindGlobalLevelChanged() {
this.appEvents.off("topic-notifications-button:changed", this, "_changed");
},
mutateValue(value) {
if (value !== this.value) {
this.get("topic.details").updateNotifications(value);
}
},
deselect() {}
});