Skip to content

Commit b723d29

Browse files
authored
[MERGE] #378 -> develop
[FEAT/#378] νšŒμ›κ°€μž… / FCM μ„œλ²„ν†΅μ‹  κ΅¬ν˜„
2 parents 17c34e2 + f5063d7 commit b723d29

28 files changed

Lines changed: 151 additions & 79 deletions

File tree

β€Žapp/build.gradle.ktsβ€Ž

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,6 @@ android {
7777
}
7878

7979
dependencies {
80-
// feature
81-
implementation(projects.feature.main)
82-
8380
// data
8481
implementation(projects.data.auth)
8582
implementation(projects.data.calendar)
@@ -93,6 +90,9 @@ dependencies {
9390
implementation(projects.data.search)
9491
implementation(projects.data.update)
9592

93+
// feature
94+
implementation(projects.feature.main)
95+
9696
// baseline profile
9797
baselineProfile(projects.baselineprofile)
9898
implementation(libs.androidx.profileinstaller)

β€Žcore/firebase/build.gradle.ktsβ€Ž

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ android {
1111
dependencies {
1212
//core
1313
implementation(projects.core.navigator)
14-
implementation(projects.core.local)
14+
15+
// domain
16+
implementation(projects.domain.token)
1517

1618
// timber
1719
implementation(libs.timber)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.terning.core.firebase.di
2+
3+
import com.terning.core.firebase.fcmtoken.FcmTokenProvider
4+
import com.terning.core.firebase.fcmtoken.FcmTokenProviderImpl
5+
import dagger.Module
6+
import dagger.Provides
7+
import dagger.hilt.InstallIn
8+
import dagger.hilt.components.SingletonComponent
9+
import javax.inject.Singleton
10+
11+
@Module
12+
@InstallIn(SingletonComponent::class)
13+
object FcmTokenModule {
14+
@Provides
15+
@Singleton
16+
fun provideFcmTokenProviderImpl(): FcmTokenProvider = FcmTokenProviderImpl()
17+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.terning.core.firebase.di
2+
3+
import com.terning.core.firebase.remoteconfig.TerningRemoteConfig
4+
import dagger.Module
5+
import dagger.Provides
6+
import dagger.hilt.InstallIn
7+
import dagger.hilt.components.SingletonComponent
8+
import javax.inject.Singleton
9+
10+
@Module
11+
@InstallIn(SingletonComponent::class)
12+
object RemoteConfigModule {
13+
14+
@Singleton
15+
@Provides
16+
fun provideFirebaseRemoteConfig(): TerningRemoteConfig = TerningRemoteConfig()
17+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.terning.core.firebase.fcmtoken
2+
3+
interface FcmTokenProvider {
4+
suspend fun fetchFcmToken(): String
5+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.terning.core.firebase.fcmtoken
2+
3+
import com.google.firebase.messaging.FirebaseMessaging
4+
import timber.log.Timber
5+
import kotlin.coroutines.resume
6+
import kotlin.coroutines.resumeWithException
7+
import kotlin.coroutines.suspendCoroutine
8+
9+
class FcmTokenProviderImpl : FcmTokenProvider {
10+
override suspend fun fetchFcmToken(): String = suspendCoroutine { continuation ->
11+
FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
12+
if (task.isSuccessful) {
13+
Timber.tag("okhttp").d("FCM TOKEN : ${task.result}")
14+
continuation.resume(task.result)
15+
} else {
16+
continuation.resumeWithException(task.exception ?: Exception())
17+
}
18+
}
19+
}
20+
}

core/firebase/src/main/java/com/terning/core/firebase/remoteconfig/messageservice/TerningMessagingService.kt renamed to core/firebase/src/main/java/com/terning/core/firebase/messageservice/TerningMessagingService.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.terning.core.firebase.remoteconfig.messageservice
1+
package com.terning.core.firebase.messageservice
22

33
import android.app.NotificationChannel
44
import android.app.NotificationManager
@@ -11,7 +11,7 @@ import androidx.core.net.toUri
1111
import com.google.firebase.messaging.FirebaseMessagingService
1212
import com.google.firebase.messaging.RemoteMessage
1313
import com.terning.core.firebase.R
14-
import com.terning.core.local.TerningDataStore
14+
import com.terning.domain.token.repository.TokenRepository
1515
import com.terning.navigator.NavigatorProvider
1616
import dagger.hilt.android.AndroidEntryPoint
1717
import timber.log.Timber
@@ -22,7 +22,7 @@ import javax.inject.Inject
2222
class TerningMessagingService : FirebaseMessagingService() {
2323

2424
@Inject
25-
lateinit var terningDataStore: TerningDataStore
25+
lateinit var tokenRepository: TokenRepository
2626

2727
@Inject
2828
lateinit var navigatorProvider: NavigatorProvider
@@ -49,7 +49,8 @@ class TerningMessagingService : FirebaseMessagingService() {
4949
super.onMessageReceived(message)
5050

5151
if (message.data.isEmpty())
52-
// TODO: 쑰건 μΆ”κ°€ by 이유빈 -> || !terningDataStore.alarmAvailable
52+
// TODO: 쑰건 μΆ”κ°€ by 이유빈 -> || !terningDataStore.alarmAvailable
53+
// TODO: #352번 λΈŒλ ŒμΉ˜μ—μ„œ κ΄€λ ¨ μ½”λ“œ μˆ˜μ •ν•˜κΈ°
5354
return
5455

5556
val title = message.data[TITLE].orEmpty()

β€Žcore/firebase/src/main/java/com/terning/core/firebase/remoteconfig/RemoteConfigModule.ktβ€Ž

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

β€Žcore/local/src/main/java/com/terning/core/local/TerningDataStore.ktβ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.terning.core.local
33
interface TerningDataStore {
44
var accessToken: String
55
var refreshToken: String
6+
var fcmToken: String
67
var userId: Long
78
fun clearInfo()
89
}

β€Žcore/local/src/main/java/com/terning/core/local/TerningDataStoreImpl.ktβ€Ž

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,17 @@ class TerningDataStoreImpl @Inject constructor(
88
private val dataStore: SharedPreferences,
99
) : TerningDataStore {
1010
override var accessToken: String
11-
get() = dataStore.getString(ACCESS_TOKEN, "") ?: ""
11+
get() = dataStore.getString(ACCESS_TOKEN, "").orEmpty()
1212
set(value) = dataStore.edit { putString(ACCESS_TOKEN, value) }
1313

1414
override var refreshToken: String
15-
get() = dataStore.getString(REFRESH_TOKEN, "") ?: ""
15+
get() = dataStore.getString(REFRESH_TOKEN, "").orEmpty()
1616
set(value) = dataStore.edit { putString(REFRESH_TOKEN, value) }
1717

18+
override var fcmToken: String
19+
get() = dataStore.getString(FCM_TOKEN, "").orEmpty()
20+
set(value) = dataStore.edit { putString(FCM_TOKEN, value) }
21+
1822
override var userId: Long
1923
get() = dataStore.getLong(USER_ID, 0L)
2024
set(value) = dataStore.edit { putLong(USER_ID, value) }
@@ -26,6 +30,7 @@ class TerningDataStoreImpl @Inject constructor(
2630
companion object {
2731
private const val ACCESS_TOKEN = "ACCESS_TOKEN"
2832
private const val REFRESH_TOKEN = "REFRESH_TOKEN"
33+
private const val FCM_TOKEN = "FCM_TOKEN"
2934
private const val USER_ID = "USER_ID"
3035
}
3136
}

0 commit comments

Comments
Β (0)