clear repositories and extra DS clear on logout
This commit is contained in:
parent
9e2d42f9f4
commit
3432c66d4d
@ -6,6 +6,7 @@ import { environment } from 'environments/environment';
|
|||||||
import { User } from '../../shared/models/users/user';
|
import { User } from '../../shared/models/users/user';
|
||||||
import { OpenSlidesService } from './openslides.service';
|
import { OpenSlidesService } from './openslides.service';
|
||||||
import { HttpService } from './http.service';
|
import { HttpService } from './http.service';
|
||||||
|
import { DataStoreService } from './data-store.service';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The data returned by a post request to the login route.
|
* The data returned by a post request to the login route.
|
||||||
@ -34,7 +35,8 @@ export class AuthService {
|
|||||||
private http: HttpService,
|
private http: HttpService,
|
||||||
private operator: OperatorService,
|
private operator: OperatorService,
|
||||||
private OpenSlides: OpenSlidesService,
|
private OpenSlides: OpenSlidesService,
|
||||||
private router: Router
|
private router: Router,
|
||||||
|
private DS: DataStoreService
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -71,6 +73,8 @@ export class AuthService {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
// We do nothing on failures. Reboot OpenSlides anyway.
|
// We do nothing on failures. Reboot OpenSlides anyway.
|
||||||
}
|
}
|
||||||
|
// Clear the DataStore
|
||||||
|
this.DS.clear();
|
||||||
this.router.navigate(['/']);
|
this.router.navigate(['/']);
|
||||||
this.OpenSlides.reboot();
|
this.OpenSlides.reboot();
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { Injectable, EventEmitter } from '@angular/core';
|
||||||
|
|
||||||
import { Observable, Subject } from 'rxjs';
|
import { Observable, Subject } from 'rxjs';
|
||||||
|
|
||||||
@ -123,6 +123,20 @@ export class DataStoreService {
|
|||||||
return this.changedOrDeletedSubject.asObservable();
|
return this.changedOrDeletedSubject.asObservable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Observable subject for changed or deleted models in the datastore.
|
||||||
|
*/
|
||||||
|
private readonly clearEvent: EventEmitter<void> = new EventEmitter<void>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Observe the datastore for changes and deletions.
|
||||||
|
*
|
||||||
|
* @return an observable for changed and deleted objects.
|
||||||
|
*/
|
||||||
|
public get clearObservable(): Observable<void> {
|
||||||
|
return this.clearEvent.asObservable();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The maximal change id from this DataStore.
|
* The maximal change id from this DataStore.
|
||||||
*/
|
*/
|
||||||
@ -171,9 +185,7 @@ export class DataStoreService {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this.jsonStore = {};
|
await this.clear();
|
||||||
this.modelStore = {};
|
|
||||||
this._maxChangeId = 0;
|
|
||||||
}
|
}
|
||||||
return this.maxChangeId;
|
return this.maxChangeId;
|
||||||
}
|
}
|
||||||
@ -207,6 +219,7 @@ export class DataStoreService {
|
|||||||
this._maxChangeId = 0;
|
this._maxChangeId = 0;
|
||||||
await this.storageService.remove(DataStoreService.cachePrefix + 'DS');
|
await this.storageService.remove(DataStoreService.cachePrefix + 'DS');
|
||||||
await this.storageService.remove(DataStoreService.cachePrefix + 'maxChangeId');
|
await this.storageService.remove(DataStoreService.cachePrefix + 'maxChangeId');
|
||||||
|
this.clearEvent.next();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -68,6 +68,8 @@ export abstract class BaseRepository<V extends BaseViewModel, M extends BaseMode
|
|||||||
}
|
}
|
||||||
|
|
||||||
public onAfterAppsLoaded(): void {
|
public onAfterAppsLoaded(): void {
|
||||||
|
this.DS.clearObservable.subscribe(() => this.clear());
|
||||||
|
|
||||||
// Populate the local viewModelStore with ViewModel Objects.
|
// Populate the local viewModelStore with ViewModel Objects.
|
||||||
this.DS.getAll(this.baseModelCtor).forEach((model: M) => {
|
this.DS.getAll(this.baseModelCtor).forEach((model: M) => {
|
||||||
this.viewModelStore[model.id] = this.createViewModel(model);
|
this.viewModelStore[model.id] = this.createViewModel(model);
|
||||||
@ -152,6 +154,14 @@ export abstract class BaseRepository<V extends BaseViewModel, M extends BaseMode
|
|||||||
*/
|
*/
|
||||||
protected abstract createViewModel(model: M): V;
|
protected abstract createViewModel(model: M): V;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clears the repository.
|
||||||
|
*/
|
||||||
|
protected clear(): void {
|
||||||
|
this.viewModelStore = {};
|
||||||
|
this.updateViewModelListObservable();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* helper function to return one viewModel
|
* helper function to return one viewModel
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user