import EmberObject from "@ember/object"; import discourseComputed from "discourse-common/utils/decorators"; import { ajax } from "discourse/lib/ajax"; import { popupAjaxError } from "discourse/lib/ajax-error"; import { and, not, notEmpty } from "@ember/object/computed"; import { dasherize } from "@ember/string"; import I18n from "I18n"; const CustomWizardNotice = EmberObject.extend({ expired: notEmpty('expired_at'), dismissed: notEmpty('dismissed_at'), hidden: notEmpty('hidden_at'), notHidden: not('hidden'), notDismissed: not('dismissed'), canDismiss: and('dismissable', 'notDismissed'), canHide: and('can_hide', 'notHidden'), @discourseComputed('type') typeClass(type) { return dasherize(type); }, @discourseComputed('type') typeLabel(type) { return I18n.t(`admin.wizard.notice.type.${type}`); }, dismiss() { if (!this.get('canDismiss')) { return; } return ajax(`/admin/wizards/notice/${this.get('id')}/dismiss`, { type: 'PUT' }).then(result => { if (result.success) { this.set('dismissed_at', result.dismissed_at); } }).catch(popupAjaxError); }, hide() { if (!this.get('canHide')) { return; } return ajax(`/admin/wizards/notice/${this.get('id')}/hide`, { type: 'PUT' }).then(result => { if (result.success) { this.set('hidden_at', result.hidden_at); } }).catch(popupAjaxError); } }); CustomWizardNotice.reopenClass({ list(data = {}) { return ajax('/admin/wizards/notice', { type: "GET", data }).catch(popupAjaxError); }, dismissAll() { return ajax('/admin/wizards/notice/dismiss', { type: "PUT" }).catch(popupAjaxError); } }); export default CustomWizardNotice;