From 09c2482eda07cdc4d2f03622f18de069848264ec Mon Sep 17 00:00:00 2001 From: "Ahmad M. Abdelaziz" Date: Sat, 16 Oct 2021 10:26:13 +0200 Subject: feat: add new preference to allow per-service wake-up (#2085) --- src/components/settings/services/EditServiceForm.js | 1 + src/containers/settings/EditServiceScreen.js | 9 +++++++++ src/i18n/locales/en-US.json | 1 + src/models/Service.js | 6 ++++++ src/stores/ServicesStore.js | 2 ++ 5 files changed, 19 insertions(+) (limited to 'src') diff --git a/src/components/settings/services/EditServiceForm.js b/src/components/settings/services/EditServiceForm.js index fd3c4a176..b040e6cc2 100644 --- a/src/components/settings/services/EditServiceForm.js +++ b/src/components/settings/services/EditServiceForm.js @@ -356,6 +356,7 @@ class EditServiceForm extends Component {

{intl.formatMessage(messages.isHibernationEnabledInfo)}

+ {form.$('isDarkModeEnabled').value && ( <> diff --git a/src/containers/settings/EditServiceScreen.js b/src/containers/settings/EditServiceScreen.js index 85af0334d..972d3d251 100644 --- a/src/containers/settings/EditServiceScreen.js +++ b/src/containers/settings/EditServiceScreen.js @@ -37,6 +37,10 @@ const messages = defineMessages({ id: 'settings.service.form.enableHibernation', defaultMessage: 'Enable hibernation', }, + enableWakeUp: { + id: 'settings.service.form.enableWakeUp', + defaultMessage: 'Enable wake up', + }, enableNotification: { id: 'settings.service.form.enableNotification', defaultMessage: 'Enable notifications', @@ -181,6 +185,11 @@ class EditServiceScreen extends Component { : service.isHibernationEnabled, default: true, }, + isWakeUpEnabled: { + label: intl.formatMessage(messages.enableWakeUp), + value: service.isWakeUpEnabled, + default: true, + }, isNotificationEnabled: { label: intl.formatMessage(messages.enableNotification), value: service.isNotificationEnabled, diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index baf9753a1..cf790567f 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -309,6 +309,7 @@ "settings.service.form.enableBadge": "Show unread message badges", "settings.service.form.enableDarkMode": "Enable Dark Mode", "settings.service.form.enableHibernation": "Enable hibernation", + "settings.service.form.enableWakeUp": "Enable wake up", "settings.service.form.enableNotification": "Enable notifications", "settings.service.form.enableService": "Enable service", "settings.service.form.headlineBadges": "Unread message badges", diff --git a/src/models/Service.js b/src/models/Service.js index 75dfde027..12109fb0a 100644 --- a/src/models/Service.js +++ b/src/models/Service.js @@ -81,6 +81,8 @@ export default class Service { @observable isHibernationEnabled = false; + @observable isWakeUpEnabled = true; + @observable isHibernationRequested = false; @observable onlyShowFavoritesInUnreadCount = false; @@ -163,6 +165,10 @@ export default class Service { data.isHibernationEnabled, this.isHibernationEnabled, ); + this.isWakeUpEnabled = ifUndefinedBoolean( + data.isWakeUpEnabled, + this.isWakeUpEnabled, + ); // Check if "Hibernate on Startup" is enabled and hibernate all services except active one const { hibernateOnStartup } = window.ferdi.stores.settings.app; diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js index 5ed9e3534..c6baa4358 100644 --- a/src/stores/ServicesStore.js +++ b/src/stores/ServicesStore.js @@ -224,6 +224,7 @@ export default class ServicesStore extends Store { } if ( + service.isWakeUpEnabled && service.lastHibernated && Number(this.stores.settings.all.app.wakeUpStrategy) > 0 && Date.now() - service.lastHibernated > @@ -399,6 +400,7 @@ export default class ServicesStore extends Store { serviceData = { isEnabled: true, isHibernationEnabled: false, + isWakeUpEnabled: true, isNotificationEnabled: true, isBadgeEnabled: true, isMuted: false, -- cgit v1.2.3-54-g00ecf