aboutsummaryrefslogtreecommitdiff
path: root/ufund-ui/src/app/services/users.service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'ufund-ui/src/app/services/users.service.ts')
-rw-r--r--ufund-ui/src/app/services/users.service.ts35
1 files changed, 32 insertions, 3 deletions
diff --git a/ufund-ui/src/app/services/users.service.ts b/ufund-ui/src/app/services/users.service.ts
index 4080ebf..688d6e4 100644
--- a/ufund-ui/src/app/services/users.service.ts
+++ b/ufund-ui/src/app/services/users.service.ts
@@ -1,7 +1,7 @@
import { Injectable } from '@angular/core';
import {HttpClient, HttpHeaders} from '@angular/common/http';
import {BehaviorSubject, catchError, firstValueFrom, Observable, of} from 'rxjs';
-import {User} from '../models/User';
+import {User, userType} from '../models/User';
import { Need } from '../models/Need';
import { CupboardService } from './cupboard.service';
import {AuthService} from './auth.service';
@@ -21,11 +21,22 @@ export class UsersService {
})
});
+ httpOptions2 = () => ({
+ headers: new HttpHeaders({
+ 'Content-Type': 'application/json',
+ "jelly-api-key": this.authService.getApiKey()
+ }),
+ responseType: "text" as "json" // don't ask me how or why this works, bc i have no clue...
+ // see the relevant angular bug report https://github.com/angular/angular/issues/18586
+ });
+
constructor(
private http: HttpClient,
private cupboardService: CupboardService,
private authService: AuthService
- ) {}
+ ) {
+ authService.getCurrentUserSubject().subscribe(() => this.refreshBasket())
+ }
async createUser(username:string, password:string) {
await firstValueFrom(this.http.post<User>(this.url, {username: username, password: password}, this.httpOptions()))
@@ -35,6 +46,10 @@ export class UsersService {
return this.http.get<User>(`${this.url}/${id}`, this.httpOptions())
}
+ getCount(): Observable<number> {
+ return this.http.get<number>(`${this.url}/count`, this.httpOptions2())
+ }
+
updateUser(user: User): Observable<User> {
console.log(`${this.url}/${user.username}`, user, this.httpOptions)
return this.http.put<User>(`${this.url}/${user.username}`, user, this.httpOptions())
@@ -45,7 +60,9 @@ export class UsersService {
}
refreshBasket() {
- let promiseArr = this.authService.getCurrentUser()!.basket.map(async needID => {
+ let usr = this.authService.getCurrentUser();
+ if (!usr) return;
+ let promiseArr = usr.basket.map(async needID => {
return await firstValueFrom(this.cupboardService.getNeed(needID));
})
Promise.all(promiseArr).then(r => this.basket.next(r));
@@ -71,4 +88,16 @@ export class UsersService {
return this.basket;
}
+ isManager() {
+ return this.authService.getCurrentUser()?.type === userType.MANAGER
+ }
+
+ isHelper() {
+ return this.authService.getCurrentUser()?.type === userType.HELPER
+ }
+
+ inBasket(basket: Need[] | null, need: Need) {
+ return basket?.map(r => r.id).includes(need.id);
+ }
+
}