From eb253f32f17904961aa71ec8a810cbedceee274f Mon Sep 17 00:00:00 2001 From: Andreu Orensanz Date: Fri, 20 Mar 2026 10:40:46 +0100 Subject: [PATCH 1/6] [ADD] mail_notification_sound_volume --- mail_notification_sound_volume/README.rst | 87 ++++ mail_notification_sound_volume/__init__.py | 4 + .../__manifest__.py | 25 + mail_notification_sound_volume/i18n/es.po | 46 ++ .../models/__init__.py | 5 + .../models/res_users.py | 21 + .../models/res_users_settings.py | 10 + mail_notification_sound_volume/pyproject.toml | 3 + .../readme/CONTRIBUTORS.md | 1 + .../readme/DESCRIPTION.md | 8 + .../static/description/index.html | 434 ++++++++++++++++++ .../src/out_of_focus_service_patch.esm.js | 29 ++ .../src/user_settings_service_patch.esm.js | 37 ++ .../static/src/volume_slider_field.esm.js | 57 +++ .../static/src/volume_slider_field.xml | 36 ++ .../views/res_users_views.xml | 18 + 16 files changed, 821 insertions(+) create mode 100644 mail_notification_sound_volume/README.rst create mode 100644 mail_notification_sound_volume/__init__.py create mode 100644 mail_notification_sound_volume/__manifest__.py create mode 100644 mail_notification_sound_volume/i18n/es.po create mode 100644 mail_notification_sound_volume/models/__init__.py create mode 100644 mail_notification_sound_volume/models/res_users.py create mode 100644 mail_notification_sound_volume/models/res_users_settings.py create mode 100644 mail_notification_sound_volume/pyproject.toml create mode 100644 mail_notification_sound_volume/readme/CONTRIBUTORS.md create mode 100644 mail_notification_sound_volume/readme/DESCRIPTION.md create mode 100644 mail_notification_sound_volume/static/description/index.html create mode 100644 mail_notification_sound_volume/static/src/out_of_focus_service_patch.esm.js create mode 100644 mail_notification_sound_volume/static/src/user_settings_service_patch.esm.js create mode 100644 mail_notification_sound_volume/static/src/volume_slider_field.esm.js create mode 100644 mail_notification_sound_volume/static/src/volume_slider_field.xml create mode 100644 mail_notification_sound_volume/views/res_users_views.xml diff --git a/mail_notification_sound_volume/README.rst b/mail_notification_sound_volume/README.rst new file mode 100644 index 000000000..49b84d006 --- /dev/null +++ b/mail_notification_sound_volume/README.rst @@ -0,0 +1,87 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +======================== +Mail Notification Volume +======================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:ab1c573b36a2409ccc53006da4f23f5f07610f44cfa0ff23937f8c50f7095dfe + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmail-lightgray.png?logo=github + :target: https://github.com/OCA/mail/tree/17.0/mail_notification_sound_volume + :alt: OCA/mail +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/mail-17-0/mail-17-0-mail_notification_sound_volume + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/mail&target_branch=17.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows users to configure the volume of notification sounds +in Odoo (chat messages, inbox notifications, etc.). + +A volume slider is added to the user's Preferences page, with a test +button to preview the sound at the selected volume. The slider is only +visible when notifications are managed within Odoo. + +By default, the volume is set to 100%. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* ForgeFlow + +Contributors +------------ + +- Andreu Orensanz + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/mail `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/mail_notification_sound_volume/__init__.py b/mail_notification_sound_volume/__init__.py new file mode 100644 index 000000000..62c7e3b07 --- /dev/null +++ b/mail_notification_sound_volume/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2026 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import models diff --git a/mail_notification_sound_volume/__manifest__.py b/mail_notification_sound_volume/__manifest__.py new file mode 100644 index 000000000..827522c1e --- /dev/null +++ b/mail_notification_sound_volume/__manifest__.py @@ -0,0 +1,25 @@ +# Copyright 2026 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +{ + "name": "Mail Notification Volume", + "summary": "Allow users to configure notification sound volume", + "version": "17.0.1.0.0", + "development_status": "Beta", + "category": "Social Network", + "website": "https://github.com/OCA/mail", + "author": "ForgeFlow, Odoo Community Association (OCA)", + "license": "AGPL-3", + "installable": True, + "depends": ["mail"], + "data": [ + "views/res_users_views.xml", + ], + "assets": { + "web.assets_backend": [ + "mail_notification_sound_volume/static/src/user_settings_service_patch.esm.js", + "mail_notification_sound_volume/static/src/out_of_focus_service_patch.esm.js", + "mail_notification_sound_volume/static/src/volume_slider_field.esm.js", + "mail_notification_sound_volume/static/src/volume_slider_field.xml", + ], + }, +} diff --git a/mail_notification_sound_volume/i18n/es.po b/mail_notification_sound_volume/i18n/es.po new file mode 100644 index 000000000..9984d00ba --- /dev/null +++ b/mail_notification_sound_volume/i18n/es.po @@ -0,0 +1,46 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_notification_sound_volume +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-04-17 11:19+0000\n" +"PO-Revision-Date: 2026-04-17 11:19+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: mail_notification_sound_volume +#: model:ir.model.fields,field_description:mail_notification_sound_volume.field_res_users__notification_volume +#: model:ir.model.fields,field_description:mail_notification_sound_volume.field_res_users_settings__notification_volume +msgid "Notification Volume" +msgstr "Volumen notificaciones" + +#. module: mail_notification_sound_volume +#. odoo-javascript +#: code:addons/mail_notification_sound_volume/static/src/volume_slider_field.xml:0 +#, python-format +msgid "Test sound" +msgstr "" + +#. module: mail_notification_sound_volume +#: model:ir.model,name:mail_notification_sound_volume.model_res_users +msgid "User" +msgstr "Usuario" + +#. module: mail_notification_sound_volume +#: model:ir.model,name:mail_notification_sound_volume.model_res_users_settings +msgid "User Settings" +msgstr "Ajustes de usuario" + +#. module: mail_notification_sound_volume +#. odoo-javascript +#: code:addons/mail_notification_sound_volume/static/src/volume_slider_field.esm.js:0 +#, python-format +msgid "Volume Slider" +msgstr "" diff --git a/mail_notification_sound_volume/models/__init__.py b/mail_notification_sound_volume/models/__init__.py new file mode 100644 index 000000000..587fee466 --- /dev/null +++ b/mail_notification_sound_volume/models/__init__.py @@ -0,0 +1,5 @@ +# Copyright 2026 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import res_users +from . import res_users_settings diff --git a/mail_notification_sound_volume/models/res_users.py b/mail_notification_sound_volume/models/res_users.py new file mode 100644 index 000000000..900bc0021 --- /dev/null +++ b/mail_notification_sound_volume/models/res_users.py @@ -0,0 +1,21 @@ +# Copyright 2026 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import fields, models + + +class ResUsers(models.Model): + _inherit = "res.users" + + notification_volume = fields.Float( + related="res_users_settings_id.notification_volume", + readonly=False, + ) + + @property + def SELF_READABLE_FIELDS(self): + return super().SELF_READABLE_FIELDS + ["notification_volume"] + + @property + def SELF_WRITEABLE_FIELDS(self): + return super().SELF_WRITEABLE_FIELDS + ["notification_volume"] diff --git a/mail_notification_sound_volume/models/res_users_settings.py b/mail_notification_sound_volume/models/res_users_settings.py new file mode 100644 index 000000000..376c65ad6 --- /dev/null +++ b/mail_notification_sound_volume/models/res_users_settings.py @@ -0,0 +1,10 @@ +# Copyright 2026 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import fields, models + + +class ResUsersSettings(models.Model): + _inherit = "res.users.settings" + + notification_volume = fields.Float(default=1.0) diff --git a/mail_notification_sound_volume/pyproject.toml b/mail_notification_sound_volume/pyproject.toml new file mode 100644 index 000000000..4231d0ccc --- /dev/null +++ b/mail_notification_sound_volume/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/mail_notification_sound_volume/readme/CONTRIBUTORS.md b/mail_notification_sound_volume/readme/CONTRIBUTORS.md new file mode 100644 index 000000000..3c48b3419 --- /dev/null +++ b/mail_notification_sound_volume/readme/CONTRIBUTORS.md @@ -0,0 +1 @@ +- Andreu Orensanz \ diff --git a/mail_notification_sound_volume/readme/DESCRIPTION.md b/mail_notification_sound_volume/readme/DESCRIPTION.md new file mode 100644 index 000000000..d1fe417f9 --- /dev/null +++ b/mail_notification_sound_volume/readme/DESCRIPTION.md @@ -0,0 +1,8 @@ +This module allows users to configure the volume of notification sounds +in Odoo (chat messages, inbox notifications, etc.). + +A volume slider is added to the user's Preferences page, with a test +button to preview the sound at the selected volume. The slider is only +visible when notifications are managed within Odoo. + +By default, the volume is set to 100%. diff --git a/mail_notification_sound_volume/static/description/index.html b/mail_notification_sound_volume/static/description/index.html new file mode 100644 index 000000000..5ec50b8cc --- /dev/null +++ b/mail_notification_sound_volume/static/description/index.html @@ -0,0 +1,434 @@ + + + + + +README.rst + + + +
+ + + +Odoo Community Association + +
+

