Skip to content

Commit 73aed99

Browse files
authored
Merge eda1859 into b0bea40
2 parents b0bea40 + eda1859 commit 73aed99

File tree

4 files changed

+17
-14
lines changed

4 files changed

+17
-14
lines changed

firebase-sessions/src/main/kotlin/com/google/firebase/sessions/FirebaseSessions.kt

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@ internal constructor(
3535
backgroundDispatcher: CoroutineDispatcher,
3636
transportFactoryProvider: Provider<TransportFactory>,
3737
) {
38-
private val sessionGenerator = SessionGenerator(collectEvents = true)
38+
private val sessionSettings = SessionsSettings(firebaseApp.applicationContext)
39+
private val sessionGenerator = SessionGenerator(collectEvents = shouldCollectEvents())
3940
private val eventGDTLogger = EventGDTLogger(transportFactoryProvider)
4041
private val sessionCoordinator =
4142
SessionCoordinator(firebaseInstallations, backgroundDispatcher, eventGDTLogger)
42-
private val sessionSettings = SessionsSettings(firebaseApp.applicationContext)
4343
private val timeProvider: TimeProvider = Time()
4444

4545
init {
@@ -61,12 +61,22 @@ internal constructor(
6161

6262
private fun initiateSessionStart() {
6363
val sessionDetails = sessionGenerator.generateNewSession()
64-
val sessionEvent =
65-
SessionEvents.startSession(firebaseApp, sessionDetails, sessionSettings, timeProvider)
6664

67-
if (sessionDetails.collectEvents) {
68-
sessionCoordinator.attemptLoggingSessionEvent(sessionEvent)
65+
if (!sessionGenerator.collectEvents) {
66+
Log.d(TAG, "Sessions SDK has sampled this session")
67+
return
6968
}
69+
70+
sessionCoordinator.attemptLoggingSessionEvent(
71+
SessionEvents.startSession(firebaseApp, sessionDetails, sessionSettings, timeProvider)
72+
)
73+
}
74+
75+
/** Calculate whether we should sample events using [sessionSettings] data. */
76+
private fun shouldCollectEvents(): Boolean {
77+
// Sampling rate of 1 means we do not sample.
78+
val randomValue = Math.random()
79+
return randomValue <= sessionSettings.samplingRate
7080
}
7181

7282
companion object {

firebase-sessions/src/main/kotlin/com/google/firebase/sessions/SessionGenerator.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import java.util.UUID
2626
internal data class SessionDetails(
2727
val sessionId: String,
2828
val firstSessionId: String,
29-
val collectEvents: Boolean,
3029
val sessionIndex: Int,
3130
)
3231

@@ -37,7 +36,7 @@ internal data class SessionDetails(
3736
* @hide
3837
*/
3938
internal class SessionGenerator(
40-
private val collectEvents: Boolean,
39+
val collectEvents: Boolean,
4140
private val uuidGenerator: () -> UUID = UUID::randomUUID
4241
) {
4342
private val firstSessionId = generateSessionId()
@@ -54,7 +53,6 @@ internal class SessionGenerator(
5453
SessionDetails(
5554
sessionId = if (sessionIndex == 0) firstSessionId else generateSessionId(),
5655
firstSessionId,
57-
collectEvents,
5856
sessionIndex,
5957
)
6058
return currentSession

firebase-sessions/src/test/kotlin/com/google/firebase/sessions/SessionGeneratorTest.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ class SessionGeneratorTest {
7272
SessionDetails(
7373
sessionId = SESSION_ID_1,
7474
firstSessionId = SESSION_ID_1,
75-
collectEvents = true,
7675
sessionIndex = 0,
7776
)
7877
)
@@ -94,7 +93,6 @@ class SessionGeneratorTest {
9493
SessionDetails(
9594
sessionId = SESSION_ID_1,
9695
firstSessionId = SESSION_ID_1,
97-
collectEvents = true,
9896
sessionIndex = 0,
9997
)
10098
)
@@ -110,7 +108,6 @@ class SessionGeneratorTest {
110108
SessionDetails(
111109
sessionId = SESSION_ID_2,
112110
firstSessionId = SESSION_ID_1,
113-
collectEvents = true,
114111
sessionIndex = 1,
115112
)
116113
)
@@ -126,7 +123,6 @@ class SessionGeneratorTest {
126123
SessionDetails(
127124
sessionId = SESSION_ID_3,
128125
firstSessionId = SESSION_ID_1,
129-
collectEvents = true,
130126
sessionIndex = 2,
131127
)
132128
)

firebase-sessions/src/test/kotlin/com/google/firebase/sessions/testing/TestSessionEventData.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ internal object TestSessionEventData {
2626
SessionDetails(
2727
sessionId = "a1b2c3",
2828
firstSessionId = "a1a1a1",
29-
collectEvents = true,
3029
sessionIndex = 3,
3130
)
3231

0 commit comments

Comments
 (0)