Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,8 @@ public ResponseEntity<Void> logout(Principal principal,
@Valid @RequestBody LogoutRequest request) {
User user = userService.getUserOrException(Long.valueOf(principal.getName()));
String refreshToken = request.refreshToken();
userService.logout(user, refreshToken);
String deviceIdentifier = request.deviceIdentifier();
userService.logout(user, refreshToken, deviceIdentifier);
return ResponseEntity
.status(NO_CONTENT)
.build();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.websoso.WSSServer.dto.auth;

public record LogoutRequest(
String refreshToken
String refreshToken,
String deviceIdentifier
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,13 @@
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import org.websoso.WSSServer.domain.User;
import org.websoso.WSSServer.domain.UserDevice;

@Repository
public interface UserDeviceRepository extends JpaRepository<UserDevice, Long> {

Optional<UserDevice> findByDeviceIdentifier(String deviceIdentifier);
Optional<UserDevice> findByDeviceIdentifierAndUser(String deviceIdentifier, User user);

void deleteByUserAndDeviceIdentifier(User user, String deviceIdentifier);
}
20 changes: 16 additions & 4 deletions src/main/java/org/websoso/WSSServer/service/CommentService.java
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,11 @@ private void sendCommentPushMessageToFeedOwner(User user, Feed feed) {
);
notificationRepository.save(notification);

List<UserDevice> feedOwnerDevices = feedOwner.getUserDevices();
if (feedOwnerDevices.isEmpty()) {
return;
}

FCMMessageRequest fcmMessageRequest = FCMMessageRequest.of(
notificationTitle,
notificationBody,
Expand All @@ -84,8 +89,7 @@ private void sendCommentPushMessageToFeedOwner(User user, Feed feed) {
String.valueOf(notification.getNotificationId())
);

List<String> targetFCMTokens = feedOwner
.getUserDevices()
List<String> targetFCMTokens = feedOwnerDevices
.stream()
.map(UserDevice::getFcmToken)
.toList();
Expand Down Expand Up @@ -137,7 +141,12 @@ private void sendCommentPushMessageToCommenters(User user, Feed feed) {
);
notificationRepository.save(notification);

List<String> targetFCMTokens = commenter.getUserDevices()
List<UserDevice> commenterDevices = commenter.getUserDevices();
if (commenterDevices.isEmpty()) {
return;
}

List<String> targetFCMTokens = commenterDevices
.stream()
.map(UserDevice::getFcmToken)
.distinct()
Expand All @@ -150,7 +159,10 @@ private void sendCommentPushMessageToCommenters(User user, Feed feed) {
"feedDetail",
String.valueOf(notification.getNotificationId())
);
fcmService.sendMulticastPushMessage(targetFCMTokens, fcmMessageRequest);
fcmService.sendMulticastPushMessage(
targetFCMTokens,
fcmMessageRequest
);
});
}

Expand Down
8 changes: 6 additions & 2 deletions src/main/java/org/websoso/WSSServer/service/FeedService.java
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,11 @@ private void sendLikePushMessage(User liker, Feed feed) {
);
notificationRepository.save(notification);

List<UserDevice> feedOwnerDevices = feedOwner.getUserDevices();
if (feedOwnerDevices.isEmpty()) {
return;
}

FCMMessageRequest fcmMessageRequest = FCMMessageRequest.of(
notificationTitle,
notificationBody,
Expand All @@ -157,8 +162,7 @@ private void sendLikePushMessage(User liker, Feed feed) {
String.valueOf(notification.getNotificationId())
);

List<String> targetFCMTokens = feedOwner
.getUserDevices()
List<String> targetFCMTokens = feedOwnerDevices
.stream()
.map(UserDevice::getFcmToken)
.toList();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,11 @@ private void sendPopularFeedPushMessage(Feed feed) {
);
notificationRepository.save(notification);

List<UserDevice> feedOwnerDevices = feedOwner.getUserDevices();
if (feedOwnerDevices.isEmpty()) {
return;
}

FCMMessageRequest fcmMessageRequest = FCMMessageRequest.of(
notificationTitle,
notificationBody,
Expand All @@ -64,8 +69,7 @@ private void sendPopularFeedPushMessage(Feed feed) {
String.valueOf(notification.getNotificationId())
);

List<String> targetFCMTokens = feed.getUser()
.getUserDevices()
List<String> targetFCMTokens = feedOwnerDevices
.stream()
.map(UserDevice::getFcmToken)
.toList();
Expand Down
5 changes: 3 additions & 2 deletions src/main/java/org/websoso/WSSServer/service/UserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -179,8 +179,9 @@ public void registerUserInfo(User user, RegisterUserInfoRequest registerUserInfo
MessageFormatter.formatUserJoinMessage(user, SocialLoginType.fromSocialId(user.getSocialId())), JOIN));
}

public void logout(User user, String refreshToken) {
public void logout(User user, String refreshToken, String deviceIdentifier) {
refreshTokenRepository.findByRefreshToken(refreshToken).ifPresent(refreshTokenRepository::delete);
userDeviceRepository.deleteByUserAndDeviceIdentifier(user, deviceIdentifier);
if (user.getSocialId().startsWith(KAKAO_PREFIX)) {
kakaoService.kakaoLogout(user);
}
Expand Down Expand Up @@ -253,7 +254,7 @@ public UserIdAndNicknameResponse getUserIdAndNicknameAndGender(User user) {
}

public boolean registerFCMToken(User user, FCMTokenRequest fcmTokenRequest) {
return userDeviceRepository.findByDeviceIdentifier(fcmTokenRequest.deviceIdentifier())
return userDeviceRepository.findByDeviceIdentifierAndUser(fcmTokenRequest.deviceIdentifier(), user)
.map(userDevice -> {
userDevice.updateFcmToken(fcmTokenRequest.fcmToken());
return false;
Expand Down
Loading