From ca9e8a51b923ea3396289b4276974993f8e06b1c Mon Sep 17 00:00:00 2001 From: ybchar Date: Mon, 23 Sep 2024 20:30:00 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20token=20not=20found=20throw=20=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/FcmNotificationService.java | 47 ++++++++++++------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/depromeet/stonebed/domain/fcm/application/FcmNotificationService.java b/src/main/java/com/depromeet/stonebed/domain/fcm/application/FcmNotificationService.java index 36b28624..4adb016c 100644 --- a/src/main/java/com/depromeet/stonebed/domain/fcm/application/FcmNotificationService.java +++ b/src/main/java/com/depromeet/stonebed/domain/fcm/application/FcmNotificationService.java @@ -28,6 +28,7 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; import lombok.RequiredArgsConstructor; +import org.springdoc.core.parsers.ReturnTypeParser; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; @@ -52,6 +53,7 @@ public class FcmNotificationService { private static final long FIRST_BOOST_THRESHOLD = 1; private static final long POPULAR_THRESHOLD = 1000; private static final long SUPER_POPULAR_THRESHOLD = 5000; + private final ReturnTypeParser genericReturnTypeParser; public void saveNotification( FcmNotificationType type, @@ -194,27 +196,38 @@ private long determineBoostCount(Long totalBoostCount) { return 0; } + private Optional getTokenForMember(Member member) { + return fcmTokenRepository.findByMember(member).map(FcmToken::getToken); + } + + private Optional validateTokenForMember(Member member) { + return getTokenForMember(member).filter(token -> !token.isEmpty()); + } + + private String generateDeepLink(MissionRecord missionRecord, long boostCount) { + return FcmNotification.generateDeepLink( + FcmNotificationType.BOOSTER, missionRecord.getId(), boostCount); + } + + private void createAndSendFcmMessage( + String title, String message, String token, String deepLink) { + FcmMessage fcmMessage = FcmMessage.of(title, message, token, deepLink); + sqsMessageService.sendMessage(fcmMessage); + } + private void sendBoostNotification( MissionRecord missionRecord, FcmNotificationConstants notificationConstants, long boostCount) { - String token = - fcmTokenRepository - .findByMember(missionRecord.getMember()) - .map(FcmToken::getToken) - .orElseThrow(() -> new CustomException(ErrorCode.FAILED_TO_FIND_FCM_TOKEN)); - - String deepLink = - FcmNotification.generateDeepLink( - FcmNotificationType.BOOSTER, missionRecord.getId(), boostCount); - - FcmMessage fcmMessage = - FcmMessage.of( - notificationConstants.getTitle(), - notificationConstants.getMessage(), - token, - deepLink); - sqsMessageService.sendMessage(fcmMessage); + String token = validateTokenForMember(missionRecord.getMember()).orElse(null); + if (token == null) return; + + String deepLink = generateDeepLink(missionRecord, boostCount); + createAndSendFcmMessage( + notificationConstants.getTitle(), + notificationConstants.getMessage(), + token, + deepLink); saveNotification( FcmNotificationType.BOOSTER,