From 9f1485ecd77d56e975225b54d7705b764813bbbc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafael=20L=C3=A1szl=C3=B3?= <rlacko99@gmail.com>
Date: Tue, 11 May 2021 23:20:20 +0200
Subject: [PATCH] Document all services and models

---
 src/app/helpers/auth.guard.ts                 |  3 ++
 src/app/helpers/error.interceptor.ts          |  3 ++
 src/app/helpers/jwt.interceptor.ts            |  3 ++
 src/app/models/error.model.ts                 |  3 ++
 src/app/models/history.model.ts               |  3 ++
 src/app/models/jwt-user.model.ts              |  4 ++-
 .../models/request/create-history-request.ts  |  3 ++
 .../request/create-service-request.model.ts   |  3 ++
 .../request/create-user-request.model.ts      |  3 ++
 .../models/request/update-history-request.ts  |  3 ++
 .../request/update-service-request.model.ts   |  3 ++
 .../models/response/created-response.model.ts |  3 ++
 .../models/response/token-reponse.model.ts    |  3 ++
 src/app/models/service.model.ts               |  3 ++
 src/app/models/user.model.ts                  |  3 ++
 src/app/services/auth.service.ts              | 23 ++++++++++++++
 src/app/services/error.service.ts             | 16 ++++++++--
 src/app/services/histories.service.ts         |  3 ++
 src/app/services/jwt.service.ts               |  6 ++++
 src/app/services/localstorage.service.ts      | 31 +++++++++++++++++--
 src/app/services/services.service.ts          |  3 ++
 src/app/services/users.service.ts             |  3 ++
 22 files changed, 126 insertions(+), 5 deletions(-)

diff --git a/src/app/helpers/auth.guard.ts b/src/app/helpers/auth.guard.ts
index 2768079..e3add18 100644
--- a/src/app/helpers/auth.guard.ts
+++ b/src/app/helpers/auth.guard.ts
@@ -3,6 +3,9 @@ import { Injectable } from '@angular/core';
 import { AuthService } from '../services/auth.service';
 import { Observable } from 'rxjs';
 
+/**
+ * AuthGuard that prevents a site from loading if not Authorized and redirect to the forbidden page.
+ */
 @Injectable({
   providedIn: 'root'
 })
diff --git a/src/app/helpers/error.interceptor.ts b/src/app/helpers/error.interceptor.ts
index 6d174ef..294663f 100644
--- a/src/app/helpers/error.interceptor.ts
+++ b/src/app/helpers/error.interceptor.ts
@@ -4,6 +4,9 @@ import { Observable, throwError } from 'rxjs';
 import { catchError } from 'rxjs/operators';
 import { AuthService } from '../services/auth.service';
 
