From 0b9f9cbbcb0e0203a6d5e01a2b2363e142680e52 Mon Sep 17 00:00:00 2001 From: lampe_n1 Date: Thu, 17 Oct 2019 13:36:50 +0200 Subject: [PATCH] added data sharing through siblings "login" and "app" share user object via DataSharingService --- src/app/app.component.ts | 10 ++++++-- src/app/models/user.ts | 26 ++++++++++---------- src/app/services/datasharing.service.spec.ts | 12 +++++++++ src/app/services/datasharing.service.ts | 18 ++++++++++++++ src/app/services/login/login.service.ts | 12 ++++----- 5 files changed, 57 insertions(+), 21 deletions(-) create mode 100644 src/app/services/datasharing.service.spec.ts create mode 100644 src/app/services/datasharing.service.ts diff --git a/src/app/app.component.ts b/src/app/app.component.ts index ec18c39..8a9f97e 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,4 +1,6 @@ import { Component, OnInit } from '@angular/core'; +import { User } from './models/user'; +import { DatasharingService } from './services/datasharing.service'; @Component({ selector: 'app-root', @@ -6,7 +8,9 @@ import { Component, OnInit } from '@angular/core'; styleUrls: ['./app.component.sass'] }) export class AppComponent implements OnInit { - constructor() { } + constructor(private data: DatasharingService) { } + + userInfo: User loggedIn : boolean = false; userID : number; @@ -22,5 +26,7 @@ export class AppComponent implements OnInit { requestIDs : number[]; - ngOnInit() { } + ngOnInit() { + this.data.currentUserInfo.subscribe(user => this.userInfo = user) + } } diff --git a/src/app/models/user.ts b/src/app/models/user.ts index 785b099..619d6b7 100644 --- a/src/app/models/user.ts +++ b/src/app/models/user.ts @@ -1,15 +1,15 @@ -export interface User { - loggedIn : boolean; - userID : number; - username : string; - handle : string; - email : string; - points : number; - level : number; +export class User { + loggedIn : boolean + userID : number + username : string + handle : string + email : string + points : number + level : number - friendIDs : number[]; - groupIDs : number[]; - chatIDs : number[]; + friendIDs : number[] + groupIDs : number[] + chatIDs : number[] - requestIDs : number[]; - } \ No newline at end of file + requestIDs : number[] +} \ No newline at end of file diff --git a/src/app/services/datasharing.service.spec.ts b/src/app/services/datasharing.service.spec.ts new file mode 100644 index 0000000..6c24291 --- /dev/null +++ b/src/app/services/datasharing.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { DatasharingService } from './datasharing.service'; + +describe('DatasharingService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: DatasharingService = TestBed.get(DatasharingService); + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/services/datasharing.service.ts b/src/app/services/datasharing.service.ts new file mode 100644 index 0000000..f15a310 --- /dev/null +++ b/src/app/services/datasharing.service.ts @@ -0,0 +1,18 @@ +import { Injectable } from '@angular/core'; +import { BehaviorSubject } from 'rxjs'; +import { User } from '../models/user'; + +@Injectable({ + providedIn: 'root' +}) +export class DatasharingService { + + private userInfoSource = new BehaviorSubject(new User()) + currentUserInfo = this.userInfoSource.asObservable(); + + constructor() { } + + changeUserInfo(pUserInfo: User) { + this.userInfoSource.next(pUserInfo) + } +} diff --git a/src/app/services/login/login.service.ts b/src/app/services/login/login.service.ts index bf3ebe5..42d4ce7 100644 --- a/src/app/services/login/login.service.ts +++ b/src/app/services/login/login.service.ts @@ -1,15 +1,15 @@ import { Injectable, EventEmitter, Output } from '@angular/core'; import {Http, URLSearchParams, Headers} from '@angular/http'; import { Login } from '../../models/login'; +import { User } from 'src/app/models/user'; +import { DatasharingService } from '../datasharing.service'; @Injectable({ providedIn: 'root' }) export class LoginService { - constructor(private http: Http) { } - - @Output() showChatEvent = new EventEmitter(); + constructor(private http: Http, private data: DatasharingService) { } public login(login : Login) { @@ -22,12 +22,12 @@ export class LoginService { return this.http.post(url, this.buildJson(login)) .subscribe(response => { console.log(response.text()); - this.saveUserData(response.json()) + this.updateUserInfo(response.json()) }); } - public saveUserData(text : any){ - app = text.name; + public updateUserInfo(pUserInfo : User){ + this.data.changeUserInfo(pUserInfo) }