Skip to content

Commit 0869065

Browse files
ISSUE-114: Fixed linting errors and did some small refactoring (mathisGarberg#116)
1 parent 634c9b3 commit 0869065

File tree

14 files changed

+72
-76
lines changed

14 files changed

+72
-76
lines changed

package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@
2020
},
2121
"husky": {
2222
"hooks": {
23-
"pre-commit": "lint-staged && npm run lint",
24-
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
23+
"pre-commit": "npm run lint"
2524
}
2625
},
2726
"commitlint": {

src/app/core/service/auth.service.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ describe('AuthService', () => {
66
beforeEach(() => TestBed.configureTestingModule({}));
77

88
it('should be created', () => {
9-
const service: AuthService = TestBed.get(AuthService);
9+
const service: AuthService = TestBed.inject(AuthService);
1010
expect(service).toBeTruthy();
1111
});
1212
});

src/app/core/service/auth.service.ts

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,12 @@ export class AuthService {
2222
token: string;
2323

2424
login(loginContext: LoginContextInterface): Observable<User> {
25-
if (
25+
const isDefaultUser =
2626
loginContext.username === defaultUser.username &&
27-
loginContext.password === defaultUser.password
28-
) {
29-
return of(defaultUser);
27+
loginContext.password === defaultUser.password;
28+
29+
if (isDefaultUser) {
30+
return of(defaultUser);
3031
}
3132

3233
return throwError('Invalid username or password');
@@ -35,8 +36,4 @@ export class AuthService {
3536
logout(): Observable<boolean> {
3637
return of(false);
3738
}
38-
39-
getToken() {
40-
return this.getToken;
41-
}
4239
}

src/app/core/service/theme.service.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ describe('ThemeService', () => {
66
beforeEach(() => TestBed.configureTestingModule({}));
77

88
it('should be created', () => {
9-
const service: ThemeService = TestBed.get(ThemeService);
9+
const service: ThemeService = TestBed.inject(ThemeService);
1010
expect(service).toBeTruthy();
1111
});
1212
});

src/app/data/schema/project.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
export class Project {
1+
export interface Project {
22
id: number;
33
link: string;
44
title: string;
55
thumbnail: string;
6+
description: string;
67
}

src/app/data/service/json/data.json

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,32 @@
33
{
44
"id": 1,
55
"thumbnail": "https://images.unsplash.com/photo-1520769669658-f07657f5a307?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80",
6-
"title": "Online e-merchant management system - attaching integration with the iOS"
6+
"title": "Visit Norway",
7+
"description": "Kongeriket Norge er et nordisk, europeisk land og en selvstendig stat vest på Den skandinaviske halvøy. Geografisk sett er landet langt og smalt. På den langstrakte kysten mot Nord-Atlanteren befinner Norges vidkjente fjorder seg. Kongeriket Norge omfatter, i tillegg til fastlandet, Jan Mayen og Svalbard"
78
},
89
{
910
"id": 2,
1011
"thumbnail": "https://images.unsplash.com/photo-1521109762031-b71a005c25b7?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1351&q=80",
11-
"title": "Notes on pipeline upgrade"
12+
"title": "Visit Norway",
13+
"description": "Kongeriket Norge er et nordisk, europeisk land og en selvstendig stat vest på Den skandinaviske halvøy. Geografisk sett er landet langt og smalt. På den langstrakte kysten mot Nord-Atlanteren befinner Norges vidkjente fjorder seg. Kongeriket Norge omfatter, i tillegg til fastlandet, Jan Mayen og Svalbard"
1214
},
1315
{
1416
"id": 3,
1517
"thumbnail": "https://images.unsplash.com/photo-1531504060587-e6811129c0f2?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1351&q=80",
16-
"title": "Assessment report for merchant account"
18+
"title": "Visit Norway",
19+
"description": "Kongeriket Norge er et nordisk, europeisk land og en selvstendig stat vest på Den skandinaviske halvøy. Geografisk sett er landet langt og smalt. På den langstrakte kysten mot Nord-Atlanteren befinner Norges vidkjente fjorder seg. Kongeriket Norge omfatter, i tillegg til fastlandet, Jan Mayen og Svalbard"
1720
},
1821
{
19-
"id": 1,
22+
"id": 4,
2023
"thumbnail": "https://images.unsplash.com/photo-1475066392170-59d55d96fe51?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=2134&q=80",
21-
"title": "Online e-merchant management system - attaching integration with the iOS"
24+
"title": "Visit Norway",
25+
"description": "Kongeriket Norge er et nordisk, europeisk land og en selvstendig stat vest på Den skandinaviske halvøy. Geografisk sett er landet langt og smalt. På den langstrakte kysten mot Nord-Atlanteren befinner Norges vidkjente fjorder seg. Kongeriket Norge omfatter, i tillegg til fastlandet, Jan Mayen og Svalbard"
2226
},
2327
{
24-
"id": 2,
28+
"id": 5,
2529
"thumbnail": "https://images.unsplash.com/photo-1518124880777-cf8c82231ffb?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1404&q=80",
26-
"title": "Notes on pipeline upgrade"
27-
},
28-
{
29-
"id": 3,
30-
"thumbnail": "https://images.unsplash.com/photo-1531504060587-e6811129c0f2?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1351&q=80",
31-
"title": "Assessment report for merchant account"
30+
"title": "Visit Norway",
31+
"description": "Kongeriket Norge er et nordisk, europeisk land og en selvstendig stat vest på Den skandinaviske halvøy. Geografisk sett er landet langt og smalt. På den langstrakte kysten mot Nord-Atlanteren befinner Norges vidkjente fjorder seg. Kongeriket Norge omfatter, i tillegg til fastlandet, Jan Mayen og Svalbard"
3232
}
3333
]
3434
}

src/app/data/service/project.service.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,13 @@ import { JsonApiService } from './json-api.service';
88
providedIn: 'root'
99
})
1010
export class ProjectService {
11-
constructor (
12-
private jsonApiService: JsonApiService
13-
) {}
11+
constructor(private jsonApiService: JsonApiService) {}
1412

1513
getAll(): Observable<Array<Project>> {
1614
return this.jsonApiService.get('/projects');
1715
}
1816

1917
getSingle(id: number): Observable<Project> {
20-
return this.jsonApiService.get('/projects/' + id);
18+
return this.jsonApiService.get(`/projects/${id}`);
2119
}
2220
}

src/app/modules/about/about.module.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,6 @@ import { AboutComponent } from './page/about/about.component';
77

88
@NgModule({
99
declarations: [AboutComponent],
10-
imports: [
11-
AboutRoutingModule,
12-
13-
SharedModule
14-
]
10+
imports: [AboutRoutingModule, SharedModule]
1511
})
16-
export class AboutModule { }
12+
export class AboutModule {}

src/app/modules/auth/auth.module.ts

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,13 @@
11
import { NgModule } from '@angular/core';
2-
import { CommonModule } from '@angular/common';
2+
33
import { LoginComponent } from './page/login/login.component';
44
import { RegisterComponent } from './page/register/register.component';
5-
import { SharedModule } from '@shared/shared.module';
65

6+
import { SharedModule } from '@shared/shared.module';
77
import { AuthRoutingModule } from './auth.routing';
88

99
@NgModule({
10-
declarations: [
11-
LoginComponent,
12-
RegisterComponent
13-
],
14-
imports: [
15-
CommonModule,
16-
AuthRoutingModule,
17-
SharedModule
18-
]
10+
declarations: [LoginComponent, RegisterComponent],
11+
imports: [AuthRoutingModule, SharedModule]
1912
})
20-
export class AuthModule { }
13+
export class AuthModule {}

src/app/modules/auth/page/login/login.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@
1111
<form (ngSubmit)="login()" [formGroup]="loginForm">
1212
<div class="form-group">
1313
<label class="d-block">
14-
<input type="text" class="form-control" [placeholder]="'Username'" formControlName="username">
14+
<input type="text" class="form-control" placeholder="Username" formControlName="username">
1515
<app-control-messages [control]="f['username']"></app-control-messages>
1616
</label>
1717
</div>
1818
<div class="form-group">
1919
<label class="d-block">
20-
<input type="password" class="form-control" [placeholder]="'Password'" formControlName="password">
20+
<input type="password" name="password" autocomplete="on" class="form-control" placeholder="Password" formControlName="password">
2121
<app-control-messages [control]="f['password']"></app-control-messages>
2222
</label>
2323
</div>

src/app/modules/auth/page/login/login.component.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { Component, OnInit } from '@angular/core';
1+
import { Component, OnInit, OnDestroy } from '@angular/core';
22
import { Router } from '@angular/router';
33
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
44
import { tap, delay, finalize, catchError } from 'rxjs/operators';
5-
import { of } from 'rxjs';
5+
import { of, Subscription } from 'rxjs';
66

77
import { AuthService } from '@core/service/auth.service';
88

@@ -11,11 +11,13 @@ import { AuthService } from '@core/service/auth.service';
1111
templateUrl: './login.component.html',
1212
styleUrls: ['./login.component.scss']
1313
})
14-
export class LoginComponent implements OnInit {
14+
export class LoginComponent implements OnInit, OnDestroy {
1515
error: string;
1616
isLoading: boolean;
1717
loginForm: FormGroup;
1818

19+
private sub = new Subscription();
20+
1921
constructor(
2022
private formBuilder: FormBuilder,
2123
private router: Router,
@@ -35,11 +37,11 @@ export class LoginComponent implements OnInit {
3537

3638
const credentials = this.loginForm.value;
3739

38-
this.authService
40+
this.sub = this.authService
3941
.login(credentials)
4042
.pipe(
4143
delay(1500),
42-
tap(user => this.router.navigate(['/dashboard/home'])),
44+
tap(() => this.router.navigate(['/dashboard/home'])),
4345
finalize(() => (this.isLoading = false)),
4446
catchError(error => of((this.error = error)))
4547
)
@@ -52,4 +54,8 @@ export class LoginComponent implements OnInit {
5254
password: ['', Validators.required]
5355
});
5456
}
57+
58+
ngOnDestroy(): void {
59+
this.sub.unsubscribe();
60+
}
5561
}
Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Component, OnInit } from '@angular/core';
1+
import { Component } from '@angular/core';
22
import { Observable } from 'rxjs';
33
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
44

