Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { Injectable } from "@angular/core";
- import { SessionStorageService } from "./session-storage.service";
- @Injectable()
- export class ErrorSessionStorageService {
- private _errorKey = "errors";
- constructor(private sessionStorageService: SessionStorageService) {
- }
- /**
- * Получение ошибок из хранилища.
- */
- getAllErrors() {
- return this.sessionStorageService.getItem(this._errorKey);
- }
- /**
- * Получает ошибки в заданном интервале от даты.
- * */
- getErrorsInInterval(minutes: number, to: Date) {
- let ms = minutes * 60 * 1000;
- let toMs = to.getTime();
- let start = toMs - ms;
- let errors = this.getAllErrors();
- let resultErrors = {};
- if (errors != null) {
- let reversedKeys = Object.keys(errors).reverse();
- for (let i = 0; i < reversedKeys.length; i++) {
- let key = reversedKeys[i];
- let keyNum = +key;
- if (keyNum > start) {
- if (keyNum <= toMs) {
- resultErrors[key] = errors[key];
- }
- }
- else break;
- }
- }
- return resultErrors;
- }
- /**
- * Добавление ошибки к логу в хранилище.
- */
- saveError(error: string) {
- //сперва почистим от старых ошибок
- this.clearOldErrors();
- let errors = JSON.parse(sessionStorage.getItem(this._errorKey)) || {};
- let key = (new Date()).valueOf();
- errors[key] = error;
- this.sessionStorageService.saveItem(this._errorKey, errors);
- }
- /**
- * Удаление из хранилища ошибок, которые были сохранены более n-часов назад (24 по умолчанию).
- */
- private clearOldErrors(hours?: number) {
- hours = hours || 24;
- let minutes = hours * 60;
- let now = new Date();
- let resultErrors = this.getErrorsInInterval(minutes, now);
- this.sessionStorageService.saveItem(this._errorKey, resultErrors);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement