From 31070d63b9ac6097ec60f0a23170d2ff308c95b3 Mon Sep 17 00:00:00 2001 From: "tae.y" <0211ilyoil@gmail.com> Date: Wed, 4 Sep 2024 23:20:27 +0900 Subject: [PATCH 1/5] =?UTF-8?q?=F0=9F=A7=A9=20::=20(#723)=20=EC=95=8C?= =?UTF-8?q?=EB=A6=BC=EC=97=90=20=EA=B8=B0=EB=B3=B8=EA=B0=92=20=EB=84=A3?= =?UTF-8?q?=EC=96=B4=EC=A4=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spi/CommandTopicSubscriptionPort.java | 2 ++ .../TopicSubscriptionPersistenceAdapter.java | 17 +++++++++++++++++ .../TopicSubscriptionJpaRepository.java | 2 ++ 3 files changed, 21 insertions(+) diff --git a/jobis-application/src/main/java/team/retum/jobis/domain/notification/spi/CommandTopicSubscriptionPort.java b/jobis-application/src/main/java/team/retum/jobis/domain/notification/spi/CommandTopicSubscriptionPort.java index 78b92f014..7e95c00d5 100644 --- a/jobis-application/src/main/java/team/retum/jobis/domain/notification/spi/CommandTopicSubscriptionPort.java +++ b/jobis-application/src/main/java/team/retum/jobis/domain/notification/spi/CommandTopicSubscriptionPort.java @@ -5,4 +5,6 @@ public interface CommandTopicSubscriptionPort { void save(TopicSubscription topicSubscription); + + void saveTopics(String deviceToken); } diff --git a/jobis-infrastructure/src/main/java/team/retum/jobis/domain/notification/persistence/TopicSubscriptionPersistenceAdapter.java b/jobis-infrastructure/src/main/java/team/retum/jobis/domain/notification/persistence/TopicSubscriptionPersistenceAdapter.java index 4f2ac6004..cc4f90ea4 100644 --- a/jobis-infrastructure/src/main/java/team/retum/jobis/domain/notification/persistence/TopicSubscriptionPersistenceAdapter.java +++ b/jobis-infrastructure/src/main/java/team/retum/jobis/domain/notification/persistence/TopicSubscriptionPersistenceAdapter.java @@ -10,6 +10,7 @@ import team.retum.jobis.domain.notification.persistence.repository.TopicSubscriptionJpaRepository; import team.retum.jobis.domain.notification.spi.TopicSubscriptionPort; +import java.util.Arrays; import java.util.List; import java.util.Optional; @@ -25,6 +26,9 @@ public class TopicSubscriptionPersistenceAdapter implements TopicSubscriptionPor @Override public List getAllByDeviceToken(String deviceToken) { + if (!topicSubscriptionJpaRepository.existsByDeviceToken(deviceToken)) { + saveTopics(deviceToken); + } return topicSubscriptionJpaRepository.findAllByDeviceToken(deviceToken); } @@ -47,4 +51,17 @@ public Optional getByDeviceTokenAndTopic(String deviceToken, public void save(TopicSubscription topicSubscription) { topicSubscriptionJpaRepository.save(topicSubscriptionMapper.toEntity(topicSubscription)); } + + @Override + public void saveTopics(String deviceToken) { + Arrays.stream(Topic.values()).forEach(topic -> { + save( + TopicSubscription.builder() + .deviceToken(deviceToken) + .topic(topic) + .isSubscribed(false) + .build() + ); + }); + } } diff --git a/jobis-infrastructure/src/main/java/team/retum/jobis/domain/notification/persistence/repository/TopicSubscriptionJpaRepository.java b/jobis-infrastructure/src/main/java/team/retum/jobis/domain/notification/persistence/repository/TopicSubscriptionJpaRepository.java index 10e50d84e..6e3009b9a 100644 --- a/jobis-infrastructure/src/main/java/team/retum/jobis/domain/notification/persistence/repository/TopicSubscriptionJpaRepository.java +++ b/jobis-infrastructure/src/main/java/team/retum/jobis/domain/notification/persistence/repository/TopicSubscriptionJpaRepository.java @@ -10,4 +10,6 @@ public interface TopicSubscriptionJpaRepository extends CrudRepository { List findAllByDeviceToken(String deviceToken); + + Boolean existsByDeviceToken(String deviceToken); } From 7e8aa7fc71ebefb10392439bd7b4e5ffd4e79870 Mon Sep 17 00:00:00 2001 From: "tae.y" <0211ilyoil@gmail.com> Date: Fri, 6 Sep 2024 15:41:34 +0900 Subject: [PATCH 2/5] =?UTF-8?q?=F0=9F=A6=B7=20::=20(#722)=20for=20?= =?UTF-8?q?=EB=AC=B8=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TopicSubscriptionPersistenceAdapter.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/jobis-infrastructure/src/main/java/team/retum/jobis/domain/notification/persistence/TopicSubscriptionPersistenceAdapter.java b/jobis-infrastructure/src/main/java/team/retum/jobis/domain/notification/persistence/TopicSubscriptionPersistenceAdapter.java index cc4f90ea4..930a6e4b2 100644 --- a/jobis-infrastructure/src/main/java/team/retum/jobis/domain/notification/persistence/TopicSubscriptionPersistenceAdapter.java +++ b/jobis-infrastructure/src/main/java/team/retum/jobis/domain/notification/persistence/TopicSubscriptionPersistenceAdapter.java @@ -10,7 +10,6 @@ import team.retum.jobis.domain.notification.persistence.repository.TopicSubscriptionJpaRepository; import team.retum.jobis.domain.notification.spi.TopicSubscriptionPort; -import java.util.Arrays; import java.util.List; import java.util.Optional; @@ -54,14 +53,14 @@ public void save(TopicSubscription topicSubscription) { @Override public void saveTopics(String deviceToken) { - Arrays.stream(Topic.values()).forEach(topic -> { - save( - TopicSubscription.builder() - .deviceToken(deviceToken) - .topic(topic) - .isSubscribed(false) - .build() - ); - }); + for (Topic topic : Topic.values()) { + TopicSubscription subscription = TopicSubscription.builder() + .deviceToken(deviceToken) + .topic(topic) + .isSubscribed(false) + .build(); + + save(subscription); + } } } From 21c8e9fdd02a4a1f57ade60315b4e7c1b34e49c8 Mon Sep 17 00:00:00 2001 From: 4mjeo <4mj.eo@dsm.hs.kr> Date: Fri, 6 Sep 2024 20:28:01 +0900 Subject: [PATCH 3/5] =?UTF-8?q?=F0=9F=A7=A9=20::=20(#722)=20=EC=95=8C?= =?UTF-8?q?=EB=A6=BC=20=EA=B8=B0=EB=B3=B8=EA=B0=92=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TopicSubscriptionPersistenceAdapter.java | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/jobis-infrastructure/src/main/java/team/retum/jobis/domain/notification/persistence/TopicSubscriptionPersistenceAdapter.java b/jobis-infrastructure/src/main/java/team/retum/jobis/domain/notification/persistence/TopicSubscriptionPersistenceAdapter.java index 930a6e4b2..ba5d61e86 100644 --- a/jobis-infrastructure/src/main/java/team/retum/jobis/domain/notification/persistence/TopicSubscriptionPersistenceAdapter.java +++ b/jobis-infrastructure/src/main/java/team/retum/jobis/domain/notification/persistence/TopicSubscriptionPersistenceAdapter.java @@ -10,8 +10,10 @@ import team.retum.jobis.domain.notification.persistence.repository.TopicSubscriptionJpaRepository; import team.retum.jobis.domain.notification.spi.TopicSubscriptionPort; +import java.util.Arrays; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; import static team.retum.jobis.domain.notification.persistence.entity.QTopicSubscriptionEntity.topicSubscriptionEntity; @@ -25,10 +27,13 @@ public class TopicSubscriptionPersistenceAdapter implements TopicSubscriptionPor @Override public List getAllByDeviceToken(String deviceToken) { - if (!topicSubscriptionJpaRepository.existsByDeviceToken(deviceToken)) { - saveTopics(deviceToken); + List topics = topicSubscriptionJpaRepository.findAllByDeviceToken(deviceToken); + + if (topics.isEmpty()) { + topics = getDefaultSubscribedTopics(); } - return topicSubscriptionJpaRepository.findAllByDeviceToken(deviceToken); + + return topics; } @Override @@ -51,16 +56,9 @@ public void save(TopicSubscription topicSubscription) { topicSubscriptionJpaRepository.save(topicSubscriptionMapper.toEntity(topicSubscription)); } - @Override - public void saveTopics(String deviceToken) { - for (Topic topic : Topic.values()) { - TopicSubscription subscription = TopicSubscription.builder() - .deviceToken(deviceToken) - .topic(topic) - .isSubscribed(false) - .build(); - - save(subscription); - } + private List getDefaultSubscribedTopics() { + return Arrays.stream(Topic.values()) + .map(topic -> new TopicVO(topic, true)) + .collect(Collectors.toList()); } } From fdfdb18c31cbff466054255a7e50cd1b54ee7f29 Mon Sep 17 00:00:00 2001 From: 4mjeo <4mj.eo@dsm.hs.kr> Date: Fri, 6 Sep 2024 21:28:16 +0900 Subject: [PATCH 4/5] =?UTF-8?q?=F0=9F=A7=A9=20::=20(#722)=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=ED=95=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EC=B6=94?= =?UTF-8?q?=EC=83=81=EB=A9=94=EC=84=9C=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/notification/spi/CommandTopicSubscriptionPort.java | 1 - 1 file changed, 1 deletion(-) diff --git a/jobis-application/src/main/java/team/retum/jobis/domain/notification/spi/CommandTopicSubscriptionPort.java b/jobis-application/src/main/java/team/retum/jobis/domain/notification/spi/CommandTopicSubscriptionPort.java index 7e95c00d5..a3d44fa7b 100644 --- a/jobis-application/src/main/java/team/retum/jobis/domain/notification/spi/CommandTopicSubscriptionPort.java +++ b/jobis-application/src/main/java/team/retum/jobis/domain/notification/spi/CommandTopicSubscriptionPort.java @@ -6,5 +6,4 @@ public interface CommandTopicSubscriptionPort { void save(TopicSubscription topicSubscription); - void saveTopics(String deviceToken); } From 0f018a4004cab81001d8509d8c5cfaa138cae156 Mon Sep 17 00:00:00 2001 From: "tae.y" <0211ilyoil@gmail.com> Date: Mon, 9 Sep 2024 21:45:58 +0900 Subject: [PATCH 5/5] =?UTF-8?q?=F0=9F=A7=A9=20::=20(#722)=20=EA=B5=AC?= =?UTF-8?q?=EB=8F=85=20=EB=A9=94=EC=84=9C=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TopicSubscriptionPersistenceAdapter.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/jobis-infrastructure/src/main/java/team/retum/jobis/domain/notification/persistence/TopicSubscriptionPersistenceAdapter.java b/jobis-infrastructure/src/main/java/team/retum/jobis/domain/notification/persistence/TopicSubscriptionPersistenceAdapter.java index ba5d61e86..b39cfe7c1 100644 --- a/jobis-infrastructure/src/main/java/team/retum/jobis/domain/notification/persistence/TopicSubscriptionPersistenceAdapter.java +++ b/jobis-infrastructure/src/main/java/team/retum/jobis/domain/notification/persistence/TopicSubscriptionPersistenceAdapter.java @@ -9,6 +9,7 @@ import team.retum.jobis.domain.notification.persistence.mapper.TopicSubscriptionMapper; import team.retum.jobis.domain.notification.persistence.repository.TopicSubscriptionJpaRepository; import team.retum.jobis.domain.notification.spi.TopicSubscriptionPort; +import team.retum.jobis.thirdparty.fcm.FCMUtil; import java.util.Arrays; import java.util.List; @@ -24,13 +25,14 @@ public class TopicSubscriptionPersistenceAdapter implements TopicSubscriptionPor private final TopicSubscriptionJpaRepository topicSubscriptionJpaRepository; private final TopicSubscriptionMapper topicSubscriptionMapper; private final JPAQueryFactory queryFactory; + private final FCMUtil fcmUtil; @Override public List getAllByDeviceToken(String deviceToken) { List topics = topicSubscriptionJpaRepository.findAllByDeviceToken(deviceToken); if (topics.isEmpty()) { - topics = getDefaultSubscribedTopics(); + topics = getDefaultSubscribedTopics(deviceToken); } return topics; @@ -56,9 +58,12 @@ public void save(TopicSubscription topicSubscription) { topicSubscriptionJpaRepository.save(topicSubscriptionMapper.toEntity(topicSubscription)); } - private List getDefaultSubscribedTopics() { + private List getDefaultSubscribedTopics(String token) { return Arrays.stream(Topic.values()) - .map(topic -> new TopicVO(topic, true)) + .map(topic -> { + fcmUtil.subscribeTopic(token, topic); + return new TopicVO(topic, true); + }) .collect(Collectors.toList()); } }