From 3c721442bd13eaaa87bb4b0749e634691f16565e Mon Sep 17 00:00:00 2001 From: notfire Date: Mon, 20 Jan 2025 15:24:09 -0500 Subject: [PATCH] add notification sounds (disabled by default) --- .../settings_modal/helpers/float_setting.js | 41 ++++++++++++++++++ .../settings_modal/helpers/float_setting.vue | 25 +++++++++++ .../settings_modal/helpers/text_setting.js | 41 ++++++++++++++++++ .../settings_modal/helpers/text_setting.vue | 21 +++++++++ .../settings_modal/tabs/notifications_tab.js | 6 ++- .../settings_modal/tabs/notifications_tab.vue | 31 +++++++++++++ src/i18n/en.json | 5 +++ src/modules/config.js | 3 ++ src/modules/instance.js | 3 ++ .../notification_utils/notification_utils.js | 19 ++++++++ static/misskey-notif.mp3 | Bin 0 -> 26880 bytes 11 files changed, 194 insertions(+), 1 deletion(-) create mode 100644 src/components/settings_modal/helpers/float_setting.js create mode 100644 src/components/settings_modal/helpers/float_setting.vue create mode 100644 src/components/settings_modal/helpers/text_setting.js create mode 100644 src/components/settings_modal/helpers/text_setting.vue create mode 100644 static/misskey-notif.mp3 diff --git a/src/components/settings_modal/helpers/float_setting.js b/src/components/settings_modal/helpers/float_setting.js new file mode 100644 index 00000000..21110a56 --- /dev/null +++ b/src/components/settings_modal/helpers/float_setting.js @@ -0,0 +1,41 @@ +import { get, set } from 'lodash' +import ModifiedIndicator from './modified_indicator.vue' +export default { + components: { + ModifiedIndicator + }, + props: { + path: String, + disabled: Boolean, + min: Number, + expert: [Number, String] + }, + computed: { + pathDefault () { + const [firstSegment, ...rest] = this.path.split('.') + return [firstSegment + 'DefaultValue', ...rest].join('.') + }, + state () { + const value = get(this.$parent, this.path) + if (value === undefined) { + return this.defaultState + } else { + return value + } + }, + defaultState () { + return get(this.$parent, this.pathDefault) + }, + isChanged () { + return this.state !== this.defaultState + }, + matchesExpertLevel () { + return (this.expert || 0) <= this.$parent.expertLevel + } + }, + methods: { + update (e) { + set(this.$parent, this.path, parseFloat(e.target.value)) + } + } +} diff --git a/src/components/settings_modal/helpers/float_setting.vue b/src/components/settings_modal/helpers/float_setting.vue new file mode 100644 index 00000000..ba16be77 --- /dev/null +++ b/src/components/settings_modal/helpers/float_setting.vue @@ -0,0 +1,25 @@ + + + diff --git a/src/components/settings_modal/helpers/text_setting.js b/src/components/settings_modal/helpers/text_setting.js new file mode 100644 index 00000000..8bf99893 --- /dev/null +++ b/src/components/settings_modal/helpers/text_setting.js @@ -0,0 +1,41 @@ +import { get, set } from 'lodash' +import ModifiedIndicator from './modified_indicator.vue' +export default { + components: { + ModifiedIndicator + }, + props: { + path: String, + disabled: Boolean, + min: Number, + expert: [Number, String] + }, + computed: { + pathDefault () { + const [firstSegment, ...rest] = this.path.split('.') + return [firstSegment + 'DefaultValue', ...rest].join('.') + }, + state () { + const value = get(this.$parent, this.path) + if (value === undefined) { + return this.defaultState + } else { + return value + } + }, + defaultState () { + return get(this.$parent, this.pathDefault) + }, + isChanged () { + return this.state !== this.defaultState + }, + matchesExpertLevel () { + return (this.expert || 0) <= this.$parent.expertLevel + } + }, + methods: { + update (e) { + set(this.$parent, this.path, e.target.value) + } + } +} diff --git a/src/components/settings_modal/helpers/text_setting.vue b/src/components/settings_modal/helpers/text_setting.vue new file mode 100644 index 00000000..cb2921ed --- /dev/null +++ b/src/components/settings_modal/helpers/text_setting.vue @@ -0,0 +1,21 @@ +