diff --git a/backend/codiki-application/src/main/java/org/codiki/application/picture/PictureUseCases.java b/backend/codiki-application/src/main/java/org/codiki/application/picture/PictureUseCases.java index aaa229b..0c60059 100644 --- a/backend/codiki-application/src/main/java/org/codiki/application/picture/PictureUseCases.java +++ b/backend/codiki-application/src/main/java/org/codiki/application/picture/PictureUseCases.java @@ -1,6 +1,7 @@ package org.codiki.application.picture; import java.io.File; +import java.time.ZonedDateTime; import java.util.List; import java.util.Optional; import java.util.UUID; @@ -31,6 +32,7 @@ public class PictureUseCases { .withId(UUID.randomUUID()) .withPublisher(authenticatedUser) .withContentFile(pictureFile) + .withPublicationDate(ZonedDateTime.now()) .build(); picturePort.save(newPicture); diff --git a/backend/codiki-infrastructure/src/main/java/org/codiki/infrastructure/picture/model/PictureEntity.java b/backend/codiki-infrastructure/src/main/java/org/codiki/infrastructure/picture/model/PictureEntity.java index f81c1f2..9e0a163 100644 --- a/backend/codiki-infrastructure/src/main/java/org/codiki/infrastructure/picture/model/PictureEntity.java +++ b/backend/codiki-infrastructure/src/main/java/org/codiki/infrastructure/picture/model/PictureEntity.java @@ -31,6 +31,7 @@ public class PictureEntity { public PictureEntity(Picture picture) { id = picture.id(); publisherId = picture.publisherId(); + publishedAt = picture.publishedAt(); } public Picture toDomain() { diff --git a/frontend/src/app/core/interceptor/jwt.interceptor.ts b/frontend/src/app/core/interceptor/jwt.interceptor.ts index 893cbc0..cbd3f24 100644 --- a/frontend/src/app/core/interceptor/jwt.interceptor.ts +++ b/frontend/src/app/core/interceptor/jwt.interceptor.ts @@ -49,6 +49,7 @@ export class JwtInterceptor implements HttpInterceptor { this.userRestService.refreshToken(refreshTokenRequest) .then(refreshTokenResponse => { this.authenticationService.authenticate(refreshTokenResponse.accessToken, refreshTokenResponse.refreshToken); + this.refreshTokenSubject.next(refreshTokenResponse.accessToken); }) .catch(() => { return this.handleNoRefreshToken(initialError); diff --git a/frontend/src/app/core/service/authentication.service.ts b/frontend/src/app/core/service/authentication.service.ts index a94476a..d562abc 100644 --- a/frontend/src/app/core/service/authentication.service.ts +++ b/frontend/src/app/core/service/authentication.service.ts @@ -29,16 +29,7 @@ export class AuthenticationService { } isAuthenticated(): boolean { - let result = false; - - const userDetails = this.extractUserDetails(); - - if (userDetails) { - const authenticationExpiration = new Date(userDetails.exp * 1000); - result = authenticationExpiration > new Date(); - } - - return result; + return !!localStorage.getItem(JWT_PARAM); } getAuthenticatedUser(): User | undefined { diff --git a/frontend/src/app/pages/publication-edition/picture-selection-dialog/picture-selection-dialog.component.ts b/frontend/src/app/pages/publication-edition/picture-selection-dialog/picture-selection-dialog.component.ts index 75ab064..b0c0c2e 100644 --- a/frontend/src/app/pages/publication-edition/picture-selection-dialog/picture-selection-dialog.component.ts +++ b/frontend/src/app/pages/publication-edition/picture-selection-dialog/picture-selection-dialog.component.ts @@ -53,7 +53,18 @@ export class PictureSelectionDialog implements OnInit { this.dialogRef.close(); } - uploadPicture(file: any): void { - console.log("uploadFile", file); + uploadPicture(fileSelectionEvent: any): void { + const pictureFile = fileSelectionEvent.target.files[0]; + if (pictureFile) { + this.pictureRestService.uploadPicture(pictureFile) + .then(pictureId => { + this.dialogRef.close(pictureId); + }) + .catch(error => { + const errorMessage = 'A technical error occured while uploading your picture.'; + console.error(errorMessage, error); + this.snackBar.open(errorMessage, 'Close', { duration: 5000 }); + }); + } } } \ No newline at end of file