Skip to content

Commit 4d2211e

Browse files
authored
added firebase messaging service late init for test supports (#17)
1 parent 288f5ea commit 4d2211e

File tree

4 files changed

+24
-9
lines changed

4 files changed

+24
-9
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ repositories {
88
}
99

1010
// Append dependency
11-
implementation("com.icerockdev.service:fcm-push-service:2.1.1")
11+
implementation("com.icerockdev.service:fcm-push-service:2.1.2")
1212
````
1313

1414
## Koin configure

fcm-push-service/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import kotlin.text.String
55
*/
66

77
group = "com.icerockdev.service"
8-
version = "2.1.1"
8+
version = "2.1.2"
99

1010
plugins {
1111
id("org.jetbrains.kotlin.jvm")

fcm-push-service/src/main/kotlin/com/icerockdev/service/fcmpush/FCMConfig.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@
55
package com.icerockdev.service.fcmpush
66

77
data class FCMConfig(
8-
val googleServiceAccountJson: String
8+
val googleServiceAccountJson: String,
9+
val lateInit: Boolean = false
910
)

fcm-push-service/src/main/kotlin/com/icerockdev/service/fcmpush/PushService.kt

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,21 @@ import org.slf4j.LoggerFactory
2424
class PushService(
2525
private val coroutineScope: CoroutineScope,
2626
private val pushRepository: IPushRepository,
27-
config: FCMConfig
27+
private val config: FCMConfig
2828
) {
29-
private val firebaseMessaging: FirebaseMessaging
29+
private lateinit var firebaseMessaging: FirebaseMessaging
3030

3131
init {
32-
val options = FirebaseOptions.builder()
33-
.setCredentials(GoogleCredentials.fromStream(config.googleServiceAccountJson.byteInputStream()))
34-
.build()
35-
firebaseMessaging = FirebaseMessaging.getInstance(FirebaseApp.initializeApp(options))
32+
if (!config.lateInit) {
33+
initFirebaseMessagingService()
34+
}
3635
}
3736

3837
fun sendAsync(payLoad: FCMPayLoad): Deferred<PushResult> {
38+
if (config.lateInit) {
39+
initFirebaseMessagingService()
40+
}
41+
3942
if (payLoad.tokenList.isEmpty()) {
4043
throw PushException("Unsupported empty token list")
4144
}
@@ -164,6 +167,17 @@ class PushService(
164167
)
165168
}
166169

170+
private fun initFirebaseMessagingService() {
171+
if (this::firebaseMessaging.isInitialized) {
172+
return
173+
}
174+
175+
val options = FirebaseOptions.builder()
176+
.setCredentials(GoogleCredentials.fromStream(config.googleServiceAccountJson.byteInputStream()))
177+
.build()
178+
firebaseMessaging = FirebaseMessaging.getInstance(FirebaseApp.initializeApp(options))
179+
}
180+
167181
private companion object {
168182
val logger: org.slf4j.Logger = LoggerFactory.getLogger(PushService::class.java)
169183
private const val FCM_TOKEN_CHUNK = 1000

0 commit comments

Comments
 (0)