1
0
Fork 0
mirror of https://github.com/anyproto/anytype-kotlin.git synced 2025-06-08 05:47:05 +09:00

DROID-281 Analytics | Account deletion and logout (#2492)

* DROID-281 add events

* DROID-281 logout from settings event

* DROID-281 delete account event

* DROID-281 cancel deletion event

* DROID-281 logout from delete screen event

* DROID-281 test fix

Co-authored-by: konstantiniiv <ki@anytype.io>
This commit is contained in:
Konstantin Ivanov 2022-08-09 15:11:08 +02:00 committed by GitHub
parent 1ffcd74767
commit 837839b147
Signed by: github
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 48 additions and 8 deletions

View file

@ -10,6 +10,8 @@ object EventsDictionary {
const val createAccount = "CreateAccount"
const val openAccount = "OpenAccount"
const val logout = "LogOut"
const val deleteAccount = "DeleteAccount"
const val cancelDeletion = "CancelDeletion"
// Dashboard view events
const val showHome = "ScreenHome"
@ -120,6 +122,8 @@ object EventsDictionary {
const val objPowerTool = "Powertool"
const val objTurnInto = "TurnInto"
const val tabFavorites = "Favorites"
const val screenSettings = "ScreenSettings"
const val screenDeletion = "ScreenDeletion"
}
object Type {

View file

@ -1,5 +1,6 @@
package com.anytypeio.anytype.di.feature.auth
import com.anytypeio.anytype.analytics.base.Analytics
import com.anytypeio.anytype.core_utils.di.scope.PerScreen
import com.anytypeio.anytype.domain.account.DateHelper
import com.anytypeio.anytype.domain.account.RestoreAccount
@ -33,11 +34,13 @@ object DeletedAccountModule {
fun provideViewModelFactory(
restoreAccount: RestoreAccount,
logout: Logout,
helper: DateHelper
helper: DateHelper,
analytics: Analytics
): DeletedAccountViewModel.Factory = DeletedAccountViewModel.Factory(
restoreAccount = restoreAccount,
logout = logout,
helper = helper
helper = helper,
analytics = analytics
)
@JvmStatic

View file

@ -3,6 +3,11 @@ package com.anytypeio.anytype.presentation.auth.account
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope
import com.anytypeio.anytype.analytics.base.Analytics
import com.anytypeio.anytype.analytics.base.EventsDictionary
import com.anytypeio.anytype.analytics.base.EventsPropertiesKey
import com.anytypeio.anytype.analytics.base.sendEvent
import com.anytypeio.anytype.analytics.props.Props
import com.anytypeio.anytype.core_models.AccountStatus
import com.anytypeio.anytype.domain.account.DateHelper
import com.anytypeio.anytype.domain.account.RestoreAccount
@ -22,7 +27,8 @@ import kotlin.time.toDuration
class DeletedAccountViewModel(
private val restoreAccount: RestoreAccount,
private val logout: Logout,
private val dateHelper: DateHelper
private val dateHelper: DateHelper,
private val analytics: Analytics
) : BaseViewModel() {
val commands = MutableSharedFlow<Command>(replay = 0)
@ -74,6 +80,10 @@ class DeletedAccountViewModel(
// TODO
}
}
sendEvent(
analytics = analytics,
eventName = EventsDictionary.cancelDeletion
)
},
failure = {
Timber.e(it, "Error while cancelling account deletion")
@ -107,6 +117,13 @@ class DeletedAccountViewModel(
}
}
}
sendEvent(
analytics = analytics,
eventName = EventsDictionary.logout,
props = Props(
mapOf(EventsPropertiesKey.route to EventsDictionary.Routes.screenDeletion)
)
)
}
} else {
sendToast(LOG_OUT_MSG)
@ -116,14 +133,16 @@ class DeletedAccountViewModel(
class Factory(
private val restoreAccount: RestoreAccount,
private val logout: Logout,
private val helper: DateHelper
private val helper: DateHelper,
private val analytics: Analytics
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(modelClass: Class<T>): T {
return DeletedAccountViewModel(
restoreAccount = restoreAccount,
logout = logout,
dateHelper = helper
dateHelper = helper,
analytics = analytics
) as T
}
}
@ -135,7 +154,7 @@ class DeletedAccountViewModel(
sealed class DeletionDate {
object Unknown : DeletionDate()
object Deleted: DeletionDate()
object Deleted : DeletionDate()
object Today : DeletionDate()
object Tomorrow : DeletionDate()
data class Later(val days: Int) : DeletionDate()

View file

@ -1,6 +1,7 @@
package com.anytypeio.anytype.presentation.auth
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
import com.anytypeio.anytype.analytics.base.Analytics
import com.anytypeio.anytype.domain.account.DateHelper
import com.anytypeio.anytype.domain.account.RestoreAccount
import com.anytypeio.anytype.domain.auth.interactor.Logout
@ -45,6 +46,9 @@ class DeleteAccountViewModelTest {
@Mock
lateinit var configStorage: ConfigStorage
@Mock
lateinit var analytics: Analytics
lateinit var restoreAccount: RestoreAccount
lateinit var logout: Logout
@ -65,7 +69,8 @@ class DeleteAccountViewModelTest {
vm = DeletedAccountViewModel(
restoreAccount = restoreAccount,
logout = logout,
dateHelper = helper
dateHelper = helper,
analytics = analytics
)
}

View file

@ -59,6 +59,10 @@ class AccountAndDataViewModel(
viewModelScope.launch {
deleteAccount(BaseUseCase.None).process(
success = {
sendEvent(
analytics = analytics,
eventName = EventsDictionary.deleteAccount
)
Timber.d("Successfully deleted account, status")
},
failure = {

View file

@ -36,7 +36,12 @@ class LogoutWarningViewModel(
analytics = analytics,
startTime = startTime,
middleTime = System.currentTimeMillis(),
eventName = EventsDictionary.logout
eventName = EventsDictionary.logout,
props = Props(
mapOf(
EventsPropertiesKey.route to EventsDictionary.Routes.screenSettings
)
)
)
isLoggingOut.value = false
commands.emit(Command.Logout)