diff --git a/src/core/features/settings/pages/dev/dev.html b/src/core/features/settings/pages/dev/dev.html
index a2459840a..30100b8f6 100644
--- a/src/core/features/settings/pages/dev/dev.html
+++ b/src/core/features/settings/pages/dev/dev.html
@@ -30,11 +30,11 @@
-
+
- Enable staging sites
+ Enable staging sites ({{stagingSitesCount}})
-
+
diff --git a/src/core/features/settings/pages/dev/dev.ts b/src/core/features/settings/pages/dev/dev.ts
index 74912c54f..4f920990f 100644
--- a/src/core/features/settings/pages/dev/dev.ts
+++ b/src/core/features/settings/pages/dev/dev.ts
@@ -14,13 +14,13 @@
import { CoreConstants } from '@/core/constants';
import { Component, OnInit } from '@angular/core';
-import { CoreLoginHelperProvider } from '@features/login/services/login-helper';
+import { CoreLoginHelper, CoreLoginHelperProvider } from '@features/login/services/login-helper';
import { CoreSettingsHelper } from '@features/settings/services/settings-helper';
import { CoreSitePlugins } from '@features/siteplugins/services/siteplugins';
import { CoreUserTours } from '@features/usertours/services/user-tours';
import { CoreConfig } from '@services/config';
import { CorePlatform } from '@services/platform';
-import { CoreLoginSiteInfo, CoreSites } from '@services/sites';
+import { CoreSites } from '@services/sites';
import { CoreDomUtils } from '@services/utils/dom';
import { CoreUtils } from '@services/utils/utils';
@@ -43,8 +43,8 @@ export class CoreSettingsDevPage implements OnInit {
pluginStylesCount = 0;
sitePlugins: CoreSitePluginsBasicInfo[] = [];
userToursEnabled = true;
- stagingSites: CoreLoginSiteInfo[] = [];
- enableStagingSites = false;
+ stagingSitesCount = 0;
+ enableStagingSites?: boolean;
disabledFeatures: string[] = [];
@@ -59,9 +59,9 @@ export class CoreSettingsDevPage implements OnInit {
this.siteId = CoreSites.getCurrentSite()?.getId();
- this.stagingSites = CoreConstants.CONFIG.stagingsites;
+ this.stagingSitesCount = CoreConstants.CONFIG.sites.filter((site) => site.staging).length;
- if (this.stagingSites.length) {
+ if (this.stagingSitesCount) {
this.enableStagingSites = await CoreSettingsHelper.hasEnabledStagingSites();
}
@@ -167,8 +167,8 @@ export class CoreSettingsDevPage implements OnInit {
CoreDomUtils.showToast('User tours have been reseted');
}
- async setEnabledStagingSites(): Promise {
- await CoreSettingsHelper.setEnabledStagingSites(this.enableStagingSites);
+ async setEnabledStagingSites(enabled: boolean): Promise {
+ await CoreSettingsHelper.setEnabledStagingSites(enabled);
}
}
diff --git a/src/core/features/settings/services/settings-helper.ts b/src/core/features/settings/services/settings-helper.ts
index bd88b449b..216460276 100644
--- a/src/core/features/settings/services/settings-helper.ts
+++ b/src/core/features/settings/services/settings-helper.ts
@@ -30,6 +30,7 @@ import { makeSingleton, Translate } from '@singletons';
import { CoreError } from '@classes/errors/error';
import { Observable, Subject } from 'rxjs';
import { CoreTextUtils } from '@services/utils/text';
+import { CoreNavigator } from '@services/navigator';
/**
* Object with space usage and cache entries that can be erased.
@@ -477,15 +478,32 @@ export class CoreSettingsHelperProvider {
return this.darkModeObservable;
}
+ /**
+ * Get if user enabled staging sites or not.
+ *
+ * @returns Staging sites.
+ */
async hasEnabledStagingSites(): Promise {
- const staging = await CoreConfig.get('staging_sites', 'false');
+ const staging = await CoreConfig.get('stagingSites', 0);
- return CoreUtils.isTrueOrOne(staging);
+ return !!staging;
}
+ /**
+ * Persist staging sites enabled status and refresh app to apply changes.
+ *
+ * @param enabled Enabled or disabled staging sites.
+ */
async setEnabledStagingSites(enabled: boolean): Promise {
- await CoreConfig.set('staging_sites', `${enabled}`);
- CoreEvents.trigger(CoreEvents.STAGING_SITES_CHANGE, { enabled });
+ try {
+ await CoreConfig.set('stagingSites', enabled ? 1 : 0);
+ await CoreDomUtils.showConfirm('Are you sure that you want to enable/disable staging sites?');
+ } catch {
+ return;
+ }
+
+ await CoreNavigator.navigate('/');
+ window.location.reload();
}
}