Skip to content

Commit 6b234a0

Browse files
authored
chore(analytics): implement analytics (#47)
1 parent 933be04 commit 6b234a0

File tree

19 files changed

+197
-98
lines changed

19 files changed

+197
-98
lines changed

app/src/main/java/com/xpeho/xpeapp/di/AppModule.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import com.xpeho.xpeapp.data.service.WordpressService
1313
import com.xpeho.xpeapp.data.service.interceptor.AuthorizationHeaderInterceptor
1414
import com.xpeho.xpeapp.domain.AuthenticationManager
1515
import com.xpeho.xpeapp.domain.FeatureFlippingManager
16+
import com.xpeho.xpeapp.utils.AnalyticsManager
17+
import com.xpeho.xpeapp.utils.FirebaseAnalyticsManager
1618
import okhttp3.OkHttpClient
1719
import okhttp3.logging.HttpLoggingInterceptor
1820
import retrofit2.Retrofit
@@ -28,6 +30,7 @@ interface AppModule {
2830
val datastorePref: DatastorePref
2931
val tokenProvider: TokenProvider
3032
val firebaseAnalytics: FirebaseAnalytics
33+
val analytics: AnalyticsManager
3134
}
3235

3336
class MainAppModule(
@@ -83,12 +86,17 @@ class MainAppModule(
8386
}
8487
}
8588

89+
override val analytics: AnalyticsManager by lazy {
90+
FirebaseAnalyticsManager(firebaseAnalytics)
91+
}
92+
8693
override val authenticationManager: AuthenticationManager by lazy {
8794
AuthenticationManager(
8895
tokenProvider = tokenProvider,
8996
wordpressRepo = wordpressRepository,
9097
datastorePref = datastorePref,
91-
firebaseService = firebaseService
98+
firebaseService = firebaseService,
99+
analytics = analytics
92100
)
93101
}
94102

app/src/main/java/com/xpeho/xpeapp/domain/AuthenticationManager.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.xpeho.xpeapp.domain
33
import android.util.Log
44
import androidx.annotation.VisibleForTesting
55
import com.xpeho.xpeapp.data.DatastorePref
6+
import com.xpeho.xpeapp.utils.AnalyticsManager
67
import com.xpeho.xpeapp.data.entity.AuthentificationBody
78
import com.xpeho.xpeapp.data.model.AuthResult
89
import com.xpeho.xpeapp.data.model.WordpressToken
@@ -29,7 +30,8 @@ class AuthenticationManager(
2930
val tokenProvider: TokenProvider,
3031
val wordpressRepo: WordpressRepository,
3132
val datastorePref: DatastorePref,
32-
val firebaseService: FirebaseService
33+
val firebaseService: FirebaseService,
34+
val analytics: AnalyticsManager
3335
) {
3436

3537
companion object {
@@ -166,7 +168,10 @@ class AuthenticationManager(
166168
datastorePref.setIsConnectedLeastOneTime(true)
167169
datastorePref.setWasConnectedLastTime(true)
168170
datastorePref.setLastEmail(username)
169-
wordpressUid?.let { datastorePref.setUserId(it) }
171+
wordpressUid?.let {
172+
datastorePref.setUserId(it)
173+
analytics.setUserId(it)
174+
}
170175
}
171176

172177
suspend fun logout() {

app/src/main/java/com/xpeho/xpeapp/ui/Resources.kt

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,10 @@ package com.xpeho.xpeapp.ui
33
import android.content.ActivityNotFoundException
44
import android.content.Context
55
import android.content.Intent
6-
import android.net.Uri
7-
import android.os.Bundle
86
import android.util.Log
97
import android.widget.Toast
108
import androidx.activity.compose.ManagedActivityResultLauncher
119
import androidx.activity.result.ActivityResult
12-
import com.google.firebase.analytics.FirebaseAnalytics
1310
import com.xpeho.xpeapp.XpeApp
1411
import com.xpeho.xpeapp.data.FeatureFlippingEnum
1512
import com.xpeho.xpeapp.data.model.RequestLeave
@@ -22,6 +19,8 @@ import java.time.LocalDate
2219
import java.time.Month
2320
import java.time.Year
2421
import com.xpeho.xpeho_ui_android.R.drawable as XpehoRes
22+
import androidx.core.net.toUri
23+
import com.xpeho.xpeapp.utils.AnalyticsManager
2524

2625
class Resources {
2726

@@ -131,7 +130,7 @@ fun openPdfFile(
131130
pdfUrl: String
132131
) {
133132
try {
134-
val uri = Uri.parse(pdfUrl)
133+
val uri = pdfUrl.toUri()
135134
val intent = Intent(Intent.ACTION_VIEW, uri)
136135
openUrlLauncher.launch(intent)
137136
} catch (e: URISyntaxException) {
@@ -143,11 +142,6 @@ fun openPdfFile(
143142
}
144143
}
145144

146-
fun sendAnalyticsEvent(page: String) {
147-
XpeApp.appModule.firebaseAnalytics.logEvent(
148-
FirebaseAnalytics.Event.VIEW_ITEM,
149-
Bundle().apply {
150-
putString(FirebaseAnalytics.Param.ITEM_ID, page)
151-
}
152-
)
145+
fun sendAnalyticsEvent(page: String, analytics: AnalyticsManager = XpeApp.appModule.analytics) {
146+
analytics.logScreen(page)
153147
}

app/src/main/java/com/xpeho/xpeapp/ui/components/agenda/AgendaCard.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ private fun getTagColor(baseColor: Color): Color {
122122

123123
private fun getEventTypeIcon(event: AgendaEvent, eventType: List<AgendaEventType>): Int {
124124
return when (eventType.firstOrNull { it.id == event.typeId.toInt() }?.label) {
125-
"XpeUp" -> R.drawable.birthday
125+
"XpeUp" -> R.drawable.learn
126126
"Event interne" -> R.drawable.building
127127
"Formation" -> R.drawable.study
128128
"RSE" -> R.drawable.leaf

app/src/main/java/com/xpeho/xpeapp/ui/components/newsletter/NewsletterCard.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ import androidx.compose.ui.res.painterResource
1313
import androidx.compose.ui.tooling.preview.Preview
1414
import androidx.compose.ui.unit.dp
1515
import androidx.compose.ui.unit.sp
16-
import com.google.firebase.analytics.FirebaseAnalytics
16+
import com.xpeho.xpeapp.utils.AnalyticsEventName
17+
import com.xpeho.xpeapp.utils.AnalyticsParamKey
1718
import com.xpeho.xpeapp.XpeApp
1819
import com.xpeho.xpeapp.data.model.Newsletter
1920
import com.xpeho.xpeapp.ui.openPdfFile
@@ -54,11 +55,11 @@ fun NewsletterCard(newsletter: Newsletter, open: Boolean) {
5455
verticalPadding = 3.dp,
5556
horizontalPadding = 40.dp
5657
) {
57-
XpeApp.appModule.firebaseAnalytics.logEvent(
58-
"open_newsletter",
58+
XpeApp.appModule.analytics.logEvent(
59+
AnalyticsEventName.OPEN_NEWSLETTER,
5960
Bundle().apply {
60-
putString(FirebaseAnalytics.Param.ITEM_ID, newsletter.id)
61-
putString(FirebaseAnalytics.Param.ITEM_NAME, newsletterMonth)
61+
putString(AnalyticsParamKey.ITEM_ID, newsletter.id)
62+
putString(AnalyticsParamKey.ITEM_NAME, newsletterMonth)
6263
}
6364
)
6465
openPdfFile(

app/src/main/java/com/xpeho/xpeapp/ui/page/AgencyPage.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import com.xpeho.xpeapp.BuildConfig
2525
import com.xpeho.xpeapp.R
2626
import com.xpeho.xpeapp.ui.components.layout.Title
2727
import com.xpeho.xpeapp.ui.sendAnalyticsEvent
28+
import com.xpeho.xpeapp.utils.AnalyticsEventName
2829
import com.xpeho.xpeho_ui_android.ClickyButton
2930
import com.xpeho.xpeho_ui_android.CollapsableCard
3031
import com.xpeho.xpeho_ui_android.TagPill
@@ -36,7 +37,7 @@ fun AgencyPage() {
3637
val showdigiCode = remember { mutableStateOf(false) }
3738
val showalarmCode = remember { mutableStateOf(false) }
3839

39-
sendAnalyticsEvent("agency_page")
40+
sendAnalyticsEvent(AnalyticsEventName.AGENCY_PAGE)
4041

4142
LazyColumn(
4243
modifier = Modifier

app/src/main/java/com/xpeho/xpeapp/ui/page/AgendaPage.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,15 @@ import com.xpeho.xpeapp.ui.components.agenda.AgendaEventItem
1515
import com.xpeho.xpeapp.ui.components.layout.NoContentPlaceHolder
1616
import com.xpeho.xpeapp.ui.components.layout.Title
1717
import com.xpeho.xpeapp.ui.sendAnalyticsEvent
18+
import com.xpeho.xpeapp.utils.AnalyticsEventName
1819
import com.xpeho.xpeapp.ui.uiState.AgendaUiState
1920
import com.xpeho.xpeapp.ui.viewModel.agenda.AgendaViewModel
2021

2122
@Composable
2223
fun AgendaPage(agendaViewModel : AgendaViewModel = viewModel()) {
2324
val agendaState = agendaViewModel.state
2425

25-
sendAnalyticsEvent("agenda_page")
26+
sendAnalyticsEvent(AnalyticsEventName.AGENDA_PAGE)
2627

2728
LazyColumn(
2829
modifier = Modifier

app/src/main/java/com/xpeho/xpeapp/ui/page/HomePage.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import com.xpeho.xpeapp.ui.components.layout.Title
2727
import com.xpeho.xpeapp.ui.components.newsletter.NewsletterPreview
2828
import com.xpeho.xpeapp.ui.components.qvst.QvstCardList
2929
import com.xpeho.xpeapp.ui.sendAnalyticsEvent
30+
import com.xpeho.xpeapp.utils.AnalyticsEventName
3031
import com.xpeho.xpeapp.ui.uiState.AgendaUiState
3132
import com.xpeho.xpeapp.ui.uiState.QvstActiveUiState
3233
import com.xpeho.xpeapp.ui.viewModel.FeatureFlippingViewModel
@@ -69,7 +70,7 @@ fun HomePage(navigationController: NavController) {
6970
}
7071
)
7172

72-
sendAnalyticsEvent("home_page")
73+
sendAnalyticsEvent(AnalyticsEventName.HOME_PAGE)
7374

7475
LaunchedEffect(Unit) {
7576
campaignActiveViewModel.updateState()

app/src/main/java/com/xpeho/xpeapp/ui/page/IdeaBoxPage.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import com.xpeho.xpeapp.ui.components.CustomDialog
1414
import com.xpeho.xpeapp.ui.components.layout.Title
1515
import com.xpeho.xpeapp.ui.viewModel.ideaBox.IdeaBoxState
1616
import com.xpeho.xpeapp.ui.viewModel.ideaBox.IdeaBoxViewModel
17+
import com.xpeho.xpeapp.utils.AnalyticsEventName
18+
import com.xpeho.xpeapp.ui.sendAnalyticsEvent
1719
import com.xpeho.xpeho_ui_android.ClickyButton
1820
import com.xpeho.xpeho_ui_android.InputText
1921
import java.util.UUID
@@ -22,6 +24,7 @@ import java.util.UUID
2224
fun IdeaBoxPage(
2325
ideaBoxViewModel: IdeaBoxViewModel = viewModel()
2426
) {
27+
sendAnalyticsEvent(AnalyticsEventName.IDEABOX_PAGE)
2528
var inputsResetKey by remember { mutableStateOf(UUID.randomUUID().toString()) }
2629

2730
// Quand l’état passe à SAVED, on réinitialise le formulaire

app/src/main/java/com/xpeho/xpeapp/ui/page/LoginPage.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import com.xpeho.xpeapp.R
3030
import com.xpeho.xpeapp.XpeApp
3131
import com.xpeho.xpeapp.ui.components.CustomDialog
3232
import com.xpeho.xpeapp.ui.sendAnalyticsEvent
33+
import com.xpeho.xpeapp.utils.AnalyticsEventName
3334
import com.xpeho.xpeapp.ui.uiState.WordpressUiState
3435
import com.xpeho.xpeapp.ui.viewModel.WordpressViewModel
3536
import com.xpeho.xpeapp.ui.viewModel.viewModelFactory
@@ -49,7 +50,7 @@ fun LoginPage(onLoginSuccess: () -> Unit) {
4950
}
5051
)
5152

52-
sendAnalyticsEvent("login_page")
53+
sendAnalyticsEvent(AnalyticsEventName.LOGIN_PAGE)
5354

5455
// If login is successful, notify of login success
5556
LaunchedEffect(wordpressViewModel.wordpressState) {

0 commit comments

Comments
 (0)