Merge branch 'max_dev' of Software_Engineering_I/greenvironment-frontend into master

master
Max_ES 5 years ago committed by Gitea
commit 8276c6fab0

@ -17,7 +17,7 @@
</button> </button>
</mat-menu> </mat-menu>
</div> </div>
<div mat-card-avatar (click)="showFriendProfile(group)"> <div mat-card-avatar (click)="showFriendProfile(friend)">
<img class="profile-picture" [src]="friend.profilePicture"/> <img class="profile-picture" [src]="friend.profilePicture"/>
</div> </div>
<mat-card-title (click)="showFriendProfile(friend)">{{friend.name}}</mat-card-title> <mat-card-title (click)="showFriendProfile(friend)">{{friend.name}}</mat-card-title>

@ -192,21 +192,22 @@ export class FeedService extends BaseService {
return this.postGraphql(body, null, 0) return this.postGraphql(body, null, 0)
.pipe(tap(response => { .pipe(tap(response => {
const updatedPosts = this.posts.getValue(); const updatedPosts = this.posts.getValue();
if (this.activePostList === Sort.NEW) { const post = this.constructPost(response);
const post = this.constructPost(response); this.uploadPostImage(post.id, file).subscribe((result) => {
this.uploadPostImage(post.id, file).subscribe((result) => { if (this.activePostList === Sort.NEW) {
post.mediaUrl = result.fileName; post.mediaUrl = result.fileName;
post.mediaType = result.fileName.endsWith('.png') ? 'IMAGE' : 'VIDEO'; post.mediaType = result.fileName.endsWith('.png') ? 'IMAGE' : 'VIDEO';
updatedPosts.unshift(post); updatedPosts.unshift(post);
this.posts.next(updatedPosts); this.posts.next(updatedPosts);
this.posting.next(false); this.posting.next(false);
}
}, error => { }, error => {
console.error(error); console.error(error);
this.posting.next(false); this.posting.next(false);
this.deletePost(post.id); this.deletePost(post.id);
}); });
} }
})); ));
} else if (!file) { } else if (!file) {
return this.postGraphql(body, null, 0) return this.postGraphql(body, null, 0)
.pipe(tap(response => { .pipe(tap(response => {
@ -289,7 +290,7 @@ export class FeedService extends BaseService {
{headers: this.headers}) {headers: this.headers})
.pipe(this.retryRated()) .pipe(this.retryRated())
.subscribe(response => { .subscribe(response => {
this.posts.next(this.constructAllPosts(response)); this.posts.next(this.constructAllPosts(response.data.getPosts));
this.activePostList = sort; this.activePostList = sort;
}); });
} }
@ -303,7 +304,7 @@ export class FeedService extends BaseService {
this.http.post(environment.graphQLUrl, body, {headers: this.headers}) this.http.post(environment.graphQLUrl, body, {headers: this.headers})
.pipe(this.retryRated()) .pipe(this.retryRated())
.subscribe(response => { .subscribe(response => {
const posts = this.constructAllPosts(response); const posts = this.constructAllPosts(response.data.getPosts);
const previousPosts = this.posts.getValue(); const previousPosts = this.posts.getValue();
for (const post of previousPosts.reverse()) { for (const post of previousPosts.reverse()) {
if (!posts.find(p => p.id === post.id)) { if (!posts.find(p => p.id === post.id)) {
@ -360,7 +361,7 @@ export class FeedService extends BaseService {
public constructAllPosts(response: any): Post[] { public constructAllPosts(response: any): Post[] {
const posts = new Array<Post>(); const posts = new Array<Post>();
for (const post of response.data.getPosts) { for (const post of response) {
let profilePicture: string; let profilePicture: string;
if (post.author.profilePicture) { if (post.author.profilePicture) {
profilePicture = environment.greenvironmentUrl + post.author.profilePicture; profilePicture = environment.greenvironmentUrl + post.author.profilePicture;

@ -7,6 +7,7 @@ import {User} from 'src/app/models/user';
import {Subject} from 'rxjs'; import {Subject} from 'rxjs';
import {Activity} from 'src/app/models/activity'; import {Activity} from 'src/app/models/activity';
import {BaseService} from '../base.service'; import {BaseService} from '../base.service';
import {FeedService} from 'src/app/services/feed/feed.service';
const graphqlGetProfileQuery = `query($userId: ID) { const graphqlGetProfileQuery = `query($userId: ID) {
getUser(userId:$userId){ getUser(userId:$userId){
@ -30,6 +31,7 @@ const graphqlGetProfileQuery = `query($userId: ID) {
downvotes, downvotes,
userVote, userVote,
deletable, deletable,
media {url, type},
activity{ activity{
id id
name name
@ -39,7 +41,7 @@ const graphqlGetProfileQuery = `query($userId: ID) {
author{ author{
name, name,
handle, handle,
profilePicture profilePicture,
id}, id},
createdAt createdAt
} }
@ -51,7 +53,7 @@ const graphqlGetProfileQuery = `query($userId: ID) {
}) })
export class ProfileService extends BaseService { export class ProfileService extends BaseService {
constructor(http: HttpClient) { constructor(http: HttpClient, private feedService: FeedService) {
super(http); super(http);
} }
@ -96,38 +98,7 @@ export class ProfileService extends BaseService {
const temp = new Date(Number(response.data.getUser.joinedAt)); const temp = new Date(Number(response.data.getUser.joinedAt));
const date = temp.toLocaleString('en-GB'); const date = temp.toLocaleString('en-GB');
profile.joinedAt = date; profile.joinedAt = date;
for (const post of response.data.getUser.posts) { profile.posts = this.feedService.constructAllPosts(response.data.getUser.posts);
const id: number = post.id;
const content: string = post.content;
const htmlContent: string = post.htmlContent;
const upvotes: number = post.upvotes;
const downvotes: number = post.downvotes;
const userVote: string = post.userVote;
const deletable: boolean = post.deletable;
let profilePicture: string;
if (post.author.profilePicture) {
profilePicture = environment.greenvironmentUrl + post.author.profilePicture;
} else {
profilePicture = 'assets/images/default-profilepic.svg';
}
const author = new Author(post.author.id, post.author.name, post.author.handle, profilePicture);
const ptemp = new Date(Number(post.createdAt));
const pdate = ptemp.toLocaleString('en-GB');
let activity: Activity;
if (post.activity) {
activity = new Activity(
post.activity.id,
post.activity.name,
post.activity.description,
post.activity.points);
} else {
activity = null;
}
// tslint:disable-next-line: max-line-length
posts.push(new Post(id, content, htmlContent, upvotes, downvotes, userVote, deletable, pdate, author, activity));
}
profile.posts = posts;
return profile; return profile;
} }
return null; return null;

Loading…
Cancel
Save