From 012e55ebf87559f2d782e5400fb885df8b80a445 Mon Sep 17 00:00:00 2001 From: kytwb <412895+kytwb@users.noreply.github.com> Date: Fri, 23 Jul 2021 10:04:43 +0100 Subject: Fix hibernation mode (#1486) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Use hibernation strategy from settings instead of hardcoded 5 minutes * Fix conditions with isHibernationEnabled, previously disableHibernation * Make service hibernation obey global setting Also refactors hibernation to move some hibernation enablement logic into the Service model * Remove global hibernation enable switch Implements option 4 from https://github.com/getferdi/ferdi/pull/1486#issuecomment-860290992 according to https://github.com/getferdi/ferdi/pull/1486#issuecomment-876558694 * Implements #865 : Add 'hibernate service' and 'wake up service' in the sidebar context menu. * Removed 'hibernationEnabled' check on main settings screen Since this is an (imo) incongruous behavior for the first time user. They will see a message, but with no ability to choose the hibernation strategy. * Autogenerated files from conflict fixes Co-authored-by: Kristóf Marussy Co-authored-by: Vijay A --- src/components/services/content/ServiceView.js | 16 +++++++--------- src/components/services/tabs/TabBarSortableList.js | 6 ++++++ src/components/services/tabs/TabItem.js | 18 +++++++++++++++++- src/components/services/tabs/Tabbar.js | 16 ++++++++++++++++ 4 files changed, 46 insertions(+), 10 deletions(-) (limited to 'src/components/services') diff --git a/src/components/services/content/ServiceView.js b/src/components/services/content/ServiceView.js index 17d2db5a0..3fc084ff0 100644 --- a/src/components/services/content/ServiceView.js +++ b/src/components/services/content/ServiceView.js @@ -145,19 +145,17 @@ export default @inject('stores', 'actions') @observer class ServiceView extends ) : ( <> - {(!service.isHibernating || service.isHibernationEnabled) ? ( + {!service.isHibernating ? ( <> {showNavBar && ( )} - {!service.isHibernating && ( - - )} + ) : (
diff --git a/src/components/services/tabs/TabBarSortableList.js b/src/components/services/tabs/TabBarSortableList.js index 489027d57..f12d90602 100644 --- a/src/components/services/tabs/TabBarSortableList.js +++ b/src/components/services/tabs/TabBarSortableList.js @@ -17,6 +17,8 @@ class TabBarSortableList extends Component { deleteService: PropTypes.func.isRequired, disableService: PropTypes.func.isRequired, enableService: PropTypes.func.isRequired, + hibernateService: PropTypes.func.isRequired, + wakeUpService: PropTypes.func.isRequired, showMessageBadgeWhenMutedSetting: PropTypes.bool.isRequired, showMessageBadgesEvenWhenMuted: PropTypes.bool.isRequired, } @@ -31,6 +33,8 @@ class TabBarSortableList extends Component { deleteService, disableService, enableService, + hibernateService, + wakeUpService, openSettings, showMessageBadgeWhenMutedSetting, showMessageBadgesEvenWhenMuted, @@ -53,6 +57,8 @@ class TabBarSortableList extends Component { deleteService={() => deleteService({ serviceId: service.id })} disableService={() => disableService({ serviceId: service.id })} enableService={() => enableService({ serviceId: service.id })} + hibernateService={() => hibernateService({ serviceId: service.id })} + wakeUpService={() => wakeUpService({ serviceId: service.id })} openSettings={openSettings} showMessageBadgeWhenMutedSetting={showMessageBadgeWhenMutedSetting} showMessageBadgesEvenWhenMuted={showMessageBadgesEvenWhenMuted} diff --git a/src/components/services/tabs/TabItem.js b/src/components/services/tabs/TabItem.js index 5c3149a11..ccf3333f8 100644 --- a/src/components/services/tabs/TabItem.js +++ b/src/components/services/tabs/TabItem.js @@ -49,6 +49,14 @@ const messages = defineMessages({ id: 'tabs.item.enableService', defaultMessage: '!!!Enable Service', }, + hibernateService: { + id: 'tabs.item.hibernateService', + defaultMessage: '!!!Hibernate Service', + }, + wakeUpService: { + id: 'tabs.item.wakeUpService', + defaultMessage: '!!!Wake Up Service', + }, deleteService: { id: 'tabs.item.deleteService', defaultMessage: '!!!Delete Service', @@ -101,6 +109,8 @@ const styles = { deleteService: PropTypes.func.isRequired, disableService: PropTypes.func.isRequired, enableService: PropTypes.func.isRequired, + hibernateService: PropTypes.func.isRequired, + wakeUpService: PropTypes.func.isRequired, showMessageBadgeWhenMutedSetting: PropTypes.bool.isRequired, showMessageBadgesEvenWhenMuted: PropTypes.bool.isRequired, }; @@ -145,6 +155,8 @@ const styles = { deleteService, disableService, enableService, + hibernateService, + wakeUpService, openSettings, showMessageBadgeWhenMutedSetting, showMessageBadgesEvenWhenMuted, @@ -180,6 +192,10 @@ const styles = { }, { label: intl.formatMessage(service.isEnabled ? messages.disableService : messages.enableService), click: () => (service.isEnabled ? disableService() : enableService()), + }, { + label: intl.formatMessage(service.isHibernating ? messages.wakeUpService : messages.hibernateService), + click: () => (service.isHibernating ? wakeUpService() : hibernateService()), + enabled: service.canHibernate, }, { type: 'separator', }, { @@ -217,7 +233,7 @@ const styles = { • )} - {service.isHibernating && !service.isHibernationEnabled && ( + {service.isHibernating && ( diff --git a/src/components/services/tabs/Tabbar.js b/src/components/services/tabs/Tabbar.js index 5e8260ad0..db7a69bfc 100644 --- a/src/components/services/tabs/Tabbar.js +++ b/src/components/services/tabs/Tabbar.js @@ -17,6 +17,8 @@ export default @observer class TabBar extends Component { toggleAudio: PropTypes.func.isRequired, deleteService: PropTypes.func.isRequired, updateService: PropTypes.func.isRequired, + hibernateService: PropTypes.func.isRequired, + wakeUpService: PropTypes.func.isRequired, showMessageBadgeWhenMutedSetting: PropTypes.bool.isRequired, showMessageBadgesEvenWhenMuted: PropTypes.bool.isRequired, }; @@ -55,6 +57,18 @@ export default @observer class TabBar extends Component { this.toggleService({ serviceId, isEnabled: true }); } + hibernateService({ serviceId }) { + if (serviceId) { + this.props.hibernateService({ serviceId }); + } + } + + wakeUpService({ serviceId }) { + if (serviceId) { + this.props.wakeUpService({ serviceId }); + } + } + render() { const { services, @@ -83,6 +97,8 @@ export default @observer class TabBar extends Component { deleteService={deleteService} disableService={args => this.disableService(args)} enableService={args => this.enableService(args)} + hibernateService={args => this.hibernateService(args)} + wakeUpService={args => this.wakeUpService(args)} openSettings={openSettings} distance={20} axis="y" -- cgit v1.2.3-70-g09d2