File

src/app/maindata.service.ts

Index

Properties
Methods
Accessors

Constructor

constructor(expectedApiVersion: string, cts: CustomtextService)
Parameters :
Name Type Optional
expectedApiVersion string No
cts CustomtextService No

Methods

Static getAuthData
getAuthData()
Returns : AuthData
Static getTestConfig
getTestConfig()
Returns : KeyValuePairs
resetAuthData
resetAuthData()
Returns : void
setAuthData
setAuthData(authData: AuthData)
Parameters :
Name Type Optional Default value
authData AuthData No null
Returns : void
setSpinnerOff
setSpinnerOff()
Returns : void
setSpinnerOn
setSpinnerOn()
Returns : void
setTestConfig
setTestConfig(testConfig: KeyValuePairs)
Parameters :
Name Type Optional Default value
testConfig KeyValuePairs No null
Returns : void

Properties

_authData$
Default value : new Subject<AuthData>()
appConfig
Type : AppConfig
Default value : null
appError$
Default value : new Subject<AppError>()
appSubTitle$
Default value : new BehaviorSubject<string>('')
appTitle$
Default value : new BehaviorSubject<string>('IQB-Testcenter')
appWindowHasFocus$
Default value : new Subject<boolean>()
defaultTcHeaderHeight
Default value : document.documentElement.style.getPropertyValue('--tc-header-height')
defaultTcUnitPageNavHeight
Default value : document.documentElement.style.getPropertyValue('--tc-unit-page-nav-height')
defaultTcUnitTitleHeight
Default value : document.documentElement.style.getPropertyValue('--tc-unit-title-height')
errorReportingSilent
Default value : false
globalWarning
Type : string
Default value : ''
isSpinnerOn$
Default value : new BehaviorSubject<boolean>(false)
postMessage$
Default value : new Subject<MessageEvent>()
progressVisualEnabled
Default value : true
sysCheckAvailable
Default value : false

Accessors

authData$
getauthData$()
import { Inject, Injectable } from '@angular/core';
import { BehaviorSubject, Observable, Subject } from 'rxjs';
import { CustomtextService } from 'iqb-components';
import {
  AppError,
  AuthData, KeyValuePairs
} from './app.interfaces';
import { AppConfig, localStorageTestConfigKey } from './config/app.config';

const localStorageAuthDataKey = 'iqb-tc-a';

@Injectable({
  providedIn: 'root'
})

export class MainDataService {
  appError$ = new Subject<AppError>();
  _authData$ = new Subject<AuthData>();
  get authData$(): Observable<AuthData> {
    return this._authData$.asObservable();
  }

  errorReportingSilent = false;
  isSpinnerOn$ = new BehaviorSubject<boolean>(false);
  progressVisualEnabled = true;
  appConfig: AppConfig = null;
  sysCheckAvailable = false;
  appTitle$ = new BehaviorSubject<string>('IQB-Testcenter');
  appSubTitle$ = new BehaviorSubject<string>('');
  globalWarning = '';
  defaultTcHeaderHeight = document.documentElement.style.getPropertyValue('--tc-header-height');
  defaultTcUnitTitleHeight = document.documentElement.style.getPropertyValue('--tc-unit-title-height');
  defaultTcUnitPageNavHeight = document.documentElement.style.getPropertyValue('--tc-unit-page-nav-height');

  // set by app.component.ts
  postMessage$ = new Subject<MessageEvent>();
  appWindowHasFocus$ = new Subject<boolean>();

  static getAuthData(): AuthData {
    let myReturn: AuthData = null;
    const storageEntry = localStorage.getItem(localStorageAuthDataKey);
    if (storageEntry !== null) {
      if (storageEntry.length > 0) {
        try {
          myReturn = JSON.parse(storageEntry as string);
        } catch (e) {
          console.warn('corrupt localStorage authData entry');
          myReturn = null;
        }
      }
    }
    return myReturn;
  }

  static getTestConfig(): KeyValuePairs {
    let myReturn: KeyValuePairs = null;
    const storageEntry = localStorage.getItem(localStorageTestConfigKey);
    if (storageEntry !== null) {
      if (storageEntry.length > 0) {
        try {
          myReturn = JSON.parse(storageEntry as string);
        } catch (e) {
          console.warn('corrupt localStorage testConfig entry');
          myReturn = null;
        }
      }
    }
    return myReturn;
  }

  constructor(
    @Inject('API_VERSION_EXPECTED') readonly expectedApiVersion: string,
    private cts: CustomtextService
  ) { }

  setSpinnerOn(): void {
    this.isSpinnerOn$.next(true);
  }

  setSpinnerOff(): void {
    this.isSpinnerOn$.next(false);
  }

  setAuthData(authData: AuthData = null): void {
    this._authData$.next(authData);
    if (authData) {
      if (authData.customTexts) {
        this.cts.addCustomTexts(authData.customTexts);
      }
      localStorage.setItem(localStorageAuthDataKey, JSON.stringify(authData));
    } else {
      localStorage.removeItem(localStorageAuthDataKey);
    }
  }

  resetAuthData(): void {
    const storageEntry = localStorage.getItem(localStorageAuthDataKey);
    if (storageEntry) {
      localStorage.removeItem(localStorageAuthDataKey);
    }
    this._authData$.next(MainDataService.getAuthData());
  }

  setTestConfig(testConfig: KeyValuePairs = null): void {
    if (testConfig) {
      localStorage.setItem(localStorageTestConfigKey, JSON.stringify(testConfig));
    } else {
      localStorage.removeItem(localStorageTestConfigKey);
    }
    this._authData$.next(MainDataService.getAuthData());
  }
}

result-matching ""

    No results matching ""