aboutsummaryrefslogtreecommitdiffstats
path: root/src/stores/ServicesStore.js
diff options
context:
space:
mode:
authorLibravatar Vijay Raghavan Aravamudhan <vraravam@users.noreply.github.com>2021-07-23 17:48:50 +0000
committerLibravatar GitHub <noreply@github.com>2021-07-23 23:18:50 +0530
commit0158c89b21ad6764866bb2770491a91c3516f362 (patch)
tree66564d8afea49b83ebcc71fd9e9e9b79c5e807f4 /src/stores/ServicesStore.js
parentNew Crowdin updates (#1678) (diff)
downloadferdium-app-0158c89b21ad6764866bb2770491a91c3516f362.tar.gz
ferdium-app-0158c89b21ad6764866bb2770491a91c3516f362.tar.zst
ferdium-app-0158c89b21ad6764866bb2770491a91c3516f362.zip
Added a 'wakeUpStrategy' that the user can control to wake up a previously hibernated service (#1680)
Diffstat (limited to 'src/stores/ServicesStore.js')
-rw-r--r--src/stores/ServicesStore.js30
1 files changed, 20 insertions, 10 deletions
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js
index 6064b9929..fa31dc292 100644
--- a/src/stores/ServicesStore.js
+++ b/src/stores/ServicesStore.js
@@ -165,10 +165,19 @@ export default class ServicesStore extends Store {
165 */ 165 */
166 _serviceMaintenance() { 166 _serviceMaintenance() {
167 this.all.forEach((service) => { 167 this.all.forEach((service) => {
168 // Defines which services should be hibernated. 168 // Defines which services should be hibernated or woken up
169 if (!service.isActive && (Date.now() - service.lastUsed > ms(`${this.stores.settings.all.app.hibernationStrategy}s`))) { 169 if (!service.isActive) {
170 // If service is stale, hibernate it. 170 if (!service.lastHibernated && (Date.now() - service.lastUsed > ms(`${this.stores.settings.all.app.hibernationStrategy}s`))) {
171 this._hibernate({ serviceId: service.id }); 171 // If service is stale, hibernate it.
172 this._hibernate({ serviceId: service.id });
173 }
174
175 if (service.lastHibernated && Number(this.stores.settings.all.app.wakeUpStrategy) > 0) {
176 // If service is in hibernation and the wakeup time has elapsed, wake it.
177 if ((Date.now() - service.lastHibernated > ms(`${this.stores.settings.all.app.wakeUpStrategy}s`))) {
178 this._awake({ serviceId: service.id });
179 }
180 }
172 } 181 }
173 182
174 if (service.lastPoll && (service.lastPoll - service.lastPollAnswer > ms('1m'))) { 183 if (service.lastPoll && (service.lastPoll - service.lastPollAnswer > ms('1m'))) {
@@ -473,12 +482,11 @@ export default class ServicesStore extends Store {
473 if (!keepActiveRoute) this.stores.router.push('/'); 482 if (!keepActiveRoute) this.stores.router.push('/');
474 const service = this.one(serviceId); 483 const service = this.one(serviceId);
475 484
476 this.all.forEach((s, index) => { 485 this.all.forEach((s) => {
477 this.all[index].isActive = false; 486 s.isActive = false;
478 }); 487 });
479 service.isActive = true; 488 service.isActive = true;
480 this._awake({ serviceId: service.id }); 489 this._awake({ serviceId: service.id });
481 service.lastUsed = Date.now();
482 490
483 if (this.isTodosServiceActive && !this.stores.todos.settings.isFeatureEnabledByUser) { 491 if (this.isTodosServiceActive && !this.stores.todos.settings.isFeatureEnabledByUser) {
484 this.actions.todos.toggleTodosFeatureVisibility(); 492 this.actions.todos.toggleTodosFeatureVisibility();
@@ -824,20 +832,22 @@ export default class ServicesStore extends Store {
824 return; 832 return;
825 } 833 }
826 if (service.isActive) { 834 if (service.isActive) {
827 debug('Skipping service hibernation'); 835 debug(`Skipping service hibernation for ${service.name}`);
828 return; 836 return;
829 } 837 }
830 838
831 debug(`Hibernate ${service.name}`); 839 debug(`Hibernate ${service.name}`);
832 840
833 service.isHibernationRequested = true; 841 service.isHibernationRequested = true;
842 service.lastHibernated = Date.now();
834 } 843 }
835 844
836 @action _awake({ serviceId }) { 845 @action _awake({ serviceId }) {
837 debug('Waking up from service hibernation');
838 const service = this.one(serviceId); 846 const service = this.one(serviceId);
847 debug(`Waking up from service hibernation for ${service.name}`);
839 service.isHibernationRequested = false; 848 service.isHibernationRequested = false;
840 service.liveFrom = Date.now(); 849 service.lastUsed = Date.now();
850 service.lastHibernated = null;
841 } 851 }
842 852
843 @action _resetLastPollTimer({ serviceId = null }) { 853 @action _resetLastPollTimer({ serviceId = null }) {