diff --git a/src/main/java/org/sopt/app/application/notification/PushTokenService.java b/src/main/java/org/sopt/app/application/notification/PushTokenService.java index 3679452b..8357c457 100644 --- a/src/main/java/org/sopt/app/application/notification/PushTokenService.java +++ b/src/main/java/org/sopt/app/application/notification/PushTokenService.java @@ -38,6 +38,11 @@ public class PushTokenService { private String apiKey; + @Transactional(readOnly = true) + public boolean isExistDeviceToken(Long userId, String token) { + return pushTokenRepository.existsByUserIdAndToken(userId, token); + } + @Transactional(readOnly = true) public PushToken getDeviceToken(Long userId, String token) { return pushTokenRepository.findByUserIdAndToken(userId, token) @@ -97,22 +102,20 @@ public PushTokenResponse.StatusResponse deleteDeviceToken(PushToken pushToken) { .message(e.getResponseMessage()) .build(); } + } @Transactional - public Integer deleteAllDeviceTokenOf(User user) { + public void deleteAllDeviceTokenOf(User user) { // 기존에 저장되어 있던 Tokens -> 알림 서버에 삭제 요청 List userTokens = pushTokenRepository.findAllByUserId(user.getId()); - int failedCount = 0; - for (PushToken token : userTokens) { - PushTokenResponse.StatusResponse statusResponse = deleteDeviceToken(token); - if (!statusResponse.getSuccess()) { - failedCount += 1; + if (!userTokens.isEmpty()) { + for (PushToken token : userTokens) { + deleteDeviceToken(token); } + // 우선 서비스 DB에 있는 모든 토큰 지워버리기 + pushTokenRepository.deleteAll(userTokens); } - // 우선 서비스 DB에 있는 모든 토큰 지워버리기 - pushTokenRepository.deleteAll(userTokens); - return failedCount; } private HttpHeaders createHeadersFor(String action, String platform) { diff --git a/src/main/java/org/sopt/app/presentation/user/UserPushTokenController.java b/src/main/java/org/sopt/app/presentation/user/UserPushTokenController.java index f26585f3..fd22cf3a 100644 --- a/src/main/java/org/sopt/app/presentation/user/UserPushTokenController.java +++ b/src/main/java/org/sopt/app/presentation/user/UserPushTokenController.java @@ -56,12 +56,13 @@ public ResponseEntity deletePushToken( @AuthenticationPrincipal User user, @Valid @RequestBody PushTokenRequest.DeleteRequest deletePushTokenRequest ) { - PushToken targetPushToken = pushTokenService.getDeviceToken( - user.getId(), deletePushTokenRequest.getPushToken() - ); - val result = pushTokenService.deleteDeviceToken(targetPushToken); - val response = pushTokenResponseMapper.ofStatus(result); - return ResponseEntity.status(HttpStatus.OK).body(response); + if (pushTokenService.isExistDeviceToken(user.getId(), deletePushTokenRequest.getPushToken())) { + PushToken targetPushToken = pushTokenService.getDeviceToken( + user.getId(), deletePushTokenRequest.getPushToken() + ); + pushTokenService.deleteDeviceToken(targetPushToken); + } + return ResponseEntity.status(HttpStatus.OK).body(null); } } diff --git a/src/main/java/org/sopt/app/presentation/user/UserWithdrawController.java b/src/main/java/org/sopt/app/presentation/user/UserWithdrawController.java index b1ce2aba..39ff9a48 100644 --- a/src/main/java/org/sopt/app/presentation/user/UserWithdrawController.java +++ b/src/main/java/org/sopt/app/presentation/user/UserWithdrawController.java @@ -41,12 +41,12 @@ public ResponseEntity logout( @AuthenticationPrincipal User user, @Valid @RequestBody PushTokenRequest.DeleteRequest deleteRequest ) { - PushToken targetPushToken = pushTokenService.getDeviceToken( - user.getId(), deleteRequest.getPushToken() - ); -// val result = - pushTokenService.deleteDeviceToken(targetPushToken); -// val response = pushTokenResponseMapper.ofStatus(result); + if (pushTokenService.isExistDeviceToken(user.getId(), deleteRequest.getPushToken())) { + PushToken targetPushToken = pushTokenService.getDeviceToken( + user.getId(), deleteRequest.getPushToken() + ); + pushTokenService.deleteDeviceToken(targetPushToken); + } return ResponseEntity.status(HttpStatus.OK).body(null); }