Skip to content

Commit 032d8f7

Browse files
committed
Merge branch 'feature/jaino/#290' into develop
2 parents f54dd84 + 6226335 commit 032d8f7

File tree

54 files changed

+578
-141
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+578
-141
lines changed

app/src/dev/kotlin/com/bff/wespot/AnalyticsModule.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.bff.wespot
22

3-
import com.bff.wespot.analytic.AnalyticsHelper
4-
import com.bff.wespot.analytic.DebugAnalyticsHelper
3+
import com.bff.wespot.analytics.AnalyticsHelper
4+
import com.bff.wespot.analytics.DebugAnalyticsHelper
55
import dagger.Module
66
import dagger.Provides
77
import dagger.hilt.InstallIn

app/src/main/kotlin/com/bff/wespot/main/MainActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import androidx.activity.compose.setContent
99
import androidx.activity.result.contract.ActivityResultContracts
1010
import androidx.activity.viewModels
1111
import androidx.core.content.ContextCompat
12-
import com.bff.wespot.analytic.AnalyticsHelper
12+
import com.bff.wespot.analytics.AnalyticsHelper
1313
import com.bff.wespot.designsystem.theme.WeSpotTheme
1414
import com.bff.wespot.main.state.MainAction
1515
import com.bff.wespot.main.viewmodel.MainViewModel

app/src/main/kotlin/com/bff/wespot/main/MainScreen.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ import androidx.compose.ui.platform.LocalContext
2121
import androidx.compose.ui.res.stringResource
2222
import androidx.navigation.compose.rememberNavController
2323
import com.bff.wespot.R
24-
import com.bff.wespot.analytic.AnalyticsHelper
25-
import com.bff.wespot.analytic.LocalAnalyticsHelper
24+
import com.bff.wespot.analytics.AnalyticsHelper
25+
import com.bff.wespot.analytics.LocalAnalyticsHelper
2626
import com.bff.wespot.common.checkCurrentScreen
2727
import com.bff.wespot.common.currentScreenAsState
2828
import com.bff.wespot.common.navigateToNavGraph

app/src/main/kotlin/com/bff/wespot/main/viewmodel/MainViewModel.kt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ package com.bff.wespot.main.viewmodel
22

33
import androidx.lifecycle.ViewModel
44
import androidx.lifecycle.viewModelScope
5+
import com.bff.wespot.analytics.AnalyticsHelper
56
import com.bff.wespot.common.util.AppVersionUtils.VersionCompareResult
67
import com.bff.wespot.common.util.AppVersionUtils.versionCompare
78
import com.bff.wespot.domain.repository.CommonRepository
89
import com.bff.wespot.domain.repository.DataStoreRepository
910
import com.bff.wespot.domain.repository.firebase.config.RemoteConfigRepository
11+
import com.bff.wespot.domain.repository.user.ProfileRepository
1012
import com.bff.wespot.domain.repository.user.UserRepository
11-
import com.bff.wespot.domain.usecase.CacheProfileUseCase
1213
import com.bff.wespot.domain.util.DataStoreKey
1314
import com.bff.wespot.domain.util.RemoteConfigKey
1415
import com.bff.wespot.main.model.VersionUpdateType
@@ -31,12 +32,13 @@ import javax.inject.Inject
3132

