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:
parent
1ffcd74767
commit
837839b147
6 changed files with 48 additions and 8 deletions
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue