58 lines
1.5 KiB
JavaScript
58 lines
1.5 KiB
JavaScript
import Controller from "@ember/controller";
|
|
import { isTesting } from "discourse-common/config/environment";
|
|
import discourseComputed from "discourse-common/utils/decorators";
|
|
import I18n from "I18n";
|
|
import { action } from "@ember/object";
|
|
import { popupAjaxError } from "discourse/lib/ajax-error";
|
|
import { CHAT_SOUNDS } from "discourse/plugins/chat/discourse/services/chat-audio-manager";
|
|
import { inject as service } from "@ember/service";
|
|
|
|
const CHAT_ATTRS = [
|
|
"chat_enabled",
|
|
"only_chat_push_notifications",
|
|
"ignore_channel_wide_mention",
|
|
"chat_sound",
|
|
"chat_email_frequency",
|
|
];
|
|
|
|
const EMAIL_FREQUENCY_OPTIONS = [
|
|
{ name: I18n.t(`chat.email_frequency.never`), value: "never" },
|
|
{ name: I18n.t(`chat.email_frequency.when_away`), value: "when_away" },
|
|
];
|
|
|
|
export default class PreferencesChatController extends Controller {
|
|
@service chatAudioManager;
|
|
subpageTitle = I18n.t("chat.admin.title");
|
|
|
|
emailFrequencyOptions = EMAIL_FREQUENCY_OPTIONS;
|
|
|
|
@discourseComputed
|
|
chatSounds() {
|
|
return Object.keys(CHAT_SOUNDS).map((value) => {
|
|
return { name: I18n.t(`chat.sounds.${value}`), value };
|
|
});
|
|
}
|
|
|
|
@action
|
|
onChangeChatSound(sound) {
|
|
if (sound) {
|
|
this.chatAudioManager.playImmediately(sound);
|
|
}
|
|
this.model.set("user_option.chat_sound", sound);
|
|
}
|
|
|
|
@action
|
|
save() {
|
|
this.set("saved", false);
|
|
return this.model
|
|
.save(CHAT_ATTRS)
|
|
.then(() => {
|
|
this.set("saved", true);
|
|
if (!isTesting()) {
|
|
location.reload();
|
|
}
|
|
})
|
|
.catch(popupAjaxError);
|
|
}
|
|
}
|