3233
@HiltViewModel
3334
class MainViewModel @Inject constructor(
34-
private val cacheProfileUseCase: CacheProfileUseCase,
3535
private val dataStoreRepository: DataStoreRepository,
3636
private val userRepository: UserRepository,
37+
private val profileRepository: ProfileRepository,
3738
private val coroutineDispatcher: CoroutineDispatcher,
3839
private val commonRepository: CommonRepository,
3940
private val remoteConfigRepository: RemoteConfigRepository,
41+
private val analyticsHelper: AnalyticsHelper,
4042
) : ViewModel(),
4143
ContainerHost<MainUiState, MainSideEffect> {
4244
override val container = container<MainUiState, MainSideEffect>(
@@ -79,7 +81,7 @@ class MainViewModel @Inject constructor(
7981

8082
private fun handleMainScreenEntered(appVersion: String) = intent {
8183
viewModelScope.launch(coroutineDispatcher) {
82-
cacheProfileUseCase()
84+
setUserProfile()
8385

8486
checkAppVersionWithLatestVersion(appVersion)
8587

@@ -93,6 +95,15 @@ class MainViewModel @Inject constructor(
9395
}
9496
}
9597

98+
private fun setUserProfile() {
99+
viewModelScope.launch {
100+
userRepository.getProfile().mapCatching { profile ->
101+
profileRepository.setProfile(profile)
102+
analyticsHelper.updateUserId(profile.id.toString())
103+
}
104+
}
105+
}
106+
96107
/** RemoteConfig에서 최신 버전을 가져와 현재 앱 버전과 비교하고 적절한 업데이트 다이얼로그를 노출한다.*/
97108
private fun checkAppVersionWithLatestVersion(appVersion: String) = intent {
98109
val latestVersion = remoteConfigRepository.fetchFromRemoteConfig(RemoteConfigKey.LATEST_VERSION)

app/src/real/kotlin/com.bff.wespot/AnalyticsModule.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.bff.wespot
22

3-
import com.bff.wespot.analytic.AnalyticsHelper
3+
import com.bff.wespot.analytics.AnalyticsHelper
44
import com.google.firebase.analytics.FirebaseAnalytics
55
import com.google.firebase.analytics.ktx.analytics
66
import com.google.firebase.ktx.Firebase

app/src/real/kotlin/com.bff.wespot/FirebaseAnalyticsHelper.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.bff.wespot
22

3-
import com.bff.wespot.analytic.AnalyticsEvent
4-
import com.bff.wespot.analytic.AnalyticsHelper
3+
import com.bff.wespot.analytics.AnalyticsEvent
4+
import com.bff.wespot.analytics.AnalyticsHelper
55
import com.google.firebase.analytics.FirebaseAnalytics
66
import com.google.firebase.analytics.logEvent
77
import javax.inject.Inject
@@ -12,9 +12,9 @@ class FirebaseAnalyticsHelper @Inject constructor(
1212
private var userId: String = ""
1313

1414
override fun logEvent(event: AnalyticsEvent) {
15-
firebaseAnalytics.logEvent(event.type) {
15+
firebaseAnalytics.logEvent(event.name) {
1616
param("userId", userId)
17-
event.extras.forEach { (key, value) ->
17+
event.params.forEach { (key, value) ->
1818
param(
1919
key = key.take(40),
2020
value = value.take(100),

core/analytics/src/main/java/com/bff/wespot/analytic/AnalyticExtension.kt

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

core/analytics/src/main/java/com/bff/wespot/analytic/AnalyticsEvent.kt

Lines changed: 0 additions & 24 deletions
This file was deleted.
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package com.bff.wespot.analytics
2+
3+
import androidx.compose.runtime.Composable
4+
import androidx.compose.runtime.DisposableEffect
5+
import androidx.compose.runtime.staticCompositionLocalOf
6+
import com.bff.wespot.analytics.AnalyticsEvent.Param
7+
8+
val LocalAnalyticsHelper = staticCompositionLocalOf<AnalyticsHelper> {
9+
NoOpAnalyticsHelper()
10+
}
11+
12+
fun AnalyticsHelper.logScreenView(
13+
name: String,
14+
extras: List<Param> = emptyList(),
15+
) {
16+
val params = buildList {
17+
addAll(extras)
18+
}
19+
20+
logEvent(AnalyticsEvent("view_$name", params))
21+
}
22+
23+
fun AnalyticsHelper.logImpression(
24+
name: String,
25+
extras: List<Param> = emptyList(),
26+
) {
27+
val params = buildList {
28+
addAll(extras)
29+
}
30+
31+
logEvent(AnalyticsEvent("impression_$name", params))
32+
}
33+
34+
fun AnalyticsHelper.logClick(
35+
name: String,
36+
area: String = "",
37+
extras: List<Param> = listOf(),
38+
) {
39+
val params = buildList {
40+
add(Param("area", area))
41+
addAll(extras)
42+
}
43+
44+
logEvent(AnalyticsEvent("click_$name", params))
45+
}
46+
47+
@Composable
48+
fun TrackScreenViewEvent(
49+
name: String,
50+
extras: List<Param> = emptyList(),
51+
analyticsHelper: AnalyticsHelper = LocalAnalyticsHelper.current,
52+
) = DisposableEffect(Unit) {
53+
analyticsHelper.logScreenView(
54+
name = name,
55+
extras = extras,
56+
)
57+
onDispose {}
58+
}
59+
60+
@Composable
61+
fun TrackImpressionEvent(
62+
name: String,
63+
extras: List<Param> = emptyList(),
64+
analyticsHelper: AnalyticsHelper = LocalAnalyticsHelper.current,
65+
) = DisposableEffect(Unit) {
66+
analyticsHelper.logImpression(
67+
name = name,
68+
extras = extras,
69+
)
70+
onDispose {}
71+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.bff.wespot.analytics
2+
3+
data class AnalyticsEvent(
4+
val name: String,
5+
val params: List<Param> = emptyList()
6+
) {
7+
data class Param(val key: String, val value: String)
8+
}

0 commit comments

Comments
 (0)