fix: prevent multiple heavy setting inits

This commit is contained in:
Thea Schöbl
2022-11-04 10:49:12 +00:00
committed by Rainer Killinger
parent 15ccbe4c18
commit f7726378f4
7 changed files with 53 additions and 31 deletions

View File

@@ -1,16 +1,16 @@
/*
* Copyright (C) 2022 StApps
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3.
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <https://www.gnu.org/licenses/>.
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <https://www.gnu.org/licenses/>.
*/
describe('canteen', function () {
@@ -27,14 +27,17 @@ describe('canteen', function () {
);
});
it('should have a the default price', function () {
it('should not utilize the default price', function () {
cy.visit('/data-detail/86464b64-da1e-5578-a5c4-eec23457f596');
cy.contains('4,40 €').should('exist');
cy.contains('4,40 €').should('not.exist');
});
it('should have a student price', function () {
cy.visit('/settings');
cy.contains('stapps-settings-item', 'Gruppe').find('ion-select').click();
cy.contains('stapps-settings-item', 'Gruppe')
.find('ion-select')
.should('be.visible')
.click();
cy.get('ion-popover').contains('ion-item', 'Studierende').click();
cy.wait(2000);
cy.visit('/data-detail/86464b64-da1e-5578-a5c4-eec23457f596');
@@ -43,7 +46,10 @@ describe('canteen', function () {
it('should have an employee price', function () {
cy.visit('/settings');
cy.contains('stapps-settings-item', 'Gruppe').find('ion-select').click();
cy.contains('stapps-settings-item', 'Gruppe')
.find('ion-select')
.should('be.visible')
.click();
cy.get('ion-popover').contains('ion-item', 'Angestellte').click();
cy.wait(2000);
cy.visit('/data-detail/86464b64-da1e-5578-a5c4-eec23457f596');
@@ -52,7 +58,10 @@ describe('canteen', function () {
it('should have a guest price', function () {
cy.visit('/settings');
cy.contains('stapps-settings-item', 'Gruppe').find('ion-select').click();
cy.contains('stapps-settings-item', 'Gruppe')
.find('ion-select')
.should('be.visible')
.click();
cy.get('ion-popover').contains('ion-item', 'Gäste').click();
cy.wait(2000);
cy.visit('/data-detail/86464b64-da1e-5578-a5c4-eec23457f596');

View File

@@ -184,7 +184,9 @@ describe('dashboard', async function () {
it('should go to search when clicking the icon', function () {
cy.visit('/overview');
cy.get('stapps-search-section').find('ion-icon[name=search]').click();
cy.get('stapps-search-section')
.find('ion-icon[name=search]')
.click({force: true});
cy.url().should('eq', Cypress.config().baseUrl + '/search?query=');
cy.get('ion-searchbar').should('not.have.value');

View File

@@ -1,16 +1,16 @@
/*
* Copyright (C) 2022 StApps
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3.
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <https://www.gnu.org/licenses/>.
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <https://www.gnu.org/licenses/>.
*/
describe('Settings Page', () => {
it('should have a proper title', () => {
@@ -21,7 +21,9 @@ describe('Settings Page', () => {
it('should change language', () => {
cy.visit('/settings');
cy.contains('ion-select', 'Deutsch').click();
cy.contains('ion-select', 'Deutsch')
.should('be.visible')
.click({force: true});
cy.get('ion-popover').contains('ion-item', 'English').click();
cy.get('ion-popover').should('not.exist');
cy.get('ion-title').contains('Settings');

View File

@@ -45,7 +45,10 @@ beforeEach(async function () {
for (const database of databases) {
if (database) {
console.log(`Deleting database ${database}`);
window.indexedDB.deleteDatabase(database);
await new Promise(
resolve =>
(window.indexedDB.deleteDatabase(database).onsuccess = resolve),
);
console.log(`Deleted database ${database}`);
}
}

6
package-lock.json generated
View File

@@ -7414,9 +7414,9 @@
"dev": true
},
"cypress": {
"version": "10.9.0",
"resolved": "https://registry.npmjs.org/cypress/-/cypress-10.9.0.tgz",
"integrity": "sha512-MjIWrRpc+bQM9U4kSSdATZWZ2hUqHGFEQTF7dfeZRa4MnalMtc88FIE49USWP2ZVtfy5WPBcgfBX+YorFqGElA==",
"version": "10.11.0",
"resolved": "https://registry.npmjs.org/cypress/-/cypress-10.11.0.tgz",
"integrity": "sha512-lsaE7dprw5DoXM00skni6W5ElVVLGAdRUUdZjX2dYsGjbY/QnpzWZ95Zom1mkGg0hAaO/QVTZoFVS7Jgr/GUPA==",
"dev": true,
"requires": {
"@cypress/request": "^2.88.10",

View File

@@ -141,7 +141,7 @@
"@typescript-eslint/parser": "5.35.1",
"conventional-changelog-cli": "2.2.2",
"cordova-res": "0.15.4",
"cypress": "10.9.0",
"cypress": "10.11.0",
"eslint": "8.24.0",
"eslint-config-prettier": "8.5.0",
"eslint-plugin-jsdoc": "39.3.6",

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2019, 2020 StApps
* Copyright (C) 2022 StApps
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3.
@@ -96,6 +96,8 @@ export class SettingsProvider {
*/
private settingsActionSource = new Subject<SettingsAction>();
private needsInit = true;
/**
* Order of the setting categories
*/
@@ -332,6 +334,9 @@ export class SettingsProvider {
* Initializes settings from config and stored values if exist
*/
public async init(): Promise<void> {
if (!this.needsInit) return;
this.needsInit = false;
try {
const settings: SCSetting[] = this.configProvider.getValue(
'settings',
@@ -390,6 +395,7 @@ export class SettingsProvider {
*/
public async reset(): Promise<void> {
await this.storage.put(STORAGE_KEY_SETTING_VALUES, {});
this.needsInit = true;
await this.init();
}