mirror of
https://gitlab.com/openstapps/openstapps.git
synced 2026-01-22 09:32:41 +00:00
refactor: initialise settings from config module and persist only the values
Closes #30, #59
This commit is contained in:
@@ -13,8 +13,9 @@
|
||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
import {Component} from '@angular/core';
|
||||
import {AlertController, ToastController} from '@ionic/angular';
|
||||
import {LangChangeEvent, TranslateService} from '@ngx-translate/core';
|
||||
import {SCSettingMeta, SCTranslations} from '@openstapps/core';
|
||||
import {SCSettingMeta, SCThingTranslator, SCTranslations} from '@openstapps/core';
|
||||
import {SettingsCache, SettingsProvider} from '../settings.provider';
|
||||
|
||||
@Component({
|
||||
@@ -28,22 +29,81 @@ export class SettingsPageComponent {
|
||||
meta = SCSettingMeta;
|
||||
objectKeys = Object.keys;
|
||||
settingsCache: SettingsCache;
|
||||
translator: SCThingTranslator;
|
||||
|
||||
constructor(public settingsProvider: SettingsProvider,
|
||||
translateService: TranslateService) {
|
||||
constructor(private alertController: AlertController,
|
||||
private settingsProvider: SettingsProvider,
|
||||
private toastController: ToastController,
|
||||
private translateService: TranslateService) {
|
||||
this.language = translateService.currentLang as keyof SCTranslations<any>;
|
||||
this.translator = new SCThingTranslator(this.language, 'de');
|
||||
|
||||
translateService.onLangChange.subscribe((event: LangChangeEvent) => {
|
||||
this.language = event.lang as keyof SCTranslations<any>;
|
||||
this.translator = new SCThingTranslator(this.language, 'de');
|
||||
});
|
||||
this.settingsCache = {};
|
||||
this.categoriesOrder = settingsProvider.getCategoriesOrder();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Presents a Toast with message for settings successful reset
|
||||
*/
|
||||
private async presentSettingsResetToast() {
|
||||
const toast = await this.toastController.create({
|
||||
cssClass: 'text-center',
|
||||
duration: 2000,
|
||||
message: this.translateService.instant('settings.resetToast.message'),
|
||||
});
|
||||
toast.present();
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads cache of settings from SettingProvider
|
||||
*/
|
||||
async loadSettings(): Promise<void> {
|
||||
this.settingsCache = await this.settingsProvider.getSettingsCache();
|
||||
this.settingsCache = await this.settingsProvider.getCache();
|
||||
}
|
||||
|
||||
async ngOnInit() {
|
||||
await this.loadSettings();
|
||||
}
|
||||
|
||||
/**
|
||||
* Presents an alert to the user to reset settings to default values
|
||||
*/
|
||||
async presentResetAlert() {
|
||||
const cancelText = await this.translateService.get('settings.resetAlert.buttonCancel').toPromise();
|
||||
const yesText = await this.translateService.get('settings.resetAlert.buttonYes').toPromise();
|
||||
const title = await this.translateService.get('settings.resetAlert.title').toPromise();
|
||||
const message = await this.translateService.get('settings.resetAlert.message').toPromise();
|
||||
|
||||
const alert = await this.alertController.create({
|
||||
buttons: [
|
||||
{
|
||||
role: 'cancel',
|
||||
text: cancelText,
|
||||
},
|
||||
{
|
||||
handler: async () => {
|
||||
await this.resetSettings();
|
||||
},
|
||||
text: yesText,
|
||||
},
|
||||
],
|
||||
header: title,
|
||||
message: message,
|
||||
});
|
||||
alert.present();
|
||||
}
|
||||
|
||||
/**
|
||||
* Resets all settings to default values
|
||||
*/
|
||||
async resetSettings() {
|
||||
await this.settingsProvider.resetDefault();
|
||||
await this.loadSettings();
|
||||
await this.presentSettingsResetToast();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user