Skip to content

Commit abad526

Browse files
authored
[MERGE] Merge pull request #294 from Team-WSS/fix/#293
[FIX] 동일 기기 여러 계정 푸시 알림 처리
2 parents 0798128 + 7bbed7d commit abad526

File tree

7 files changed

+39
-13
lines changed

7 files changed

+39
-13
lines changed

src/main/java/org/websoso/WSSServer/controller/AuthController.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ public ResponseEntity<Void> logout(Principal principal,
5959
@Valid @RequestBody LogoutRequest request) {
6060
User user = userService.getUserOrException(Long.valueOf(principal.getName()));
6161
String refreshToken = request.refreshToken();
62-
userService.logout(user, refreshToken);
62+
String deviceIdentifier = request.deviceIdentifier();
63+
userService.logout(user, refreshToken, deviceIdentifier);
6364
return ResponseEntity
6465
.status(NO_CONTENT)
6566
.build();
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.websoso.WSSServer.dto.auth;
22

33
public record LogoutRequest(
4-
String refreshToken
4+
String refreshToken,
5+
String deviceIdentifier
56
) {
67
}

src/main/java/org/websoso/WSSServer/repository/UserDeviceRepository.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@
33
import java.util.Optional;
44
import org.springframework.data.jpa.repository.JpaRepository;
55
import org.springframework.stereotype.Repository;
6+
import org.websoso.WSSServer.domain.User;
67
import org.websoso.WSSServer.domain.UserDevice;
78

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

11-
Optional<UserDevice> findByDeviceIdentifier(String deviceIdentifier);
12+
Optional<UserDevice> findByDeviceIdentifierAndUser(String deviceIdentifier, User user);
13+
14+
void deleteByUserAndDeviceIdentifier(User user, String deviceIdentifier);
1215
}

src/main/java/org/websoso/WSSServer/service/CommentService.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,11 @@ private void sendCommentPushMessageToFeedOwner(User user, Feed feed) {
7676
);
7777
notificationRepository.save(notification);
7878

79+
List<UserDevice> feedOwnerDevices = feedOwner.getUserDevices();
80+
if (feedOwnerDevices.isEmpty()) {
81+
return;
82+
}
83+
7984
FCMMessageRequest fcmMessageRequest = FCMMessageRequest.of(
8085
notificationTitle,
8186
notificationBody,
@@ -84,8 +89,7 @@ private void sendCommentPushMessageToFeedOwner(User user, Feed feed) {
8489
String.valueOf(notification.getNotificationId())
8590
);
8691

87-
List<String> targetFCMTokens = feedOwner
88-
.getUserDevices()
92+
List<String> targetFCMTokens = feedOwnerDevices
8993
.stream()
9094
.map(UserDevice::getFcmToken)
9195
.toList();
@@ -139,7 +143,12 @@ private void sendCommentPushMessageToCommenters(User user, Feed feed) {
139143
);
140144
notificationRepository.save(notification);
141145

142-
List<String> targetFCMTokens = commenter.getUserDevices()
146+
List<UserDevice> commenterDevices = commenter.getUserDevices();
147+
if (commenterDevices.isEmpty()) {
148+
return;
149+
}
150+
151+
List<String> targetFCMTokens = commenterDevices
143152
.stream()
144153
.map(UserDevice::getFcmToken)
145154
.distinct()
@@ -152,7 +161,10 @@ private void sendCommentPushMessageToCommenters(User user, Feed feed) {
152161
"feedDetail",
153162
String.valueOf(notification.getNotificationId())
154163
);
155-
fcmService.sendMulticastPushMessage(targetFCMTokens, fcmMessageRequest);
164+
fcmService.sendMulticastPushMessage(
165+
targetFCMTokens,
166+
fcmMessageRequest
167+
);
156168
});
157169
}
158170

src/main/java/org/websoso/WSSServer/service/FeedService.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,11 @@ private void sendLikePushMessage(User liker, Feed feed) {
149149
);
150150
notificationRepository.save(notification);
151151

152+
List<UserDevice> feedOwnerDevices = feedOwner.getUserDevices();
153+
if (feedOwnerDevices.isEmpty()) {
154+
return;
155+
}
156+
152157
FCMMessageRequest fcmMessageRequest = FCMMessageRequest.of(
153158
notificationTitle,
154159
notificationBody,
@@ -157,8 +162,7 @@ private void sendLikePushMessage(User liker, Feed feed) {
157162
String.valueOf(notification.getNotificationId())
158163
);
159164

160-
List<String> targetFCMTokens = feedOwner
161-
.getUserDevices()
165+
List<String> targetFCMTokens = feedOwnerDevices
162166
.stream()
163167
.map(UserDevice::getFcmToken)
164168
.toList();

src/main/java/org/websoso/WSSServer/service/PopularFeedService.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ private void sendPopularFeedPushMessage(Feed feed) {
5656
);
5757
notificationRepository.save(notification);
5858

59+
List<UserDevice> feedOwnerDevices = feedOwner.getUserDevices();
60+
if (feedOwnerDevices.isEmpty()) {
61+
return;
62+
}
63+
5964
FCMMessageRequest fcmMessageRequest = FCMMessageRequest.of(
6065
notificationTitle,
6166
notificationBody,
@@ -64,8 +69,7 @@ private void sendPopularFeedPushMessage(Feed feed) {
6469
String.valueOf(notification.getNotificationId())
6570
);
6671

67-
List<String> targetFCMTokens = feed.getUser()
68-
.getUserDevices()
72+
List<String> targetFCMTokens = feedOwnerDevices
6973
.stream()
7074
.map(UserDevice::getFcmToken)
7175
.toList();

src/main/java/org/websoso/WSSServer/service/UserService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,8 +182,9 @@ public void registerUserInfo(User user, RegisterUserInfoRequest registerUserInfo
182182
MessageFormatter.formatUserJoinMessage(user, SocialLoginType.fromSocialId(user.getSocialId())), JOIN));
183183
}
184184

185-
public void logout(User user, String refreshToken) {
185+
public void logout(User user, String refreshToken, String deviceIdentifier) {
186186
refreshTokenRepository.findByRefreshToken(refreshToken).ifPresent(refreshTokenRepository::delete);
187+
userDeviceRepository.deleteByUserAndDeviceIdentifier(user, deviceIdentifier);
187188
if (user.getSocialId().startsWith(KAKAO_PREFIX)) {
188189
kakaoService.kakaoLogout(user);
189190
}
@@ -256,7 +257,7 @@ public UserIdAndNicknameResponse getUserIdAndNicknameAndGender(User user) {
256257
}
257258

258259
public boolean registerFCMToken(User user, FCMTokenRequest fcmTokenRequest) {
259-
return userDeviceRepository.findByDeviceIdentifier(fcmTokenRequest.deviceIdentifier())
260+
return userDeviceRepository.findByDeviceIdentifierAndUser(fcmTokenRequest.deviceIdentifier(), user)
260261
.map(userDevice -> {
261262
userDevice.updateFcmToken(fcmTokenRequest.fcmToken());
262263
return false;

0 commit comments

Comments
 (0)