diff --git a/src/app/components/profile/profile.component.ts b/src/app/components/profile/profile.component.ts index 948e830..e73df0b 100644 --- a/src/app/components/profile/profile.component.ts +++ b/src/app/components/profile/profile.component.ts @@ -8,7 +8,7 @@ import { ProfileService } from 'src/app/services/profile/profile.service'; import { HttpClient } from '@angular/common/http'; import { environment } from 'src/environments/environment'; import {MatSnackBar} from '@angular/material/snack-bar'; -import { reduce } from 'rxjs/operators'; +import {SelfService} from '../../services/selfservice/self.service'; @Component({ selector: 'app-profile', @@ -33,7 +33,8 @@ export class ProfileComponent implements OnInit { private router: Router, private requestService: RequestService, private data: DatasharingService, - private profileService: ProfileService) { + private profileService: ProfileService, + private selfService: SelfService) { router.events.forEach((event) => { // check if the user is on the profile page (of userY) and routes to the page of userY (e.g. his own page) if (event instanceof NavigationEnd) { @@ -69,18 +70,13 @@ export class ProfileComponent implements OnInit { user.allowedToSendRequest = false; this.requestService.sendFriendRequest(user); } - onFileInput(event) { - console.log(event.target.files[0]); - const formData: any = new FormData(); - formData.append('profilePicture', event.target.files[0]); - this.http.post(environment.greenvironmentUrl + '/upload', formData).subscribe( - (response: any) => { + onFileInput(event) { + this.selfService.changeProfilePicture(event.target.files[0]).subscribe((response) => { this.userProfile.profilePicture = environment.greenvironmentUrl + response.fileName; - }, - (error) => { + }, (error) => { this._snackBar.open('failed to upload picture', 'okay', { - duration: 3000 + duration: 3000 }); }); } diff --git a/src/app/models/interfaces/IFileUploadResult.ts b/src/app/models/interfaces/IFileUploadResult.ts new file mode 100644 index 0000000..fe564c6 --- /dev/null +++ b/src/app/models/interfaces/IFileUploadResult.ts @@ -0,0 +1,5 @@ +export interface IFileUploadResult { + success: boolean; + fileName?: string; + error?: string; +} diff --git a/src/app/services/selfservice/self.service.ts b/src/app/services/selfservice/self.service.ts index 133f8ad..d2c4a22 100644 --- a/src/app/services/selfservice/self.service.ts +++ b/src/app/services/selfservice/self.service.ts @@ -8,6 +8,7 @@ import {FriendInfo} from 'src/app/models/friendinfo'; import {HttpClient} from '@angular/common/http'; import {tap} from 'rxjs/operators'; import {BaseService} from '../base.service'; +import {IFileUploadResult} from '../../models/interfaces/IFileUploadResult'; const getSelfGraphqlQuery = `{ getSelf{ @@ -65,17 +66,18 @@ export class SelfService extends BaseService { return this.http.post(url, SelfService.buildGetSelfBody(), {headers: this.headers}) .pipe(tap(response => { - this.stillLoggedIn(); this.updateUserInfo(response); - }, error => { - this.notLoggedIn(); })); } - public stillLoggedIn() { - } - - public notLoggedIn() { + /** + * Uploads a file as a profile picture + * @param file + */ + public changeProfilePicture(file: any) { + const formData: any = new FormData(); + formData.append('profilePicture', file); + return this.http.post(environment.greenvironmentUrl + '/upload', formData); } /** @@ -87,26 +89,4 @@ export class SelfService extends BaseService { user.assignFromResponse(response.data.getSelf); this.data.changeUserInfo(user); } - - public fakeLogin() { - const user: User = new User(); - let friendRequest: FriendRequest = new FriendRequest(); - user.loggedIn = true; - user.userID = 1; - user.username = 'Rapier'; - user.handle = 'rapier123'; - user.email = 'r@r.com'; - user.points = 100; - user.level = 3; - user.friends.push(new FriendInfo(1, 'Freund77', 4, 'lalala')); - - friendRequest = new FriendRequest(); - friendRequest.id = 10; - friendRequest.senderUserID = 99; - friendRequest.senderUsername = 'Löwe'; - friendRequest.senderHandle = 'loewe123'; - user.receivedRequests.push(friendRequest); - - this.data.changeUserInfo(user); - } }