+/**
+ * HTTP Error interceptor that logs all the errors and logs out if a 401 request intercepted
+ */
 @Injectable()
 export class ErrorInterceptor implements HttpInterceptor {
   constructor(private authService: AuthService) {}
diff --git a/src/app/helpers/jwt.interceptor.ts b/src/app/helpers/jwt.interceptor.ts
index be10722..c856bfe 100644
--- a/src/app/helpers/jwt.interceptor.ts
+++ b/src/app/helpers/jwt.interceptor.ts
@@ -4,6 +4,9 @@ import { Observable } from 'rxjs';
 import { environment } from '../../environments/environment';
 import { Injectable } from '@angular/core';
 
+/**
+ * HTTP Interceptor that adds the jwt token to all requests if exist
+ */
 @Injectable()
 export class JwtInterceptor implements HttpInterceptor {
   private currentJwt?: string;
diff --git a/src/app/models/error.model.ts b/src/app/models/error.model.ts
index 69e3ba4..2cff276 100644
--- a/src/app/models/error.model.ts
+++ b/src/app/models/error.model.ts
@@ -1,3 +1,6 @@
+/**
+ * Error that is stored in ErrorService
+ */
 export interface ErrorModel {
   message: string;
   navigate?: string[];
diff --git a/src/app/models/history.model.ts b/src/app/models/history.model.ts
index febb41b..de9525c 100644
--- a/src/app/models/history.model.ts
+++ b/src/app/models/history.model.ts
@@ -1,3 +1,6 @@
+/**
+ * History model
+ */
 export interface History {
   id: number;
   description: string;
diff --git a/src/app/models/jwt-user.model.ts b/src/app/models/jwt-user.model.ts
index a507db4..27fd931 100644
--- a/src/app/models/jwt-user.model.ts
+++ b/src/app/models/jwt-user.model.ts
@@ -1,4 +1,6 @@
-
+/**
+ * User details that can be get from JWT
+ */
 export interface JwtUserModel {
   fullName: string;
   schacc: string;
diff --git a/src/app/models/request/create-history-request.ts b/src/app/models/request/create-history-request.ts
index b099e10..cb58309 100644
--- a/src/app/models/request/create-history-request.ts
+++ b/src/app/models/request/create-history-request.ts
@@ -1,3 +1,6 @@
+/**
+ * Sent request on new History creation
+ */
 export interface CreateHistoryRequest {
   createdAt?: string; // Default now
   description: string;
diff --git a/src/app/models/request/create-service-request.model.ts b/src/app/models/request/create-service-request.model.ts
index ad51ff5..7cd274e 100644
--- a/src/app/models/request/create-service-request.model.ts
+++ b/src/app/models/request/create-service-request.model.ts
@@ -1,3 +1,6 @@
+/**
+ * Sent request on new Service creation
+ */
 export interface CreateServiceRequestModel {
   description: string;
   isOkay?: string; // default is false
diff --git a/src/app/models/request/create-user-request.model.ts b/src/app/models/request/create-user-request.model.ts
index d290d7b..56199bc 100644
--- a/src/app/models/request/create-user-request.model.ts
+++ b/src/app/models/request/create-user-request.model.ts
@@ -1,3 +1,6 @@
+/**
+ * Sent request on new User creation
+ */
 export interface CreateUserRequestModel {
   email: string;
   fullName: string;
diff --git a/src/app/models/request/update-history-request.ts b/src/app/models/request/update-history-request.ts
index 07a97b7..717f1d2 100644
--- a/src/app/models/request/update-history-request.ts
+++ b/src/app/models/request/update-history-request.ts
@@ -1,3 +1,6 @@
+/**
+ * Sent request on service creation
+ */
 export interface UpdateHistoryRequest {
   createdAt?: string;
   description?: string;
diff --git a/src/app/models/request/update-service-request.model.ts b/src/app/models/request/update-service-request.model.ts
index 64d9f93..1b01dd5 100644
--- a/src/app/models/request/update-service-request.model.ts
+++ b/src/app/models/request/update-service-request.model.ts
@@ -1,3 +1,6 @@
+/**
+ * Sent request on Service update
+ */
 export interface UpdateServiceRequestModel {
   description?: string;
   isOkay?: string;
diff --git a/src/app/models/response/created-response.model.ts b/src/app/models/response/created-response.model.ts
index 5565542..680c12a 100644
--- a/src/app/models/response/created-response.model.ts
+++ b/src/app/models/response/created-response.model.ts
@@ -1,3 +1,6 @@
+/**
+ * Response when something is successfully created
+ */
 export interface CreatedResponseModel {
   id: number;
 }
diff --git a/src/app/models/response/token-reponse.model.ts b/src/app/models/response/token-reponse.model.ts
index d160f3e..0f14bc6 100644
--- a/src/app/models/response/token-reponse.model.ts
+++ b/src/app/models/response/token-reponse.model.ts
@@ -1,3 +1,6 @@
+/**
+ * Response when a token is requested
+ */
 export interface TokenReponseModel {
   code: number;
   expire: string;
diff --git a/src/app/models/service.model.ts b/src/app/models/service.model.ts
index 6eb5161..d90443f 100644
--- a/src/app/models/service.model.ts
+++ b/src/app/models/service.model.ts
@@ -1,5 +1,8 @@
 import { History } from './history.model';
 
+/**
+ * A service model
+ */
 export interface Service {
   id: number;
   name: string;
diff --git a/src/app/models/user.model.ts b/src/app/models/user.model.ts
index 86054a9..893fcd1 100644
--- a/src/app/models/user.model.ts
+++ b/src/app/models/user.model.ts
@@ -1,3 +1,6 @@
+/**
+ * User model
+ */
 export interface User {
   id: number;
   fullName: string;
diff --git a/src/app/services/auth.service.ts b/src/app/services/auth.service.ts
index 5b8fb9b..ba4cf77 100644
--- a/src/app/services/auth.service.ts
+++ b/src/app/services/auth.service.ts
@@ -8,12 +8,21 @@ import { map } from 'rxjs/operators';
 import { TokenReponseModel } from '../models/response/token-reponse.model';
 import { Router } from '@angular/router';
 
+/**
+ * Authentication service
+ */
 @Injectable({
   providedIn: 'root',
 })
 export class AuthService {
+  /**
+   * The is Authenticated
+   */
   isLoggedIn = false;
   private userDataSource = new BehaviorSubject<JwtUserModel | void>(null);
+  /**
+   * User data
+   */
   userData$ = this.userDataSource.asObservable();
   private refreshTokenTimeout: number;
   private expire: Date;
@@ -23,6 +32,11 @@ export class AuthService {
     this.startRefreshTokenTimer();
   }
 
+  /**
+   * Log in the user and start auto refresh
+   * @param username User's username
+   * @param password User's password
+   */
   login(username: string, password: string): Observable<TokenReponseModel> {
     return this.http.post(`${environment.apiUrl}/auth/login`, { username, password }).pipe(
       map((tokenRes: TokenReponseModel) => {
@@ -34,6 +48,9 @@ export class AuthService {
     );
   }
 
+  /**
+   * Log out the user. Delete JWT and variables
+   */
   logout(): void {
     this.stopRefreshTokenTimer();
     this.userDataSource.next(null);
@@ -41,6 +58,9 @@ export class AuthService {
     this.router.navigate(['/services']);
   }
 
+  /**
+   * Refresh the token using the current one
+   */
   refreshToken(): Observable<TokenReponseModel> {
     return this.http.get(`${environment.apiUrl}/auth/refresh`).pipe(
       map((tokenRes: TokenReponseModel) => {
@@ -52,6 +72,9 @@ export class AuthService {
     );
   }
 
+  /**
+   * Load the current user data from LocalStorage
+   */
   loadUserData(): void {
     const data = this.jwtService.getDecodedToken();
     if (!data || data.exp < new Date()) {
diff --git a/src/app/services/error.service.ts b/src/app/services/error.service.ts
index 772ce0a..3c1e638 100644
--- a/src/app/services/error.service.ts
+++ b/src/app/services/error.service.ts
@@ -1,19 +1,28 @@
 import { Injectable } from '@angular/core';
-import { ErrorDialogComponent } from '../shared/error-dialog/error-dialog.component';
 import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
 import { BehaviorSubject } from 'rxjs';
-import { JwtUserModel } from '../models/jwt-user.model';
 import { ErrorModel } from '../models/error.model';
 
+/**
+ * Service that contains the current and past errors.
+ */
 @Injectable({
   providedIn: 'root',
 })
 export class ErrorService {
   private errorDataSource = new BehaviorSubject<ErrorModel | void>(null);
+  /**
+   * Error data
+   */
   errorData$ = this.errorDataSource.asObservable();
 
   constructor(private modalService: NgbModal) {}
 
+  /**
+   * Update the current error
+   * @param message Message of error
+   * @param navigate where to navigate
+   */
   updateError(message: string, navigate?: string[]): void {
     this.errorDataSource.next({
       message,
@@ -21,6 +30,9 @@ export class ErrorService {
     });
   }
 
+  /**
+   * Set to null the error
+   */
   resetError(): void {
     this.errorDataSource.next(null);
   }
diff --git a/src/app/services/histories.service.ts b/src/app/services/histories.service.ts
index 6f4a04d..32bc13f 100644
--- a/src/app/services/histories.service.ts
+++ b/src/app/services/histories.service.ts
@@ -6,6 +6,9 @@ import { CreatedResponseModel } from '../models/response/created-response.model'
 import { CreateHistoryRequest } from '../models/request/create-history-request';
 import { UpdateHistoryRequest } from '../models/request/update-history-request';
 
+/**
+ * Service that handles the history endpoint
+ */
 @Injectable({
   providedIn: 'root',
 })
diff --git a/src/app/services/jwt.service.ts b/src/app/services/jwt.service.ts
index a5e5ff0..2b451ee 100644
--- a/src/app/services/jwt.service.ts
+++ b/src/app/services/jwt.service.ts
@@ -3,6 +3,9 @@ import { LocalstorageService } from './localstorage.service';
 import { JwtUserModel } from '../models/jwt-user.model';
 import jwt_decode from 'jwt-decode';
 
+/**
+ * Service that handles the JWT
+ */
 @Injectable({
   providedIn: 'root',
 })
@@ -17,6 +20,9 @@ export class JwtService {
     this.localStorageService.setItem('token', token);
   }
 
+  /**
+   * Clear the token from localstorage
+   */
   clearToken(): void {
     this.localStorageService.removeItem('token');
   }
diff --git a/src/app/services/localstorage.service.ts b/src/app/services/localstorage.service.ts
index 2830958..40aa703 100644
--- a/src/app/services/localstorage.service.ts
+++ b/src/app/services/localstorage.service.ts
@@ -1,21 +1,48 @@
 import { Injectable } from '@angular/core';
 
+/**
+ * Service that handles all localstorage methods. Type safe
+ */
 @Injectable({
-  providedIn: 'root',
+  providedIn: 'root'
 })
 export class LocalstorageService {
-  constructor() { }
+  constructor() {
+  }
 
+  /**
+   * Set a record to the localstorage
+   * @param key The Record key
+   * @param value The Record value
+   */
   setItem(key: string, value: any): void {
     localStorage.setItem(key, JSON.stringify({ value }));
   }
 
+  /**
+   * Remove a record by key
+   * @param key Record key
+   */
   removeItem(key: string): void {
     localStorage.removeItem(key);
   }
 
+  /**
+   * Get a given record specifying it's type
+   * @param key Key of the record
+   */
   getItem<T>(key: string): T | null;
+  /**
+   * Get a given record specifying it's type
+   * @param key Key of the record
+   * @param otherwise default return value
+   */
   getItem<T>(key: string, otherwise: T): T;
+  /**
+   * Get a given record specifying it's type
+   * @param key Key of the record
+   * @param otherwise default return value
+   */
   getItem<T>(key: string, otherwise?: T): T | null {
     const data: string | null = localStorage.getItem(key);
     if (data !== null) {
diff --git a/src/app/services/services.service.ts b/src/app/services/services.service.ts
index 475c1f9..ee350fc 100644
--- a/src/app/services/services.service.ts
+++ b/src/app/services/services.service.ts
@@ -7,6 +7,9 @@ import { Service } from '../models/service.model';
 import { CreateServiceRequestModel } from '../models/request/create-service-request.model';
 import { UpdateServiceRequestModel } from '../models/request/update-service-request.model';
 
+/**
+ * Service that handles the services endpoint
+ */
 @Injectable({
   providedIn: 'root',
 })
diff --git a/src/app/services/users.service.ts b/src/app/services/users.service.ts
index afe2543..e8aff44 100644
--- a/src/app/services/users.service.ts
+++ b/src/app/services/users.service.ts
@@ -6,6 +6,9 @@ import { User } from '../models/user.model';
 import { CreateUserRequestModel } from '../models/request/create-user-request.model';
 import { CreatedResponseModel } from '../models/response/created-response.model';
 
+/**
+ * Service that handles the users endpoint
+ */
 @Injectable({
   providedIn: 'root',
 })
-- 
GitLab