From f9b9e50935d40e318ab4c70ceb141468ca145aa3 Mon Sep 17 00:00:00 2001 From: David Correa Date: Mon, 3 Jul 2023 21:26:31 +0200 Subject: [PATCH 1/2] Avatar logic added --- .gitignore | 1 + Wordle+/django/avatars/avatars/guts-icon.jpg | Bin 35038 -> 0 bytes .../avatars/avatars/guts-icon_pPjMhWI.jpg | Bin 35038 -> 0 bytes Wordle+/django/djapi/views.py | 31 ++++--- .../app/pages/edit-user/edit-user.page.html | 22 ++++- .../app/pages/edit-user/edit-user.page.scss | 15 ++++ .../src/app/pages/edit-user/edit-user.page.ts | 77 ++++++++++++++---- .../ionic-app/src/app/pages/home/home.page.ts | 2 +- .../src/app/pages/login/login.page.ts | 6 +- .../src/app/pages/register/register.page.ts | 2 +- .../ionic-app/src/app/services/api.service.ts | 5 +- .../src/app/services/storage.service.ts | 4 +- .../ionic/ionic-app/src/app/tab1/tab1.page.ts | 29 ++++--- 13 files changed, 146 insertions(+), 48 deletions(-) delete mode 100644 Wordle+/django/avatars/avatars/guts-icon.jpg delete mode 100644 Wordle+/django/avatars/avatars/guts-icon_pPjMhWI.jpg diff --git a/.gitignore b/.gitignore index 81a18a7..5f281b5 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ Wordle+/django/djapi/__pycache__ Wordle+/django/djapi/migrations/ Wordle+/ionic/ionic-app/src/env.json Wordle+/ionic/ionic-app/src/assets/words.json +Wordle+/django/avatars/avatars/ diff --git a/Wordle+/django/avatars/avatars/guts-icon.jpg b/Wordle+/django/avatars/avatars/guts-icon.jpg deleted file mode 100644 index 6e9ca3f5d9f85590ae1fc61700af85c97bec808a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35038 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 -
+
+ + Change Info +
@@ -36,5 +39,22 @@
+ + + + Change Avatar + + + + Current Avatar + + + + + + + Upload New Avatar + +
diff --git a/Wordle+/ionic/ionic-app/src/app/pages/edit-user/edit-user.page.scss b/Wordle+/ionic/ionic-app/src/app/pages/edit-user/edit-user.page.scss index 922dbab..ccfbaa9 100644 --- a/Wordle+/ionic/ionic-app/src/app/pages/edit-user/edit-user.page.scss +++ b/Wordle+/ionic/ionic-app/src/app/pages/edit-user/edit-user.page.scss @@ -7,4 +7,19 @@ ion-content{ padding-top: 1vh; padding-bottom: 1vh; border: none; +} + +.edit-container{ + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; +} + +ion-card{ + margin: 5vh; +} + +ion-button{ + --background: var(--ion-color-turquoise-dark); } \ No newline at end of file diff --git a/Wordle+/ionic/ionic-app/src/app/pages/edit-user/edit-user.page.ts b/Wordle+/ionic/ionic-app/src/app/pages/edit-user/edit-user.page.ts index b50a8cf..cc2fc62 100644 --- a/Wordle+/ionic/ionic-app/src/app/pages/edit-user/edit-user.page.ts +++ b/Wordle+/ionic/ionic-app/src/app/pages/edit-user/edit-user.page.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, ElementRef, OnInit, ViewChild } from '@angular/core'; import { FormGroup, FormBuilder, Validators } from '@angular/forms'; import { Router } from '@angular/router'; import { ApiService } from 'src/app/services/api.service'; @@ -14,18 +14,23 @@ import { ToastService } from 'src/app/services/toast.service'; export class EditUserPage implements OnInit { userInfo: any = {}; userInfoForm: FormGroup; + avatarPreview: string | null = null; + @ViewChild('avatarInput', { static: false }) avatarInput!: ElementRef; - constructor(private apiService: ApiService, - private storageService: StorageService, + constructor( + private apiService: ApiService, + private storageService: StorageService, private router: Router, private toastService: ToastService, - private formBuilder: FormBuilder) { - this.userInfoForm = this.formBuilder.group({ - email: ['', [Validators.required, Validators.email]], - firstName: ['', [Validators.required, Validators.maxLength(20)]], - lastName: ['', [Validators.required, Validators.maxLength(20)]], - }); - } + private formBuilder: FormBuilder + ) { + this.userInfoForm = this.formBuilder.group({ + email: ['', [Validators.required, Validators.email]], + firstName: ['', [Validators.required, Validators.maxLength(20)]], + lastName: ['', [Validators.required, Validators.maxLength(20)]], + avatar: [null] + }); + } ngOnInit() { this.getUserInfo(); @@ -40,6 +45,11 @@ export class EditUserPage implements OnInit { lastName: this.userInfo.last_name, }); }); + const avatarUrl = await this.storageService.getAvatarUrl(); + console.log(avatarUrl); + if (avatarUrl) { + this.avatarPreview = avatarUrl; + } } async saveUserInfo() { @@ -48,23 +58,56 @@ export class EditUserPage implements OnInit { const firstName = this.userInfoForm.get('firstName').value; const lastName = this.userInfoForm.get('lastName').value; const body = { - 'email': email, - 'first_name': firstName, - 'last_name': lastName + email: email, + first_name: firstName, + last_name: lastName }; - (await this.apiService.updateUserInfo(body)).subscribe( () => { - this.toastService.showToast('Information updated succesfully!', 2000, 'top'); + this.toastService.showToast('Information updated successfully!', 2000, 'top'); this.router.navigate(['/tabs/settings']); }, (error) => { - this.toastService.showToast('An error was generated', 2000, 'top'); + this.toastService.showToast('An error occurred', 2000, 'top'); console.error('Error saving the information:', error); } ); } else { - console.error('Formulario inválido'); + console.error('Invalid form'); } } + + async uploadAvatar() { + const file = this.avatarInput.nativeElement.files[0]; + if (file) { + console.log(file); + const reader = new FileReader(); + reader.onloadend = () => { + const avatarData = reader.result as string; + console.log(avatarData); + this.saveAvatar(avatarData); + }; + reader.readAsDataURL(file); + } + } + + async saveAvatar(avatarData: string) { + try { + await (await this.apiService.saveAvatarImage(avatarData)).toPromise(); + this.storageService.setAvatarUrl(avatarData); + this.toastService.showToast('Avatar updated successfully!', 2000, 'top'); + this.getUserInfo(); // Refresh user info to update avatar preview + this.router.navigate(['/tabs/main'], { queryParams: { avatar: 'true' } }); + } catch (error) { + console.error('Error uploading avatar:', error); + } + } + + readAndPreviewAvatar(file: File) { + const reader = new FileReader(); + reader.onloadend = () => { + this.avatarPreview = reader.result as string; + }; + reader.readAsDataURL(file); + } } diff --git a/Wordle+/ionic/ionic-app/src/app/pages/home/home.page.ts b/Wordle+/ionic/ionic-app/src/app/pages/home/home.page.ts index 9705173..b05d91b 100644 --- a/Wordle+/ionic/ionic-app/src/app/pages/home/home.page.ts +++ b/Wordle+/ionic/ionic-app/src/app/pages/home/home.page.ts @@ -22,7 +22,7 @@ export class HomePage { } else { this.router.navigateByUrl('/tabs'); } - }, 2000); + }, 4000); } diff --git a/Wordle+/ionic/ionic-app/src/app/pages/login/login.page.ts b/Wordle+/ionic/ionic-app/src/app/pages/login/login.page.ts index 736891f..3974eed 100644 --- a/Wordle+/ionic/ionic-app/src/app/pages/login/login.page.ts +++ b/Wordle+/ionic/ionic-app/src/app/pages/login/login.page.ts @@ -56,6 +56,7 @@ export class LoginPage implements OnInit { this.apiService.login(credentials).subscribe( async (response) => { + // Store the token in the local storage this.errorMessage = '' const encryptedToken = this.encryptionService.encryptData(response.token); @@ -72,7 +73,10 @@ export class LoginPage implements OnInit { await this.storageService.setXP(response.xp); // Rank is calculated in the frontend } - this.router.navigateByUrl(''); + this.isLoading = false; + setTimeout(async () => { + this.router.navigate(['/tabs/main'], { queryParams: { avatar: 'true' } }); + }, 2000); }, (error) => { console.error('Log in error', error); diff --git a/Wordle+/ionic/ionic-app/src/app/pages/register/register.page.ts b/Wordle+/ionic/ionic-app/src/app/pages/register/register.page.ts index 7df82a0..d9d662f 100644 --- a/Wordle+/ionic/ionic-app/src/app/pages/register/register.page.ts +++ b/Wordle+/ionic/ionic-app/src/app/pages/register/register.page.ts @@ -23,7 +23,7 @@ export class RegisterPage implements OnInit{ ngOnInit() { // Define the fields of the form this.registerForm = this.formBuilder.group({ - username: ['', [Validators.required, Validators.minLength(4)], Validators.maxLength(10)], + username: ['', [Validators.required, Validators.minLength(4),Validators.maxLength(10)]], email: ['', [Validators.required, Validators.email]], first_name: ['', Validators.required], last_name: ['', Validators.required], diff --git a/Wordle+/ionic/ionic-app/src/app/services/api.service.ts b/Wordle+/ionic/ionic-app/src/app/services/api.service.ts index 9b116bb..dbd83ea 100644 --- a/Wordle+/ionic/ionic-app/src/app/services/api.service.ts +++ b/Wordle+/ionic/ionic-app/src/app/services/api.service.ts @@ -66,7 +66,8 @@ import { EncryptionService } from './encryption.service'; } async saveAvatarImage(imageData: string): Promise> { - const url = `${this.baseURL}/api/avatar/`; + const userId = await this.storageService.getUserID(); + const url = `${this.baseURL}/api/avatar/${userId}/`; const accessToken = await this.storageService.getAccessToken(); if (!accessToken) { return throwError('Access token not found'); @@ -76,7 +77,7 @@ import { EncryptionService } from './encryption.service'; Authorization: `Token ${decryptedToken}`, 'Content-Type': 'application/json' }); - const body = { image_data: imageData }; + const body = { avatar: imageData }; return this.http.post(url, body, { headers }); } diff --git a/Wordle+/ionic/ionic-app/src/app/services/storage.service.ts b/Wordle+/ionic/ionic-app/src/app/services/storage.service.ts index c8c4d25..c72db1f 100644 --- a/Wordle+/ionic/ionic-app/src/app/services/storage.service.ts +++ b/Wordle+/ionic/ionic-app/src/app/services/storage.service.ts @@ -143,8 +143,8 @@ export class StorageService { } // Avatar - async setAvatarUrl(imageData: string) { - await this._storage?.set('avatarUrl', imageData); + async setAvatarUrl(image: string) { + await this._storage?.set('avatarUrl', image); } async getAvatarUrl(): Promise { diff --git a/Wordle+/ionic/ionic-app/src/app/tab1/tab1.page.ts b/Wordle+/ionic/ionic-app/src/app/tab1/tab1.page.ts index 346ac48..cf8eba9 100644 --- a/Wordle+/ionic/ionic-app/src/app/tab1/tab1.page.ts +++ b/Wordle+/ionic/ionic-app/src/app/tab1/tab1.page.ts @@ -29,7 +29,7 @@ export class Tab1Page implements OnInit{ private storageService: StorageService, private apiService: ApiService, public popoverController: PopoverController, - private notificationService: NotificationService + private notificationService: NotificationService, ) {} // Change background img depending on the width @@ -39,22 +39,19 @@ export class Tab1Page implements OnInit{ } else { this.backgroundImage = '../../assets/background_wordle_horizontal.png'; } - - // Only fetchs the avatar if necessary - const storedAvatarUrl = await this.storageService.getAvatarUrl(); - if (storedAvatarUrl) { - this.avatarImage = storedAvatarUrl; - } else { - await this.loadAvatarImage(); - } + this.getAvatarImage(); // Optional param to update the player info: useful when // finishing a game this.route.queryParams.subscribe(async params => { const refresh = params['refresh']; + const avatar = params['avatar']; if (refresh === 'true') { await this.ionViewWillEnter(); } + if (avatar === 'true') { + this.getAvatarImage(); + } }); } @@ -70,6 +67,16 @@ export class Tab1Page implements OnInit{ this.notificationService.refreshNotifications(); } + async getAvatarImage() { + // Only fetchs the avatar if necessary + const storedAvatarUrl = await this.storageService.getAvatarUrl(); + if (storedAvatarUrl) { + this.avatarImage = storedAvatarUrl; + } else { + await this.loadAvatarImage(); + } + } + // Popover of word length selection async handleSelectionPopover(event: any) { const popover = await this.popoverController.create({ @@ -94,10 +101,12 @@ export class Tab1Page implements OnInit{ } async loadAvatarImage() { + console.log('loading avatar'); (await this.apiService.getAvatarImage()).subscribe( image => { if (image) { - this.avatarImage = 'data:image/png;base64,' + image; + console.log('api'); + this.avatarImage = image; this.storageService.setAvatarUrl(this.avatarImage); } else { this.avatarImage = '../../assets/avatar.png'; // Default avatar image From 6fb310598610dcbe304f1aa9141992e8aa7f8cd1 Mon Sep 17 00:00:00 2001 From: David Correa Date: Mon, 3 Jul 2023 21:34:53 +0200 Subject: [PATCH 2/2] Removed logs --- Wordle+/django/djapi/views.py | 5 ++--- .../ionic-app/src/app/pages/edit-user/edit-user.page.ts | 2 -- Wordle+/ionic/ionic-app/src/app/pages/login/login.page.ts | 4 +--- .../ionic/ionic-app/src/app/services/notification.service.ts | 1 - Wordle+/ionic/ionic-app/src/app/tab1/tab1.page.ts | 3 --- 5 files changed, 3 insertions(+), 12 deletions(-) diff --git a/Wordle+/django/djapi/views.py b/Wordle+/django/djapi/views.py index 24b9ba0..58edbfb 100644 --- a/Wordle+/django/djapi/views.py +++ b/Wordle+/django/djapi/views.py @@ -187,8 +187,6 @@ def create(self, request): serializer.save(player=player) return Response(serializer.data, status=201) - - class AvatarView(APIView): permission_classes = [permissions.IsAuthenticated] @@ -215,7 +213,7 @@ def post(self, request, user_id): # Delete the existing avatar if it exists if user.avatar: user.avatar.delete() - + # Save the avatar image without encoding or decoding filename = f'{user_id}_avatar.png' user.avatar.save(filename, ContentFile(avatar_data.encode('utf-8'))) @@ -226,6 +224,7 @@ def post(self, request, user_id): return Response({'detail': 'You do not have permission to upload an avatar.'}, status=403) except CustomUser.DoesNotExist: return Response({'detail': 'The specified user does not exist.'}, status=404) + class NotificationsViewSet(viewsets.ModelViewSet): queryset = Notifications.objects.all() serializer_class = NotificationsSerializer diff --git a/Wordle+/ionic/ionic-app/src/app/pages/edit-user/edit-user.page.ts b/Wordle+/ionic/ionic-app/src/app/pages/edit-user/edit-user.page.ts index cc2fc62..1c2cf85 100644 --- a/Wordle+/ionic/ionic-app/src/app/pages/edit-user/edit-user.page.ts +++ b/Wordle+/ionic/ionic-app/src/app/pages/edit-user/edit-user.page.ts @@ -46,7 +46,6 @@ export class EditUserPage implements OnInit { }); }); const avatarUrl = await this.storageService.getAvatarUrl(); - console.log(avatarUrl); if (avatarUrl) { this.avatarPreview = avatarUrl; } @@ -80,7 +79,6 @@ export class EditUserPage implements OnInit { async uploadAvatar() { const file = this.avatarInput.nativeElement.files[0]; if (file) { - console.log(file); const reader = new FileReader(); reader.onloadend = () => { const avatarData = reader.result as string; diff --git a/Wordle+/ionic/ionic-app/src/app/pages/login/login.page.ts b/Wordle+/ionic/ionic-app/src/app/pages/login/login.page.ts index 3974eed..3530141 100644 --- a/Wordle+/ionic/ionic-app/src/app/pages/login/login.page.ts +++ b/Wordle+/ionic/ionic-app/src/app/pages/login/login.page.ts @@ -74,9 +74,7 @@ export class LoginPage implements OnInit { // Rank is calculated in the frontend } this.isLoading = false; - setTimeout(async () => { - this.router.navigate(['/tabs/main'], { queryParams: { avatar: 'true' } }); - }, 2000); + this.router.navigate(['/tabs/main'], { queryParams: { avatar: 'true' } }); }, (error) => { console.error('Log in error', error); diff --git a/Wordle+/ionic/ionic-app/src/app/services/notification.service.ts b/Wordle+/ionic/ionic-app/src/app/services/notification.service.ts index 15ea85f..07a984f 100644 --- a/Wordle+/ionic/ionic-app/src/app/services/notification.service.ts +++ b/Wordle+/ionic/ionic-app/src/app/services/notification.service.ts @@ -18,7 +18,6 @@ export class NotificationService { resolve(this.notifications); } else { const storedNotifications = await this.storageService.getNotifications(); - console.log(storedNotifications); if (storedNotifications) { this.notifications = storedNotifications; resolve(this.notifications); diff --git a/Wordle+/ionic/ionic-app/src/app/tab1/tab1.page.ts b/Wordle+/ionic/ionic-app/src/app/tab1/tab1.page.ts index cf8eba9..336643b 100644 --- a/Wordle+/ionic/ionic-app/src/app/tab1/tab1.page.ts +++ b/Wordle+/ionic/ionic-app/src/app/tab1/tab1.page.ts @@ -97,15 +97,12 @@ export class Tab1Page implements OnInit{ }); await popover.present(); - } async loadAvatarImage() { - console.log('loading avatar'); (await this.apiService.getAvatarImage()).subscribe( image => { if (image) { - console.log('api'); this.avatarImage = image; this.storageService.setAvatarUrl(this.avatarImage); } else {