From c4fcac7ddf62420143e734f5a362d5d793de2e4e Mon Sep 17 00:00:00 2001 From: Audric Ackermann <audric@loki.network> Date: Thu, 6 Oct 2022 16:34:22 +1100 Subject: [PATCH 1/2] feat: add support for audio notifications windows/macOS --- _locales/en/messages.json | 1 + .../SessionNotificationGroupSettings.tsx | 27 ++++++++++++++++--- ts/data/settings-key.ts | 2 ++ ts/types/LocalizerKeys.ts | 1 + ts/types/Settings.ts | 2 +- ts/util/notifications.ts | 4 ++- 6 files changed, 31 insertions(+), 6 deletions(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 922e556c6..c54bfb59c 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -356,6 +356,7 @@ "appearanceSettingsTitle": "Appearance", "privacySettingsTitle": "Privacy", "notificationsSettingsTitle": "Notifications", + "audioNotificationsSettingsTitle": "Audio Notifications", "notificationsSettingsContent": "Notification Content", "notificationPreview": "Preview", "recoveryPhraseEmpty": "Enter your recovery phrase", diff --git a/ts/components/settings/SessionNotificationGroupSettings.tsx b/ts/components/settings/SessionNotificationGroupSettings.tsx index e5e96256e..ef21fe1ed 100644 --- a/ts/components/settings/SessionNotificationGroupSettings.tsx +++ b/ts/components/settings/SessionNotificationGroupSettings.tsx @@ -3,6 +3,7 @@ import React from 'react'; import useUpdate from 'react-use/lib/useUpdate'; import styled from 'styled-components'; import { SettingsKey } from '../../data/settings-key'; +import { isAudioNotificationSupported } from '../../types/Settings'; import { Notifications } from '../../util/notifications'; import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton'; import { SessionRadioGroup } from '../basic/SessionRadioGroup'; @@ -30,10 +31,15 @@ export const SessionNotificationGroupSettings = (props: { hasPassword: boolean | if (props.hasPassword === null) { return null; } - const initialItem = + + const initialNotificationEnabled = window.getSettingValue(SettingsKey.settingsNotification) || NOTIFICATION.MESSAGE; - const notificationsAreEnabled = initialItem && initialItem !== NOTIFICATION.OFF; + const initialAudioNotificationEnabled = + window.getSettingValue(SettingsKey.settingsAudioNotification) || false; + + const notificationsAreEnabled = + initialNotificationEnabled && initialNotificationEnabled !== NOTIFICATION.OFF; const items = [ { @@ -58,7 +64,7 @@ export const SessionNotificationGroupSettings = (props: { hasPassword: boolean | { conversationId: `preview-notification-${Date.now()}`, message: - items.find(m => m.value === initialItem)?.label || + items.find(m => m.value === initialNotificationEnabled)?.label || window?.i18n?.('messageBody') || 'Message body', title: window.i18n('notificationPreview'), @@ -83,6 +89,19 @@ export const SessionNotificationGroupSettings = (props: { hasPassword: boolean | title={window.i18n('notificationsSettingsTitle')} active={notificationsAreEnabled} /> + {notificationsAreEnabled && isAudioNotificationSupported() && ( + <SessionToggleWithDescription + onClickToggle={async () => { + await window.setSettingValue( + SettingsKey.settingsAudioNotification, + !initialAudioNotificationEnabled + ); + forceUpdate(); + }} + title={window.i18n('audioNotificationsSettingsTitle')} + active={initialAudioNotificationEnabled} + /> + )} {notificationsAreEnabled ? ( <SessionSettingsItemWrapper title={window.i18n('notificationsSettingsContent')} @@ -90,7 +109,7 @@ export const SessionNotificationGroupSettings = (props: { hasPassword: boolean | inline={false} > <SessionRadioGroup - initialItem={initialItem} + initialItem={initialNotificationEnabled} group={SettingsKey.settingsNotification} items={items} onClick={async (selectedRadioValue: string) => { diff --git a/ts/data/settings-key.ts b/ts/data/settings-key.ts index e9b08738a..ab853d11a 100644 --- a/ts/data/settings-key.ts +++ b/ts/data/settings-key.ts @@ -8,6 +8,7 @@ const settingsLinkPreview = 'link-preview-setting'; const settingsStartInTray = 'start-in-tray-setting'; const settingsOpengroupPruning = 'prune-setting'; const settingsNotification = 'notification-setting'; +const settingsAudioNotification = 'audio-notification-setting'; export const SettingsKey = { settingsReadReceipt, @@ -19,4 +20,5 @@ export const SettingsKey = { settingsStartInTray, settingsOpengroupPruning, settingsNotification, + settingsAudioNotification, }; diff --git a/ts/types/LocalizerKeys.ts b/ts/types/LocalizerKeys.ts index f23f5fb23..a66376bed 100644 --- a/ts/types/LocalizerKeys.ts +++ b/ts/types/LocalizerKeys.ts @@ -117,6 +117,7 @@ export type LocalizerKeys = | 'appMenuUnhide' | 'timerOption_30_minutes_abbreviated' | 'pruneSettingDescription' + | 'audioNotificationsSettingsTitle' | 'voiceMessage' | 'primaryColorPink' | 'changePasswordTitle' diff --git a/ts/types/Settings.ts b/ts/types/Settings.ts index 8a460796b..32818754f 100644 --- a/ts/types/Settings.ts +++ b/ts/types/Settings.ts @@ -2,7 +2,7 @@ import * as OS from '../OS'; const MIN_WINDOWS_VERSION = '8.0.0'; -export const isAudioNotificationSupported = () => OS.isWindows(MIN_WINDOWS_VERSION) || OS.isMacOS(); +export const isAudioNotificationSupported = () => OS.isWindows(MIN_WINDOWS_VERSION) || OS.isMacOS(); // currently, only linux does not support audio notification natively // Using `Notification::tag` has a bug on Windows 7: // https://github.com/electron/electron/issues/11189 diff --git a/ts/util/notifications.ts b/ts/util/notifications.ts index d9ed44ca6..fe30cf862 100644 --- a/ts/util/notifications.ts +++ b/ts/util/notifications.ts @@ -1,4 +1,5 @@ import { debounce, last } from 'lodash'; +import { SettingsKey } from '../data/settings-key'; import { getStatus } from '../notifications'; import { UserSetting } from '../notifications/getStatus'; import { isMacOS } from '../OS'; @@ -117,7 +118,8 @@ function update(forceRefresh = false) { } const isAppFocused = isWindowFocused(); - const isAudioNotificationEnabled = (Storage.get('audio-notification') as boolean) || false; + const isAudioNotificationEnabled = + (Storage.get(SettingsKey.settingsAudioNotification) as boolean) || false; const audioNotificationSupported = isAudioNotificationSupported(); // const isNotificationGroupingSupported = Settings.isNotificationGroupingSupported(); const numNotifications = currentNotifications.length; From 4271e66fb6453f56df2e45ab3dbcf6af9d0c6938 Mon Sep 17 00:00:00 2001 From: Audric Ackermann <audric@loki.network> Date: Fri, 7 Oct 2022 12:04:59 +1100 Subject: [PATCH 2/2] feat: add custom sound for notification so it works for Linux too --- sound/new_message.mp3 | Bin 0 -> 44493 bytes ts/test/types/Settings_test.ts | 2 +- ts/types/Settings.ts | 3 ++- ts/util/notifications.ts | 10 +++++++++- 4 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 sound/new_message.mp3 diff --git a/sound/new_message.mp3 b/sound/new_message.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..4918d45843923c5a430eb1e910dee74a2de9b1db GIT binary patch literal 44493 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ŹpDa&6zNcy*30%jBUGjFqgwIC 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 literal 0 HcmV?d00001 diff --git a/ts/test/types/Settings_test.ts b/ts/test/types/Settings_test.ts index 0d233b8cf..609617bc7 100644 --- a/ts/test/types/Settings_test.ts +++ b/ts/test/types/Settings_test.ts @@ -63,7 +63,7 @@ describe('Settings', () => { }); it('should return true', () => { - assert.isFalse(Settings.isAudioNotificationSupported()); + assert.isTrue(Settings.isAudioNotificationSupported()); }); }); }); diff --git a/ts/types/Settings.ts b/ts/types/Settings.ts index 32818754f..57bbdcbcb 100644 --- a/ts/types/Settings.ts +++ b/ts/types/Settings.ts @@ -2,7 +2,8 @@ import * as OS from '../OS'; const MIN_WINDOWS_VERSION = '8.0.0'; -export const isAudioNotificationSupported = () => OS.isWindows(MIN_WINDOWS_VERSION) || OS.isMacOS(); // currently, only linux does not support audio notification natively +export const isAudioNotificationSupported = () => + OS.isWindows(MIN_WINDOWS_VERSION) || OS.isMacOS() || OS.isLinux(); // Using `Notification::tag` has a bug on Windows 7: // https://github.com/electron/electron/issues/11189 diff --git a/ts/util/notifications.ts b/ts/util/notifications.ts index fe30cf862..dfed584d4 100644 --- a/ts/util/notifications.ts +++ b/ts/util/notifications.ts @@ -22,6 +22,8 @@ function filter(text?: string) { .replace(/>/g, '>'); } +let sound: any; + export type SessionNotification = { conversationId: string; iconUrl: string | null; @@ -218,10 +220,16 @@ function update(forceRefresh = false) { } window.drawAttention(); + if (status.shouldPlayNotificationSound) { + if (!sound) { + sound = new Audio('sound/new_message.mp3'); + } + void sound.play(); + } lastNotificationDisplayed = new Notification(title || '', { body: window.platform === 'linux' ? filter(message) : message, icon: iconUrl || undefined, - silent: !status.shouldPlayNotificationSound, + silent: true, }); lastNotificationDisplayed.onclick = () => { window.openFromNotification(lastNotification.conversationId);