-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMatomoSwissTransfer.kt
79 lines (69 loc) · 2.46 KB
/
MatomoSwissTransfer.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*
* Infomaniak SwissTransfer - Android
* Copyright (C) 2024 Infomaniak Network SA
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.infomaniak.swisstransfer.ui
import com.infomaniak.core.matomo.Matomo
import com.infomaniak.swisstransfer.ui.utils.DataManagementPreferences
import com.infomaniak.swisstransfer.ui.utils.dataManagementDataStore
import com.infomaniak.swisstransfer.ui.utils.get
import com.infomaniak.swisstransfer.ui.utils.getPreference
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import org.matomo.sdk.Tracker
import splitties.init.appCtx
object MatomoSwissTransfer : Matomo {
enum class MatomoScreen {
Sent,
Received,
Settings,
NewTransfer,
NewTransferFileList,
VerifyMail,
UploadProgress,
UploadError,
UploadSuccess,
SentTransferDetails,
ReceivedTransferDetails,
TransferDetailsFileList,
ThemeSetting,
ValidityPeriodSetting,
DownloadLimitSetting,
EmailLanguageSetting;
override fun toString() = "${name}View"
}
private val scope = CoroutineScope(Dispatchers.Default)
override val tracker: Tracker = with(appCtx) {
buildTracker(shouldOptOut = dataManagementDataStore.getPreference(DataManagementPreferences.IsMatomoAuthorized).not())
}
override val siteId: Int = 24
init {
scope.launch {
with(appCtx) {
dataManagementDataStore.data.collect {
tracker.isOptOut = it[DataManagementPreferences.IsMatomoAuthorized].not()
}
}
}
}
fun trackScreen(screen: MatomoScreen) {
trackScreen(path = "/$screen", title = screen.toString())
}
fun trackTransferTypeEvent(name: String) {
trackEvent("transferType", name)
}
}