From c8a9075afbdb1f1549cca9e22df9347ae6aa199d Mon Sep 17 00:00:00 2001 From: "aditya.chandel" <8075870+adityachandelgit@users.noreply.github.com> Date: Wed, 15 Oct 2025 23:10:55 -0600 Subject: [PATCH] Fix email v2 --- .../booklore/repository/EmailProviderV2Repository.java | 4 +++- .../booklore/service/email/SendEmailV2Service.java | 6 +++++- .../src/app/features/settings/email/email.service.ts | 6 +++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/booklore-api/src/main/java/com/adityachandel/booklore/repository/EmailProviderV2Repository.java b/booklore-api/src/main/java/com/adityachandel/booklore/repository/EmailProviderV2Repository.java index 9e8166b05..1e14db19d 100644 --- a/booklore-api/src/main/java/com/adityachandel/booklore/repository/EmailProviderV2Repository.java +++ b/booklore-api/src/main/java/com/adityachandel/booklore/repository/EmailProviderV2Repository.java @@ -26,5 +26,7 @@ public interface EmailProviderV2Repository extends JpaRepository findAllBySharedTrueAndAdmin(); -} + @Query("SELECT e FROM EmailProviderV2Entity e WHERE e.id = :id AND e.shared = true AND e.userId IN (SELECT u.id FROM BookLoreUserEntity u WHERE u.permissions.permissionAdmin = true)") + Optional findSharedProviderById(@Param("id") Long id); +} diff --git a/booklore-api/src/main/java/com/adityachandel/booklore/service/email/SendEmailV2Service.java b/booklore-api/src/main/java/com/adityachandel/booklore/service/email/SendEmailV2Service.java index 7b1bbdf08..81cf80fe7 100644 --- a/booklore-api/src/main/java/com/adityachandel/booklore/service/email/SendEmailV2Service.java +++ b/booklore-api/src/main/java/com/adityachandel/booklore/service/email/SendEmailV2Service.java @@ -49,7 +49,11 @@ public class SendEmailV2Service { public void emailBook(SendBookByEmailRequest request) { BookLoreUser user = authenticationService.getAuthenticatedUser(); - EmailProviderV2Entity emailProvider = emailProviderRepository.findByIdAndUserId(request.getProviderId(), user.getId()).orElseThrow(() -> ApiError.EMAIL_PROVIDER_NOT_FOUND.createException(request.getProviderId())); + EmailProviderV2Entity emailProvider = emailProviderRepository.findByIdAndUserId(request.getProviderId(), user.getId()) + .orElseGet(() -> + emailProviderRepository.findSharedProviderById(request.getProviderId()) + .orElseThrow(() -> ApiError.EMAIL_PROVIDER_NOT_FOUND.createException(request.getProviderId())) + ); BookEntity book = bookRepository.findById(request.getBookId()).orElseThrow(() -> ApiError.BOOK_NOT_FOUND.createException(request.getBookId())); EmailRecipientV2Entity emailRecipient = emailRecipientRepository.findByIdAndUserId(request.getRecipientId(), user.getId()).orElseThrow(() -> ApiError.EMAIL_RECIPIENT_NOT_FOUND.createException(request.getRecipientId())); sendEmailInVirtualThread(emailProvider, emailRecipient.getEmail(), book); diff --git a/booklore-ui/src/app/features/settings/email/email.service.ts b/booklore-ui/src/app/features/settings/email/email.service.ts index f5a101e42..891e0f378 100644 --- a/booklore-ui/src/app/features/settings/email/email.service.ts +++ b/booklore-ui/src/app/features/settings/email/email.service.ts @@ -8,15 +8,15 @@ import {Observable} from 'rxjs'; }) export class EmailService { - private readonly apiUrl = `${API_CONFIG.BASE_URL}/api/v1/emails`; + private readonly apiUrl = `${API_CONFIG.BASE_URL}/api/v2/email`; private http = inject(HttpClient); emailBook(request: { bookId: number, providerId: number, recipientId: number }): Observable { - return this.http.post(`${this.apiUrl}/send-book`, request); + return this.http.post(`${this.apiUrl}/book`, request); } emailBookQuick(bookId: number): Observable { - return this.http.post(`${this.apiUrl}/send-book/${bookId}`, {}); + return this.http.post(`${this.apiUrl}/book/${bookId}`, {}); } }