Mail Notification Volume

+ +

Beta License: AGPL-3 OCA/mail Translate me on Weblate Try me on Runboat

+

This module allows users to configure the volume of notification sounds +in Odoo (chat messages, inbox notifications, etc.).

+

A volume slider is added to the user’s Preferences page, with a test +button to preview the sound at the selected volume. The slider is only +visible when notifications are managed within Odoo.

+

By default, the volume is set to 100%.

+

Table of contents

+ +
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • ForgeFlow
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/mail project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+
+ + diff --git a/mail_notification_sound_volume/static/src/out_of_focus_service_patch.esm.js b/mail_notification_sound_volume/static/src/out_of_focus_service_patch.esm.js new file mode 100644 index 000000000..9d7c93307 --- /dev/null +++ b/mail_notification_sound_volume/static/src/out_of_focus_service_patch.esm.js @@ -0,0 +1,29 @@ +/** @odoo-module */ + +import {OutOfFocusService} from "@mail/core/common/out_of_focus_service"; +import {patch} from "@web/core/utils/patch"; +import {url} from "@web/core/utils/urls"; + +patch(OutOfFocusService.prototype, { + async _playSound() { + if (this.canPlayAudio && this.multiTab.isOnMainTab()) { + if (!this.audio) { + this.audio = new Audio(); + this.audio.src = this.audio.canPlayType("audio/ogg; codecs=vorbis") + ? url("/mail/static/src/audio/ting.ogg") + : url("/mail/static/src/audio/ting.mp3"); + } + const userSettings = this.env.services["mail.user_settings"]; + this.audio.volume = + userSettings && userSettings.notificationVolume !== undefined + ? userSettings.notificationVolume + : 0.7; + try { + await this.audio.play(); + } catch { + // Ignore errors due to the user not having interacted + // with the page before playing the sound. + } + } + }, +}); diff --git a/mail_notification_sound_volume/static/src/user_settings_service_patch.esm.js b/mail_notification_sound_volume/static/src/user_settings_service_patch.esm.js new file mode 100644 index 000000000..ac390a68e --- /dev/null +++ b/mail_notification_sound_volume/static/src/user_settings_service_patch.esm.js @@ -0,0 +1,37 @@ +/** @odoo-module */ + +import {UserSettings} from "@mail/core/common/user_settings_service"; +import {patch} from "@web/core/utils/patch"; + +patch(UserSettings.prototype, { + notificationVolume: 1.0, + + updateFromCommands(settings) { + super.updateFromCommands(settings); + if ("notification_volume" in settings) { + this.notificationVolume = settings.notification_volume; + } + }, + + setNotificationVolume(value) { + this.notificationVolume = parseFloat(value); + this._saveSettings(); + }, + + async _onSaveGlobalSettingsTimeout() { + this.globalSettingsTimeout = undefined; + await this.orm.call( + "res.users.settings", + "set_res_users_settings", + [[this.id]], + { + new_settings: { + push_to_talk_key: this.pushToTalkKey, + use_push_to_talk: this.usePushToTalk, + voice_active_duration: this.voiceActiveDuration, + notification_volume: this.notificationVolume, + }, + } + ); + }, +}); diff --git a/mail_notification_sound_volume/static/src/volume_slider_field.esm.js b/mail_notification_sound_volume/static/src/volume_slider_field.esm.js new file mode 100644 index 000000000..6bfda848b --- /dev/null +++ b/mail_notification_sound_volume/static/src/volume_slider_field.esm.js @@ -0,0 +1,57 @@ +/** @odoo-module */ + +import {Component} from "@odoo/owl"; +import {_t} from "@web/core/l10n/translation"; +import {registry} from "@web/core/registry"; +import {standardFieldProps} from "@web/views/fields/standard_field_props"; +import {url} from "@web/core/utils/urls"; + +export class VolumeSliderField extends Component { + static template = "mail_notification_sound_volume.VolumeSliderField"; + static props = { + ...standardFieldProps, + }; + + setup() { + this.testAudio = null; + } + + get value() { + return this.props.record.data[this.props.name] || 0; + } + + get percentage() { + return Math.round(this.value * 100); + } + + onChange(ev) { + const value = parseFloat(ev.target.value); + this.props.record.update({[this.props.name]: value}); + const userSettings = this.env.services["mail.user_settings"]; + if (userSettings) { + userSettings.notificationVolume = value; + } + } + + onTestSound() { + if (!this.testAudio) { + this.testAudio = new Audio(); + this.testAudio.src = this.testAudio.canPlayType("audio/ogg; codecs=vorbis") + ? url("/mail/static/src/audio/ting.ogg") + : url("/mail/static/src/audio/ting.mp3"); + } + this.testAudio.volume = this.value; + this.testAudio.currentTime = 0; + this.testAudio.play().catch(() => { + // Ignore autoplay errors + }); + } +} + +export const volumeSliderField = { + component: VolumeSliderField, + displayName: _t("Volume Slider"), + supportedTypes: ["float"], +}; + +registry.category("fields").add("volume_slider", volumeSliderField); diff --git a/mail_notification_sound_volume/static/src/volume_slider_field.xml b/mail_notification_sound_volume/static/src/volume_slider_field.xml new file mode 100644 index 000000000..ec96d0dfd --- /dev/null +++ b/mail_notification_sound_volume/static/src/volume_slider_field.xml @@ -0,0 +1,36 @@ + + + + + + + + +
+ + +
+
+
+ +
diff --git a/mail_notification_sound_volume/views/res_users_views.xml b/mail_notification_sound_volume/views/res_users_views.xml new file mode 100644 index 000000000..f63accee2 --- /dev/null +++ b/mail_notification_sound_volume/views/res_users_views.xml @@ -0,0 +1,18 @@ + + + + res.users.preferences.form.notification.volume + res.users + + + + + + + + From aeb9edc2d2f82b137ae0f84ff5ed0b6174f75f05 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Tue, 12 May 2026 06:53:55 +0000 Subject: [PATCH 2/6] [UPD] Update mail_notification_sound_volume.pot --- mail_notification_sound_volume/i18n/es.po | 1 + .../i18n/mail_notification_sound_volume.pot | 44 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 mail_notification_sound_volume/i18n/mail_notification_sound_volume.pot diff --git a/mail_notification_sound_volume/i18n/es.po b/mail_notification_sound_volume/i18n/es.po index 9984d00ba..84e4d7585 100644 --- a/mail_notification_sound_volume/i18n/es.po +++ b/mail_notification_sound_volume/i18n/es.po @@ -10,6 +10,7 @@ msgstr "" "PO-Revision-Date: 2026-04-17 11:19+0000\n" "Last-Translator: \n" "Language-Team: \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" diff --git a/mail_notification_sound_volume/i18n/mail_notification_sound_volume.pot b/mail_notification_sound_volume/i18n/mail_notification_sound_volume.pot new file mode 100644 index 000000000..0b14e3d5d --- /dev/null +++ b/mail_notification_sound_volume/i18n/mail_notification_sound_volume.pot @@ -0,0 +1,44 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_notification_sound_volume +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: mail_notification_sound_volume +#: model:ir.model.fields,field_description:mail_notification_sound_volume.field_res_users__notification_volume +#: model:ir.model.fields,field_description:mail_notification_sound_volume.field_res_users_settings__notification_volume +msgid "Notification Volume" +msgstr "" + +#. module: mail_notification_sound_volume +#. odoo-javascript +#: code:addons/mail_notification_sound_volume/static/src/volume_slider_field.xml:0 +#, python-format +msgid "Test sound" +msgstr "" + +#. module: mail_notification_sound_volume +#: model:ir.model,name:mail_notification_sound_volume.model_res_users +msgid "User" +msgstr "" + +#. module: mail_notification_sound_volume +#: model:ir.model,name:mail_notification_sound_volume.model_res_users_settings +msgid "User Settings" +msgstr "" + +#. module: mail_notification_sound_volume +#. odoo-javascript +#: code:addons/mail_notification_sound_volume/static/src/volume_slider_field.esm.js:0 +#, python-format +msgid "Volume Slider" +msgstr "" From 6109961e5730db937590cd5902eb17cadf01ebb4 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 12 May 2026 06:55:58 +0000 Subject: [PATCH 3/6] [BOT] post-merge updates --- mail_notification_sound_volume/README.rst | 2 +- .../static/description/icon.png | Bin 0 -> 10254 bytes .../static/description/index.html | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 mail_notification_sound_volume/static/description/icon.png diff --git a/mail_notification_sound_volume/README.rst b/mail_notification_sound_volume/README.rst index 49b84d006..3d4efea11 100644 --- a/mail_notification_sound_volume/README.rst +++ b/mail_notification_sound_volume/README.rst @@ -11,7 +11,7 @@ Mail Notification Volume !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:ab1c573b36a2409ccc53006da4f23f5f07610f44cfa0ff23937f8c50f7095dfe + !! source digest: sha256:24aa7ba3b28cb05fdfd98de0e1d0d07ef49fa39c4d517b7227b3d162691a3954 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/mail_notification_sound_volume/static/description/icon.png b/mail_notification_sound_volume/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1dcc49c24f364e9adf0afbc6fc0bac6dbecdeb11 GIT binary patch literal 10254 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 Notification Volume !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:ab1c573b36a2409ccc53006da4f23f5f07610f44cfa0ff23937f8c50f7095dfe +!! source digest: sha256:24aa7ba3b28cb05fdfd98de0e1d0d07ef49fa39c4d517b7227b3d162691a3954 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Beta License: AGPL-3 OCA/mail Translate me on Weblate Try me on Runboat

This module allows users to configure the volume of notification sounds From 3ffbff57ac6b273537771f5985b677a8bd85f703 Mon Sep 17 00:00:00 2001 From: mymage Date: Wed, 13 May 2026 06:00:43 +0000 Subject: [PATCH 4/6] Added translation using Weblate (Italian) --- mail_notification_sound_volume/i18n/it.po | 45 +++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 mail_notification_sound_volume/i18n/it.po diff --git a/mail_notification_sound_volume/i18n/it.po b/mail_notification_sound_volume/i18n/it.po new file mode 100644 index 000000000..407768f16 --- /dev/null +++ b/mail_notification_sound_volume/i18n/it.po @@ -0,0 +1,45 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_notification_sound_volume +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: mail_notification_sound_volume +#: model:ir.model.fields,field_description:mail_notification_sound_volume.field_res_users__notification_volume +#: model:ir.model.fields,field_description:mail_notification_sound_volume.field_res_users_settings__notification_volume +msgid "Notification Volume" +msgstr "" + +#. module: mail_notification_sound_volume +#. odoo-javascript +#: code:addons/mail_notification_sound_volume/static/src/volume_slider_field.xml:0 +#, python-format +msgid "Test sound" +msgstr "" + +#. module: mail_notification_sound_volume +#: model:ir.model,name:mail_notification_sound_volume.model_res_users +msgid "User" +msgstr "" + +#. module: mail_notification_sound_volume +#: model:ir.model,name:mail_notification_sound_volume.model_res_users_settings +msgid "User Settings" +msgstr "" + +#. module: mail_notification_sound_volume +#. odoo-javascript +#: code:addons/mail_notification_sound_volume/static/src/volume_slider_field.esm.js:0 +#, python-format +msgid "Volume Slider" +msgstr "" From ba4456cab416336ecac327ce09625970690b66ee Mon Sep 17 00:00:00 2001 From: mymage Date: Wed, 13 May 2026 06:57:27 +0000 Subject: [PATCH 5/6] Translated using Weblate (Italian) Currently translated at 100.0% (5 of 5 strings) Translation: mail-17.0/mail-17.0-mail_notification_sound_volume Translate-URL: https://translation.odoo-community.org/projects/mail-17-0/mail-17-0-mail_notification_sound_volume/it/ --- mail_notification_sound_volume/i18n/it.po | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/mail_notification_sound_volume/i18n/it.po b/mail_notification_sound_volume/i18n/it.po index 407768f16..12a5ae60b 100644 --- a/mail_notification_sound_volume/i18n/it.po +++ b/mail_notification_sound_volume/i18n/it.po @@ -6,40 +6,42 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2026-05-13 08:34+0000\n" +"Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.15.2\n" #. module: mail_notification_sound_volume #: model:ir.model.fields,field_description:mail_notification_sound_volume.field_res_users__notification_volume #: model:ir.model.fields,field_description:mail_notification_sound_volume.field_res_users_settings__notification_volume msgid "Notification Volume" -msgstr "" +msgstr "Volume notifica" #. module: mail_notification_sound_volume #. odoo-javascript #: code:addons/mail_notification_sound_volume/static/src/volume_slider_field.xml:0 #, python-format msgid "Test sound" -msgstr "" +msgstr "Suono di test" #. module: mail_notification_sound_volume #: model:ir.model,name:mail_notification_sound_volume.model_res_users msgid "User" -msgstr "" +msgstr "Utente" #. module: mail_notification_sound_volume #: model:ir.model,name:mail_notification_sound_volume.model_res_users_settings msgid "User Settings" -msgstr "" +msgstr "Impostazioni utente" #. module: mail_notification_sound_volume #. odoo-javascript #: code:addons/mail_notification_sound_volume/static/src/volume_slider_field.esm.js:0 #, python-format msgid "Volume Slider" -msgstr "" +msgstr "Regolatore volume" From 327345629dd3d391db3c1c6a1e55e46be05a3e38 Mon Sep 17 00:00:00 2001 From: Andreu Orensanz Date: Tue, 7 Jul 2026 13:30:19 +0200 Subject: [PATCH 6/6] [MIG] mail_notification_sound_volume: Migration to 19.0 --- mail_notification_sound_volume/README.rst | 12 +++--- .../__manifest__.py | 4 +- .../static/description/index.html | 6 +-- .../src/out_of_focus_service_patch.esm.js | 28 ++++---------- .../static/src/settings_model_patch.esm.js | 10 +++++ .../src/user_settings_service_patch.esm.js | 37 ------------------- .../static/src/volume_slider_field.esm.js | 9 ++--- .../views/res_users_views.xml | 4 +- 8 files changed, 34 insertions(+), 76 deletions(-) create mode 100644 mail_notification_sound_volume/static/src/settings_model_patch.esm.js delete mode 100644 mail_notification_sound_volume/static/src/user_settings_service_patch.esm.js diff --git a/mail_notification_sound_volume/README.rst b/mail_notification_sound_volume/README.rst index 3d4efea11..d58b19249 100644 --- a/mail_notification_sound_volume/README.rst +++ b/mail_notification_sound_volume/README.rst @@ -21,13 +21,13 @@ Mail Notification Volume :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmail-lightgray.png?logo=github - :target: https://github.com/OCA/mail/tree/17.0/mail_notification_sound_volume + :target: https://github.com/OCA/mail/tree/19.0/mail_notification_sound_volume :alt: OCA/mail .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/mail-17-0/mail-17-0-mail_notification_sound_volume + :target: https://translation.odoo-community.org/projects/mail-19-0/mail-19-0-mail_notification_sound_volume :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/mail&target_branch=17.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/mail&target_branch=19.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -52,7 +52,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -67,7 +67,7 @@ Authors Contributors ------------ -- Andreu Orensanz +- Andreu Orensanz Maintainers ----------- @@ -82,6 +82,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/mail `_ project on GitHub. +This module is part of the `OCA/mail `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/mail_notification_sound_volume/__manifest__.py b/mail_notification_sound_volume/__manifest__.py index 827522c1e..c055fdb1f 100644 --- a/mail_notification_sound_volume/__manifest__.py +++ b/mail_notification_sound_volume/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Mail Notification Volume", "summary": "Allow users to configure notification sound volume", - "version": "17.0.1.0.0", + "version": "19.0.1.0.0", "development_status": "Beta", "category": "Social Network", "website": "https://github.com/OCA/mail", @@ -16,7 +16,7 @@ ], "assets": { "web.assets_backend": [ - "mail_notification_sound_volume/static/src/user_settings_service_patch.esm.js", + "mail_notification_sound_volume/static/src/settings_model_patch.esm.js", "mail_notification_sound_volume/static/src/out_of_focus_service_patch.esm.js", "mail_notification_sound_volume/static/src/volume_slider_field.esm.js", "mail_notification_sound_volume/static/src/volume_slider_field.xml", diff --git a/mail_notification_sound_volume/static/description/index.html b/mail_notification_sound_volume/static/description/index.html index 26e490341..86f1f2ae7 100644 --- a/mail_notification_sound_volume/static/description/index.html +++ b/mail_notification_sound_volume/static/description/index.html @@ -374,7 +374,7 @@

Mail Notification Volume

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:24aa7ba3b28cb05fdfd98de0e1d0d07ef49fa39c4d517b7227b3d162691a3954 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/mail Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/mail Translate me on Weblate Try me on Runboat

This module allows users to configure the volume of notification sounds in Odoo (chat messages, inbox notifications, etc.).

A volume slider is added to the user’s Preferences page, with a test @@ -398,7 +398,7 @@

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -424,7 +424,7 @@

Maintainers

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

-

This module is part of the OCA/mail project on GitHub.

+

This module is part of the OCA/mail project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

diff --git a/mail_notification_sound_volume/static/src/out_of_focus_service_patch.esm.js b/mail_notification_sound_volume/static/src/out_of_focus_service_patch.esm.js index 9d7c93307..506372876 100644 --- a/mail_notification_sound_volume/static/src/out_of_focus_service_patch.esm.js +++ b/mail_notification_sound_volume/static/src/out_of_focus_service_patch.esm.js @@ -1,29 +1,15 @@ -/** @odoo-module */ - import {OutOfFocusService} from "@mail/core/common/out_of_focus_service"; import {patch} from "@web/core/utils/patch"; -import {url} from "@web/core/utils/urls"; patch(OutOfFocusService.prototype, { async _playSound() { - if (this.canPlayAudio && this.multiTab.isOnMainTab()) { - if (!this.audio) { - this.audio = new Audio(); - this.audio.src = this.audio.canPlayType("audio/ogg; codecs=vorbis") - ? url("/mail/static/src/audio/ting.ogg") - : url("/mail/static/src/audio/ting.mp3"); - } - const userSettings = this.env.services["mail.user_settings"]; - this.audio.volume = - userSettings && userSettings.notificationVolume !== undefined - ? userSettings.notificationVolume - : 0.7; - try { - await this.audio.play(); - } catch { - // Ignore errors due to the user not having interacted - // with the page before playing the sound. - } + if ( + this.canPlayAudio && + this.store.settings.messageSound && + (await this.multiTab.isOnMainTab()) + ) { + const volume = this.store.settings.notification_volume ?? 1; + this.soundEffectService.play("new-message", {volume}); } }, }); diff --git a/mail_notification_sound_volume/static/src/settings_model_patch.esm.js b/mail_notification_sound_volume/static/src/settings_model_patch.esm.js new file mode 100644 index 000000000..ac3388ac9 --- /dev/null +++ b/mail_notification_sound_volume/static/src/settings_model_patch.esm.js @@ -0,0 +1,10 @@ +import {Settings} from "@mail/core/common/settings_model"; +import {fields} from "@mail/core/common/record"; +import {patch} from "@web/core/utils/patch"; + +patch(Settings.prototype, { + setup() { + super.setup(...arguments); + this.notification_volume = fields.Attr(1.0); + }, +}); diff --git a/mail_notification_sound_volume/static/src/user_settings_service_patch.esm.js b/mail_notification_sound_volume/static/src/user_settings_service_patch.esm.js deleted file mode 100644 index ac390a68e..000000000 --- a/mail_notification_sound_volume/static/src/user_settings_service_patch.esm.js +++ /dev/null @@ -1,37 +0,0 @@ -/** @odoo-module */ - -import {UserSettings} from "@mail/core/common/user_settings_service"; -import {patch} from "@web/core/utils/patch"; - -patch(UserSettings.prototype, { - notificationVolume: 1.0, - - updateFromCommands(settings) { - super.updateFromCommands(settings); - if ("notification_volume" in settings) { - this.notificationVolume = settings.notification_volume; - } - }, - - setNotificationVolume(value) { - this.notificationVolume = parseFloat(value); - this._saveSettings(); - }, - - async _onSaveGlobalSettingsTimeout() { - this.globalSettingsTimeout = undefined; - await this.orm.call( - "res.users.settings", - "set_res_users_settings", - [[this.id]], - { - new_settings: { - push_to_talk_key: this.pushToTalkKey, - use_push_to_talk: this.usePushToTalk, - voice_active_duration: this.voiceActiveDuration, - notification_volume: this.notificationVolume, - }, - } - ); - }, -}); diff --git a/mail_notification_sound_volume/static/src/volume_slider_field.esm.js b/mail_notification_sound_volume/static/src/volume_slider_field.esm.js index 6bfda848b..122bfc843 100644 --- a/mail_notification_sound_volume/static/src/volume_slider_field.esm.js +++ b/mail_notification_sound_volume/static/src/volume_slider_field.esm.js @@ -1,10 +1,9 @@ -/** @odoo-module */ - import {Component} from "@odoo/owl"; import {_t} from "@web/core/l10n/translation"; import {registry} from "@web/core/registry"; import {standardFieldProps} from "@web/views/fields/standard_field_props"; import {url} from "@web/core/utils/urls"; +import {useService} from "@web/core/utils/hooks"; export class VolumeSliderField extends Component { static template = "mail_notification_sound_volume.VolumeSliderField"; @@ -14,6 +13,7 @@ export class VolumeSliderField extends Component { setup() { this.testAudio = null; + this.store = useService("mail.store"); } get value() { @@ -27,9 +27,8 @@ export class VolumeSliderField extends Component { onChange(ev) { const value = parseFloat(ev.target.value); this.props.record.update({[this.props.name]: value}); - const userSettings = this.env.services["mail.user_settings"]; - if (userSettings) { - userSettings.notificationVolume = value; + if (this.store.settings) { + this.store.settings.notification_volume = value; } } diff --git a/mail_notification_sound_volume/views/res_users_views.xml b/mail_notification_sound_volume/views/res_users_views.xml index f63accee2..c8d89684a 100644 --- a/mail_notification_sound_volume/views/res_users_views.xml +++ b/mail_notification_sound_volume/views/res_users_views.xml @@ -3,9 +3,9 @@ res.users.preferences.form.notification.volume res.users - + - +