mirror of
https://gitlab.com/openstapps/openstapps.git
synced 2026-03-12 01:32:12 +00:00
fix: update core and apply stricter tslint rules
This commit is contained in:
@@ -17,34 +17,56 @@ import {AlertController} from '@ionic/angular';
|
||||
import {LangChangeEvent, TranslateService} from '@ngx-translate/core';
|
||||
import {
|
||||
SCSetting,
|
||||
SCSettingValue,
|
||||
SCSettingValues,
|
||||
SCThingTranslator,
|
||||
SCTranslations,
|
||||
} from '@openstapps/core';
|
||||
import {Logger} from '@openstapps/logger';
|
||||
import {SettingsProvider} from '../settings.provider';
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
@Component({
|
||||
selector: 'stapps-settings-item',
|
||||
templateUrl: 'settings-item.html',
|
||||
})
|
||||
export class SettingsItemComponent {
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
isVisible = true;
|
||||
// limit to languages that are available in StApps Core
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* limit to languages that are available in StApps Core
|
||||
*/
|
||||
language: keyof SCTranslations<any>;
|
||||
logger = new Logger();
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
@Input() setting: SCSetting;
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
translator: SCThingTranslator;
|
||||
|
||||
constructor(private alertCtrl: AlertController,
|
||||
private translateService: TranslateService,
|
||||
private settingsProvider: SettingsProvider) {
|
||||
/**
|
||||
*
|
||||
* @param alertCtrl TODO
|
||||
* @param translateService TODO
|
||||
* @param settingsProvider TODO
|
||||
*/
|
||||
constructor(private readonly alertCtrl: AlertController,
|
||||
private readonly translateService: TranslateService,
|
||||
private readonly settingsProvider: SettingsProvider) {
|
||||
this.language = translateService.currentLang as keyof SCTranslations<any>;
|
||||
this.translator = new SCThingTranslator(this.language, 'de');
|
||||
this.translator = new SCThingTranslator(this.language);
|
||||
|
||||
translateService.onLangChange.subscribe((event: LangChangeEvent) => {
|
||||
this.isVisible = false;
|
||||
this.language = event.lang as keyof SCTranslations<any>;
|
||||
this.translator = new SCThingTranslator(this.language, 'de');
|
||||
this.translator = new SCThingTranslator(this.language);
|
||||
// TODO: Issue #53 check workaround for selected 'select option' not updating translation
|
||||
setTimeout(() => this.isVisible = true);
|
||||
});
|
||||
@@ -58,7 +80,7 @@ export class SettingsItemComponent {
|
||||
const permissionGranted = await this.settingsProvider.checkGeoLocationPermission();
|
||||
if (!permissionGranted) {
|
||||
// revert setting value
|
||||
this.setting.input.value = false;
|
||||
this.setting.value = false;
|
||||
await this.presentGeoLocationAlert();
|
||||
}
|
||||
}
|
||||
@@ -67,8 +89,10 @@ export class SettingsItemComponent {
|
||||
* Shows alert with error message on denied user permission or disabled location services
|
||||
*/
|
||||
private async presentGeoLocationAlert() {
|
||||
const title = await this.translateService.get('settings.geoLocation.permission_denied_title').toPromise();
|
||||
const message = await this.translateService.get('settings.geoLocation.permission_denied_message').toPromise();
|
||||
const title = await this.translateService.get('settings.geoLocation.permission_denied_title')
|
||||
.toPromise();
|
||||
const message = await this.translateService.get('settings.geoLocation.permission_denied_message')
|
||||
.toPromise();
|
||||
await this.presentAlert(title, message);
|
||||
}
|
||||
|
||||
@@ -91,29 +115,34 @@ export class SettingsItemComponent {
|
||||
* Handles value changes of the setting
|
||||
*/
|
||||
async settingChanged(): Promise<void> {
|
||||
if (typeof this.setting.input.value !== 'undefined'
|
||||
&& SettingsProvider.validateValue(this.setting, this.setting.input.value)) {
|
||||
if (typeof this.setting.value !== 'undefined'
|
||||
&& SettingsProvider.validateValue(this.setting, this.setting.value)) {
|
||||
// handle general settings, with special actions
|
||||
switch (this.setting.name) {
|
||||
case 'language':
|
||||
this.translateService.use(this.setting.input.value.toString());
|
||||
this.translateService.use(this.setting.value.toString());
|
||||
break;
|
||||
case 'geoLocation':
|
||||
if (this.setting.input.value) {
|
||||
if (this.setting.value) {
|
||||
await this.checkGeoLocationPermission();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
}
|
||||
await this.settingsProvider
|
||||
.setSettingValue(this.setting.categories[0], this.setting.name, this.setting.input.value);
|
||||
.setSettingValue(this.setting.categories[0], this.setting.name, this.setting.value);
|
||||
} else {
|
||||
// reset setting
|
||||
this.setting.input.value =
|
||||
await this.settingsProvider.getValue(this.setting.categories[0], this.setting.name);
|
||||
this.setting.value =
|
||||
await this.settingsProvider
|
||||
.getValue(this.setting.categories[0], this.setting.name) as (SCSettingValue | SCSettingValues);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
// tslint:disable-next-line:prefer-function-over-method
|
||||
typeOf(val: any) {
|
||||
return typeof (val);
|
||||
}
|
||||
|
||||
@@ -5,27 +5,27 @@
|
||||
<ion-card-content>
|
||||
<ion-note>{{ translator.translate(setting).description() }}</ion-note>
|
||||
|
||||
<div [ngSwitch]="setting.input.inputType" *ngIf="isVisible" >
|
||||
<div [ngSwitch]="setting.inputType" *ngIf="isVisible" >
|
||||
<ion-item *ngSwitchCase="'number'">
|
||||
<ion-label></ion-label>
|
||||
<ion-input type='number' [(ngModel)]="setting.input.value" value={{setting.input.value}} (ionChange)="settingChanged()"></ion-input>
|
||||
<ion-input type='number' [(ngModel)]="setting.value" value={{setting.value}} (ionChange)="settingChanged()"></ion-input>
|
||||
</ion-item>
|
||||
|
||||
<ion-item *ngSwitchCase="'text'">
|
||||
<ion-label></ion-label>
|
||||
<ion-input type="text" [(ngModel)]="setting.input.value" value={{setting.input.value}} (ionChange)="settingChanged()"></ion-input>
|
||||
<ion-input type="text" [(ngModel)]="setting.value" value={{setting.value}} (ionChange)="settingChanged()"></ion-input>
|
||||
</ion-item>
|
||||
|
||||
<ion-item *ngSwitchCase="'password'">
|
||||
<ion-label></ion-label>
|
||||
<ion-input type="password" [(ngModel)]="setting.input.value" value={{setting.input.value}} (ionChange)="settingChanged()"></ion-input>
|
||||
<ion-input type="password" [(ngModel)]="setting.value" value={{setting.value}} (ionChange)="settingChanged()"></ion-input>
|
||||
</ion-item>
|
||||
|
||||
<ion-item *ngSwitchCase="'singleChoice'">
|
||||
<ion-label></ion-label>
|
||||
<ion-toggle *ngIf="typeOf(setting.input.defaultValue) === 'boolean'" [(ngModel)]="setting.input.value" (ionChange)="settingChanged()"></ion-toggle>
|
||||
<ion-select *ngIf="typeOf(setting.input.defaultValue) !== 'boolean'" interface="popover" [(ngModel)]="setting.input.value" (ionChange)="settingChanged()">
|
||||
<ion-select-option *ngFor="let val of setting.input.values" [value]="val">
|
||||
<ion-toggle *ngIf="typeOf(setting.defaultValue) === 'boolean'" [(ngModel)]="setting.value" (ionChange)="settingChanged()"></ion-toggle>
|
||||
<ion-select *ngIf="typeOf(setting.defaultValue) !== 'boolean'" interface="popover" [(ngModel)]="setting.value" (ionChange)="settingChanged()">
|
||||
<ion-select-option *ngFor="let val of setting.values" [value]="val">
|
||||
<div *ngIf="typeOf(val) !== 'number'">{{ val }}</div>
|
||||
<div *ngIf="typeOf(val) === 'number'">{{ val }}</div>
|
||||
</ion-select-option>
|
||||
@@ -34,8 +34,8 @@
|
||||
|
||||
<ion-item *ngSwitchCase="'multipleChoice'">
|
||||
<ion-label></ion-label>
|
||||
<ion-select [(ngModel)]="setting.input.value" multiple="true" (ionChange)="settingChanged()">
|
||||
<ion-select-option *ngFor="let val of setting.input.values" [value]="val">
|
||||
<ion-select [(ngModel)]="setting.value" multiple="true" (ionChange)="settingChanged()">
|
||||
<ion-select-option *ngFor="let val of setting.values" [value]="val">
|
||||
<div *ngIf="typeOf(val) !== 'number'">{{ val }}</div>
|
||||
<div *ngIf="typeOf(val) === 'number'">{{ val }}</div>
|
||||
</ion-select-option>
|
||||
|
||||
Reference in New Issue
Block a user