mirror of
https://gitlab.com/openstapps/openstapps.git
synced 2026-01-22 17:42:57 +00:00
fix: prevent multiple heavy setting inits
This commit is contained in:
committed by
Rainer Killinger
parent
15ccbe4c18
commit
f7726378f4
@@ -1,16 +1,16 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2022 StApps
|
* Copyright (C) 2022 StApps
|
||||||
* This program is free software: you can redistribute it and/or modify it
|
* 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
|
* under the terms of the GNU General Public License as published by the Free
|
||||||
* Software Foundation, version 3.
|
* Software Foundation, version 3.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||||
* more details.
|
* more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License along with
|
* You should have received a copy of the GNU General Public License along with
|
||||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
describe('canteen', function () {
|
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.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 () {
|
it('should have a student price', function () {
|
||||||
cy.visit('/settings');
|
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.get('ion-popover').contains('ion-item', 'Studierende').click();
|
||||||
cy.wait(2000);
|
cy.wait(2000);
|
||||||
cy.visit('/data-detail/86464b64-da1e-5578-a5c4-eec23457f596');
|
cy.visit('/data-detail/86464b64-da1e-5578-a5c4-eec23457f596');
|
||||||
@@ -43,7 +46,10 @@ describe('canteen', function () {
|
|||||||
|
|
||||||
it('should have an employee price', function () {
|
it('should have an employee price', function () {
|
||||||
cy.visit('/settings');
|
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.get('ion-popover').contains('ion-item', 'Angestellte').click();
|
||||||
cy.wait(2000);
|
cy.wait(2000);
|
||||||
cy.visit('/data-detail/86464b64-da1e-5578-a5c4-eec23457f596');
|
cy.visit('/data-detail/86464b64-da1e-5578-a5c4-eec23457f596');
|
||||||
@@ -52,7 +58,10 @@ describe('canteen', function () {
|
|||||||
|
|
||||||
it('should have a guest price', function () {
|
it('should have a guest price', function () {
|
||||||
cy.visit('/settings');
|
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.get('ion-popover').contains('ion-item', 'Gäste').click();
|
||||||
cy.wait(2000);
|
cy.wait(2000);
|
||||||
cy.visit('/data-detail/86464b64-da1e-5578-a5c4-eec23457f596');
|
cy.visit('/data-detail/86464b64-da1e-5578-a5c4-eec23457f596');
|
||||||
|
|||||||
@@ -184,7 +184,9 @@ describe('dashboard', async function () {
|
|||||||
it('should go to search when clicking the icon', function () {
|
it('should go to search when clicking the icon', function () {
|
||||||
cy.visit('/overview');
|
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.url().should('eq', Cypress.config().baseUrl + '/search?query=');
|
||||||
cy.get('ion-searchbar').should('not.have.value');
|
cy.get('ion-searchbar').should('not.have.value');
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2022 StApps
|
* Copyright (C) 2022 StApps
|
||||||
* This program is free software: you can redistribute it and/or modify it
|
* 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
|
* under the terms of the GNU General Public License as published by the Free
|
||||||
* Software Foundation, version 3.
|
* Software Foundation, version 3.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||||
* more details.
|
* more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License along with
|
* You should have received a copy of the GNU General Public License along with
|
||||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
describe('Settings Page', () => {
|
describe('Settings Page', () => {
|
||||||
it('should have a proper title', () => {
|
it('should have a proper title', () => {
|
||||||
@@ -21,7 +21,9 @@ describe('Settings Page', () => {
|
|||||||
|
|
||||||
it('should change language', () => {
|
it('should change language', () => {
|
||||||
cy.visit('/settings');
|
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').contains('ion-item', 'English').click();
|
||||||
cy.get('ion-popover').should('not.exist');
|
cy.get('ion-popover').should('not.exist');
|
||||||
cy.get('ion-title').contains('Settings');
|
cy.get('ion-title').contains('Settings');
|
||||||
|
|||||||
@@ -45,7 +45,10 @@ beforeEach(async function () {
|
|||||||
for (const database of databases) {
|
for (const database of databases) {
|
||||||
if (database) {
|
if (database) {
|
||||||
console.log(`Deleting database ${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}`);
|
console.log(`Deleted database ${database}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
6
package-lock.json
generated
6
package-lock.json
generated
@@ -7414,9 +7414,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"cypress": {
|
"cypress": {
|
||||||
"version": "10.9.0",
|
"version": "10.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/cypress/-/cypress-10.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/cypress/-/cypress-10.11.0.tgz",
|
||||||
"integrity": "sha512-MjIWrRpc+bQM9U4kSSdATZWZ2hUqHGFEQTF7dfeZRa4MnalMtc88FIE49USWP2ZVtfy5WPBcgfBX+YorFqGElA==",
|
"integrity": "sha512-lsaE7dprw5DoXM00skni6W5ElVVLGAdRUUdZjX2dYsGjbY/QnpzWZ95Zom1mkGg0hAaO/QVTZoFVS7Jgr/GUPA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@cypress/request": "^2.88.10",
|
"@cypress/request": "^2.88.10",
|
||||||
|
|||||||
@@ -141,7 +141,7 @@
|
|||||||
"@typescript-eslint/parser": "5.35.1",
|
"@typescript-eslint/parser": "5.35.1",
|
||||||
"conventional-changelog-cli": "2.2.2",
|
"conventional-changelog-cli": "2.2.2",
|
||||||
"cordova-res": "0.15.4",
|
"cordova-res": "0.15.4",
|
||||||
"cypress": "10.9.0",
|
"cypress": "10.11.0",
|
||||||
"eslint": "8.24.0",
|
"eslint": "8.24.0",
|
||||||
"eslint-config-prettier": "8.5.0",
|
"eslint-config-prettier": "8.5.0",
|
||||||
"eslint-plugin-jsdoc": "39.3.6",
|
"eslint-plugin-jsdoc": "39.3.6",
|
||||||
|
|||||||
@@ -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
|
* 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
|
* under the terms of the GNU General Public License as published by the Free
|
||||||
* Software Foundation, version 3.
|
* Software Foundation, version 3.
|
||||||
@@ -96,6 +96,8 @@ export class SettingsProvider {
|
|||||||
*/
|
*/
|
||||||
private settingsActionSource = new Subject<SettingsAction>();
|
private settingsActionSource = new Subject<SettingsAction>();
|
||||||
|
|
||||||
|
private needsInit = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Order of the setting categories
|
* Order of the setting categories
|
||||||
*/
|
*/
|
||||||
@@ -332,6 +334,9 @@ export class SettingsProvider {
|
|||||||
* Initializes settings from config and stored values if exist
|
* Initializes settings from config and stored values if exist
|
||||||
*/
|
*/
|
||||||
public async init(): Promise<void> {
|
public async init(): Promise<void> {
|
||||||
|
if (!this.needsInit) return;
|
||||||
|
this.needsInit = false;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const settings: SCSetting[] = this.configProvider.getValue(
|
const settings: SCSetting[] = this.configProvider.getValue(
|
||||||
'settings',
|
'settings',
|
||||||
@@ -390,6 +395,7 @@ export class SettingsProvider {
|
|||||||
*/
|
*/
|
||||||
public async reset(): Promise<void> {
|
public async reset(): Promise<void> {
|
||||||
await this.storage.put(STORAGE_KEY_SETTING_VALUES, {});
|
await this.storage.put(STORAGE_KEY_SETTING_VALUES, {});
|
||||||
|
this.needsInit = true;
|
||||||
await this.init();
|
await this.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user