Skip to content

Commit 714fd55

Browse files
authored
Merge pull request #290 from YAPP-Github/feat/#289
[feat #289] Fcm 토큰 중복 무시처리 및 Firebase 설정
2 parents f3ce5b6 + f45aa2a commit 714fd55

File tree

8 files changed

+36
-26
lines changed

8 files changed

+36
-26
lines changed

.github/workflows/api-deploy.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ jobs:
4040
run: |
4141
mkdir -p ./adapters/out-persistence/src/main/resources
4242
echo "${{ secrets.OUT_PERSISTENCE_YML }}" > ./adapters/out-persistence/src/main/resources/application-out-persistence.yml
43-
mkdir -p ./adapters/out-web/src/main/resources
44-
echo "${{ secrets.OUT_WEB_GOOGLE }}" | base64 --decode > ./adapters/out-web/src/main/resources/google-services.json
43+
mkdir -p ./adapters/out-web/src/main/resources/firebase
44+
echo "${{ secrets.OUT_WEB_GOOGLE }}" | base64 --decode > ./adapters/out-web/src/main/resources/firebase/push-account-key.json
4545
echo "${{ secrets.OUT_WEB_YML }}" > ./adapters/out-web/src/main/resources/application-out-web.yml
4646
mkdir -p ./application/src/main/resources
4747
echo "${{ secrets.APPLICATION_CORE }}" > ./application/src/main/resources/application-core.yml

.gitignore

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,5 +45,10 @@ out/
4545
### Resources ###
4646
**/src/main/resources/application-*.yml
4747
**/src/main/resources/google-services.json
48+
**/src/main/resources/firebase/*.json
4849
**/src/main/resources/*.p8
49-
**/src/main/resources/logback.xml
50+
**/src/main/resources/logback.xml
51+
52+
### Logs ###
53+
logs/
54+
*.log

adapters/out-persistence/src/main/kotlin/com/pokit/out/persistence/user/impl/FcmTokenAdapter.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,8 @@ class FcmTokenAdapter(
2020
return fcmTokenRepository.findByUserId(userId)
2121
.map { it.toDomain() }
2222
}
23+
24+
override fun loadByUserIdAndToken(userId: Long, token: String): FcmToken? {
25+
return fcmTokenRepository.findByUserIdAndToken(userId, token)?.toDomain()
26+
}
2327
}

adapters/out-persistence/src/main/kotlin/com/pokit/out/persistence/user/persist/FcmTokenRepository.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,6 @@ import org.springframework.data.jpa.repository.JpaRepository
44

55
interface FcmTokenRepository : JpaRepository<FcmTokenEntity, Long> {
66
fun findByUserId(userId: Long): List<FcmTokenEntity>
7+
8+
fun findByUserIdAndToken(userId: Long, token: String): FcmTokenEntity?
79
}

adapters/out-web/src/main/kotlin/com/pokit/alert/config/FirebaseConfig.kt

Lines changed: 0 additions & 23 deletions
This file was deleted.

adapters/out-web/src/main/kotlin/com/pokit/alert/impl/FcmSender.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,32 @@
11
package com.pokit.alert.impl
22

3+
import com.google.auth.oauth2.GoogleCredentials
4+
import com.google.firebase.FirebaseApp
5+
import com.google.firebase.FirebaseOptions
36
import com.google.firebase.messaging.FirebaseMessaging
47
import com.google.firebase.messaging.FirebaseMessagingException
58
import com.google.firebase.messaging.Message
69
import com.google.firebase.messaging.Notification
710
import com.pokit.alert.port.out.AlertSender
811
import io.github.oshai.kotlinlogging.KotlinLogging
12+
import jakarta.annotation.PostConstruct
13+
import org.springframework.core.io.ClassPathResource
914
import org.springframework.stereotype.Component
1015

1116
@Component
1217
class FcmSender : AlertSender {
18+
@PostConstruct
19+
fun init() {
20+
if (FirebaseApp.getApps().isEmpty()) {
21+
val firebaseCredentials = ClassPathResource("/firebase/push-account-key.json").inputStream
22+
val options = FirebaseOptions.builder()
23+
.setCredentials(GoogleCredentials.fromStream(firebaseCredentials))
24+
.build()
25+
FirebaseApp.initializeApp(options)
26+
}
27+
}
28+
29+
1330
private val logger = KotlinLogging.logger { }
1431

1532
companion object {

application/src/main/kotlin/com/pokit/user/port/out/FcmTokenPort.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ interface FcmTokenPort {
66
fun persist(fcmToken: FcmToken): FcmToken
77

88
fun loadByUserId(userId: Long): List<FcmToken>
9+
10+
fun loadByUserIdAndToken(userId: Long, token: String): FcmToken?
911
}

application/src/main/kotlin/com/pokit/user/port/service/UserService.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,9 @@ class UserService(
112112
override fun createFcmToken(userId: Long, request: CreateFcmTokenRequest): FcmToken {
113113
val user = userPort.loadById(userId)
114114
?: throw NotFoundCustomException(UserErrorCode.NOT_FOUND_USER)
115+
fcmTokenPort.loadByUserIdAndToken(user.id, request.token)
116+
?.let { return it }
117+
115118
val fcmToken = FcmToken(user.id, request.token)
116119
return fcmTokenPort.persist(fcmToken)
117120
}

0 commit comments

Comments
 (0)