@@ -11,21 +11,24 @@ import { MyModalComponent } from '../modal/my-modal.component';
1111
templateUrl: './home.component.html',
1212
styleUrls: ['./home.component.scss']
1313
})
14-
export class HomeComponent implements OnInit {
14+
export class HomeComponent {
1515
projects$: Observable<Project[]> = this.projectService.getAll();
1616

1717
constructor(
1818
private modalService: NgbModal,
1919
private projectService: ProjectService
2020
) {}
2121

22-
ngOnInit(): void {}
23-
2422
openMyModal() {
2523
const modalRef = this.modalService.open(MyModalComponent);
2624
modalRef.componentInstance.id = 1;
27-
modalRef.result.then(result => {
28-
console.log(result);
29-
});
25+
modalRef.result.then(
26+
result => {
27+
console.log(result);
28+
},
29+
error => {
30+
console.log(error);
31+
}
32+
);
3033
}
3134
}
Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
1-
import { Injectable, } from '@angular/core';
2-
import { ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot } from '@angular/router';
1+
import { Injectable } from '@angular/core';
2+
import {
3+
ActivatedRouteSnapshot,
4+
Resolve,
5+
Router,
6+
RouterStateSnapshot
7+
} from '@angular/router';
38
import { Observable } from 'rxjs';
49
import { catchError } from 'rxjs/operators';
510

@@ -10,17 +15,14 @@ import { ProjectService } from '@data/service/project.service';
1015
providedIn: 'root'
1116
})
1217
export class ProjectResolver implements Resolve<Project> {
13-
constructor(
14-
private projectService: ProjectService,
15-
private router: Router
16-
) { }
18+
constructor(private projectService: ProjectService, private router: Router) {}
1719

1820
resolve(
1921
route: ActivatedRouteSnapshot,
2022
state: RouterStateSnapshot
2123
): Observable<any> {
22-
23-
return this.projectService.getSingle(route.params['id'])
24-
.pipe(catchError((err) => this.router.navigateByUrl('/')));
24+
return this.projectService
25+
.getSingle(route.params['id'])
26+
.pipe(catchError(() => this.router.navigateByUrl('/')));
2527
}
2628
}

src/app/shared/component/control-messages/control-messages.component.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,19 @@ import { ValidationService } from '../../service/validation.service';
88
styleUrls: ['./control-messages.component.scss']
99
})
1010
export class ControlMessagesComponent {
11-
@Input()
12-
public control: FormControl;
13-
@Input()
14-
public labelName?: string;
11+
@Input() control: FormControl;
12+
@Input() labelName?: string;
1513

1614
get errorMessage(): boolean {
1715
for (const propertyName in this.control.errors) {
18-
if (this.control.errors.hasOwnProperty(propertyName) && this.control.touched) {
16+
if (
17+
this.control.errors.hasOwnProperty(propertyName) &&
18+
this.control.touched
19+
) {
1920
return ValidationService.getValidationErrorMessage(
2021
propertyName,
2122
this.control.errors[propertyName],
22-
this.labelName,
23+
this.labelName
2324
);
2425
}
2526
}

0 commit comments

Comments
 (0)