User config subject - luftsport/nlf-client GitHub Wiki

Persistent storage of user settings and user specific data with automatic sync between browser storage and api making settings available on every device.

import { NlfUserSubjectService } from 'app/user/user-subject.service';
import { ApiUserDataSubjectItem, NlfConfigItem } from 'app/api/api.interface';

public userData: ApiUserDataSubjectItem;
private person_id: number;

constructor(private userSubject: NlfUserSubjectService) {

    this.userDataSubject.observable.subscribe(
        data => {
          if (!!data) {
            this.userData = data;
            this.person_id = data.person_id;
          }
        },
        err => console.log('Error getting user data: ', err)
      );
}

Access settings:

this.user.settings.default_discipline

Interfaces:

export interface ApiUserDataSubjectItem {
  settings?: ApiUserSettingsItem;
  person_id?: number;
  activities?: string[];
  acl?: ApiUserAcl[];
  _etag?: string;
  _id?: string;
}

export interface ApiUserDefaultSettingsItem {
  default_club?: number; // gruppe/klubb type 6
  default_discipline?: number; // gren type 14
  default_activity?: number; // seksjon
}
export interface ApiUserSettingsItem extends ApiUserDefaultSettingsItem {
  ors?: any; // ors: {has_reported?: boolean, cache?: {}, last_edited: [{activity:, id:}] }
}

ORS/OBSREG settings:

ors: {
    seilfly: {99: {simple_view: false}},
    fallskjerm: {176: {}},
},