aboutsummaryrefslogtreecommitdiff
path: root/src/DevHive.Angular
diff options
context:
space:
mode:
authorSyndamia <kamen.d.mladenov@protonmail.com>2021-01-30 21:18:43 +0200
committerSyndamia <kamen.d.mladenov@protonmail.com>2021-01-30 21:18:43 +0200
commitdf80b4929549a01602f47dc58feffa51a00ad609 (patch)
treee0688d3f7f1547a3bd8dac61244dcd0205121407 /src/DevHive.Angular
parent5e07474a813e82dd2071c5d9d233beccbe6a8430 (diff)
downloadDevHive-df80b4929549a01602f47dc58feffa51a00ad609.tar
DevHive-df80b4929549a01602f47dc58feffa51a00ad609.tar.gz
DevHive-df80b4929549a01602f47dc58feffa51a00ad609.zip
Implemented feed service to get the feed; the posts in the feed page are now loaded (aren't static anymore)
Diffstat (limited to 'src/DevHive.Angular')
-rw-r--r--src/DevHive.Angular/src/app/app-constants.module.ts1
-rw-r--r--src/DevHive.Angular/src/app/components/feed/feed.component.html4
-rw-r--r--src/DevHive.Angular/src/app/components/feed/feed.component.ts29
-rw-r--r--src/DevHive.Angular/src/app/services/feed.service.ts25
4 files changed, 46 insertions, 13 deletions
diff --git a/src/DevHive.Angular/src/app/app-constants.module.ts b/src/DevHive.Angular/src/app/app-constants.module.ts
index 28540c4..cbb1ec1 100644
--- a/src/DevHive.Angular/src/app/app-constants.module.ts
+++ b/src/DevHive.Angular/src/app/app-constants.module.ts
@@ -11,5 +11,6 @@ export class AppConstants {
public static API_POST_URL = AppConstants.BASE_API_URL + '/Post';
public static API_FEED_URL = AppConstants.BASE_API_URL + '/Feed';
+ public static PAGE_SIZE = 5;
public static FALLBACK_PROFILE_ICON = 'assets/images/feed/profile-pic.png';
}
diff --git a/src/DevHive.Angular/src/app/components/feed/feed.component.html b/src/DevHive.Angular/src/app/components/feed/feed.component.html
index b82b189..35448b7 100644
--- a/src/DevHive.Angular/src/app/components/feed/feed.component.html
+++ b/src/DevHive.Angular/src/app/components/feed/feed.component.html
@@ -23,8 +23,8 @@
</a>
</nav>
<div id="posts" class="scroll-standalone">
- <div *ngFor="let post of posts" class="post">
- <app-post></app-post>
+ <div *ngFor="let friendPost of posts" class="post">
+ <app-post [paramId]="friendPost.postId.toString()"></app-post>
</div>
</div>
</div>
diff --git a/src/DevHive.Angular/src/app/components/feed/feed.component.ts b/src/DevHive.Angular/src/app/components/feed/feed.component.ts
index b027e5b..5093b21 100644
--- a/src/DevHive.Angular/src/app/components/feed/feed.component.ts
+++ b/src/DevHive.Angular/src/app/components/feed/feed.component.ts
@@ -6,6 +6,7 @@ import { PostComponent } from '../post/post.component';
import { UserService } from '../../services/user.service';
import { AppConstants } from 'src/app/app-constants.module';
import {HttpErrorResponse} from '@angular/common/http';
+import {FeedService} from 'src/app/services/feed.service';
@Component({
selector: 'app-feed',
@@ -14,26 +15,24 @@ import {HttpErrorResponse} from '@angular/common/http';
})
export class FeedComponent implements OnInit {
private _title = 'Feed';
+ private _timeLoaded: string;
public dataArrived = false;
public user: User;
- public posts: PostComponent[];
+ public posts: PostComponent[] = [];
- constructor(private _titleService: Title, private _router: Router, private _userService: UserService) {
+ constructor(private _titleService: Title, private _router: Router, private _userService: UserService, private _feedService: FeedService) {
this._titleService.setTitle(this._title);
}
ngOnInit(): void {
this.user = this._userService.getDefaultUser();
- this.posts = [
- new PostComponent(),
- new PostComponent(),
- new PostComponent(),
- new PostComponent(),
- ];
+ const now = new Date();
+ now.setHours(now.getHours() + 2); // accounting for eastern european timezone
+ this._timeLoaded = now.toISOString();
if (sessionStorage.getItem('UserCred')) {
this._userService.getUserFromSessionStorageRequest().subscribe(
- (res: object) => this.finishUserLoading(res),
+ (res: object) => this.loadFeed(res),
(err: HttpErrorResponse) => this.bailOnBadToken()
);
} else {
@@ -41,8 +40,18 @@ export class FeedComponent implements OnInit {
}
}
- private finishUserLoading(res: object): void {
+ private loadFeed(res: object): void {
Object.assign(this.user, res);
+
+ this._feedService.getUserFeedFromSessionStorageRequest(1, this._timeLoaded, AppConstants.PAGE_SIZE).subscribe(
+ (result: object) => {
+ this.posts = Object.values(result)[0];
+ this.finishUserLoading();
+ }
+ );
+ }
+
+ private finishUserLoading(): void {
if (this.user.imageUrl === '') {
this.user.imageUrl = AppConstants.FALLBACK_PROFILE_ICON;
}
diff --git a/src/DevHive.Angular/src/app/services/feed.service.ts b/src/DevHive.Angular/src/app/services/feed.service.ts
index 42757eb..cb82bcd 100644
--- a/src/DevHive.Angular/src/app/services/feed.service.ts
+++ b/src/DevHive.Angular/src/app/services/feed.service.ts
@@ -1,7 +1,11 @@
-import {HttpClient, HttpParams} from '@angular/common/http';
+import {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';
import {Injectable} from '@angular/core';
+import {Guid} from 'guid-typescript';
import {Observable} from 'rxjs';
+import {IJWTPayload} from 'src/interfaces/jwt-payload';
import {AppConstants} from '../app-constants.module';
+import jwt_decode from 'jwt-decode';
+import {IUserCredentials} from 'src/interfaces/user-credentials';
@Injectable({
providedIn: 'root'
@@ -9,6 +13,25 @@ import {AppConstants} from '../app-constants.module';
export class FeedService {
constructor(private http: HttpClient) { }
+ getUserFeedFromSessionStorageRequest(pageNumber: number, firstTimeIssued: string, pageSize: number): Observable<object> {
+ const jwt: IJWTPayload = { token: sessionStorage.getItem('UserCred') ?? '' };
+ const userCred = jwt_decode<IUserCredentials>(jwt.token);
+ return this.getUserFeedRequest(userCred.ID, jwt.token, pageNumber, firstTimeIssued, pageSize);
+ }
+
+ getUserFeedRequest(userId: Guid, authToken: string, pageNumber: number, firstTimeIssued: string, pageSize: number): Observable<object> {
+ const body = {
+ pageNumber: pageNumber,
+ firstPageTimeIssued: firstTimeIssued,
+ pageSize: pageSize
+ };
+ const options = {
+ params: new HttpParams().set('UserId', userId.toString()),
+ headers: new HttpHeaders().set('Authorization', 'Bearer ' + authToken)
+ };
+ return this.http.post(AppConstants.API_FEED_URL + '/GetPosts', body, options);
+ }
+
getUserPostsRequest(userName: string, pageNumber: number, firstTimeIssued: string, pageSize: number): Observable<object> {
const body = {
pageNumber: pageNumber,