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

DROID-2251 Multiplayer | Tech | UserPermissionProvider won't start after onboarding + Should stop on logout or account deletion (#1016)

This commit is contained in:
Evgenii Kozlov 2024-03-20 12:22:57 +01:00 committed by GitHub
parent 74ef0d58fd
commit 2ef91fa045
Signed by: github
GPG key ID: B5690EEEBB952194
11 changed files with 56 additions and 18 deletions

View file

@ -14,6 +14,7 @@ import com.anytypeio.anytype.domain.config.ConfigStorage
import com.anytypeio.anytype.domain.config.UserSettingsRepository
import com.anytypeio.anytype.domain.device.PathProvider
import com.anytypeio.anytype.domain.misc.LocaleProvider
import com.anytypeio.anytype.domain.multiplayer.UserPermissionProvider
import com.anytypeio.anytype.domain.platform.MetricsProvider
import com.anytypeio.anytype.domain.search.ObjectTypesSubscriptionManager
import com.anytypeio.anytype.domain.search.RelationsSubscriptionManager
@ -63,7 +64,8 @@ object MainEntryModule {
checkAuthorizationStatus: CheckAuthorizationStatus,
configStorage: ConfigStorage,
spaceDeletedStatusWatcher: SpaceDeletedStatusWatcher,
localeProvider: LocaleProvider
localeProvider: LocaleProvider,
userPermissionProvider: UserPermissionProvider
): MainViewModelFactory = MainViewModelFactory(
resumeAccount = resumeAccount,
analytics = analytics,
@ -76,7 +78,8 @@ object MainEntryModule {
checkAuthorizationStatus = checkAuthorizationStatus,
configStorage = configStorage,
spaceDeletedStatusWatcher = spaceDeletedStatusWatcher,
localeProvider = localeProvider
localeProvider = localeProvider,
userPermissionProvider = userPermissionProvider
)
@JvmStatic

View file

@ -13,6 +13,7 @@ import com.anytypeio.anytype.domain.base.AppCoroutineDispatchers
import com.anytypeio.anytype.domain.config.ConfigStorage
import com.anytypeio.anytype.domain.config.UserSettingsRepository
import com.anytypeio.anytype.domain.misc.AppActionManager
import com.anytypeio.anytype.domain.multiplayer.UserPermissionProvider
import com.anytypeio.anytype.domain.search.ObjectTypesSubscriptionManager
import com.anytypeio.anytype.domain.search.RelationsSubscriptionManager
import com.anytypeio.anytype.domain.spaces.SpaceDeletedStatusWatcher
@ -101,9 +102,9 @@ interface DeletedAccountDependencies : ComponentDependencies {
fun authRepository(): AuthRepository
fun userSettingsRepository(): UserSettingsRepository
fun spaceManager(): SpaceManager
fun relationsSubscriptionManager(): RelationsSubscriptionManager
fun objectTypesSubscriptionManager(): ObjectTypesSubscriptionManager
fun spaceDeletedStatusWatcher(): SpaceDeletedStatusWatcher
fun awaitAccountStartManager(): AwaitAccountStartManager
fun userPermissionProvider(): UserPermissionProvider
}

View file

@ -10,6 +10,7 @@ import com.anytypeio.anytype.domain.auth.repo.AuthRepository
import com.anytypeio.anytype.domain.config.ConfigStorage
import com.anytypeio.anytype.domain.device.PathProvider
import com.anytypeio.anytype.domain.misc.LocaleProvider
import com.anytypeio.anytype.domain.multiplayer.UserPermissionProvider
import com.anytypeio.anytype.domain.platform.MetricsProvider
import com.anytypeio.anytype.domain.search.ObjectTypesSubscriptionManager
import com.anytypeio.anytype.domain.search.RelationsSubscriptionManager
@ -62,4 +63,5 @@ interface OnboardingMnemonicLoginDependencies : ComponentDependencies {
fun spaceStatusWatcher(): SpaceDeletedStatusWatcher
fun localeProvider(): LocaleProvider
fun awaitAccountStartManager(): AwaitAccountStartManager
fun userPermissionProvider() : UserPermissionProvider
}

View file

@ -13,6 +13,7 @@ import com.anytypeio.anytype.domain.config.ConfigStorage
import com.anytypeio.anytype.domain.config.UserSettingsRepository
import com.anytypeio.anytype.domain.device.PathProvider
import com.anytypeio.anytype.domain.misc.LocaleProvider
import com.anytypeio.anytype.domain.multiplayer.UserPermissionProvider
import com.anytypeio.anytype.domain.`object`.ImportGetStartedUseCase
import com.anytypeio.anytype.domain.platform.MetricsProvider
import com.anytypeio.anytype.domain.search.ObjectTypesSubscriptionManager
@ -111,6 +112,7 @@ interface OnboardingSoulCreationDependencies : ComponentDependencies {
fun spaceManager(): SpaceManager
fun spaceStatusWatcher(): SpaceDeletedStatusWatcher
fun localeProvider(): LocaleProvider
fun userPermissionProvider(): UserPermissionProvider
}
@Scope

View file

@ -9,6 +9,7 @@ import com.anytypeio.anytype.domain.base.AppCoroutineDispatchers
import com.anytypeio.anytype.domain.config.ConfigStorage
import com.anytypeio.anytype.domain.config.UserSettingsRepository
import com.anytypeio.anytype.domain.misc.AppActionManager
import com.anytypeio.anytype.domain.multiplayer.UserPermissionProvider
import com.anytypeio.anytype.domain.search.ObjectTypesSubscriptionManager
import com.anytypeio.anytype.domain.search.RelationsSubscriptionManager
import com.anytypeio.anytype.domain.spaces.SpaceDeletedStatusWatcher
@ -45,13 +46,15 @@ object LogoutWarningModule {
objectTypesSubscriptionManager: ObjectTypesSubscriptionManager,
spaceDeletedStatusWatcher: SpaceDeletedStatusWatcher,
appActionManager: AppActionManager,
userPermissionProvider: UserPermissionProvider
): LogoutWarningViewModel.Factory = LogoutWarningViewModel.Factory(
logout = logout,
analytics = analytics,
relationsSubscriptionManager = relationsSubscriptionManager,
appActionManager = appActionManager,
spaceDeletedStatusWatcher = spaceDeletedStatusWatcher,
objectTypesSubscriptionManager = objectTypesSubscriptionManager
objectTypesSubscriptionManager = objectTypesSubscriptionManager,
userPermissionProvider = userPermissionProvider
)
@JvmStatic

View file

@ -15,6 +15,7 @@ import com.anytypeio.anytype.domain.auth.interactor.Logout
import com.anytypeio.anytype.domain.base.BaseUseCase
import com.anytypeio.anytype.domain.base.Interactor
import com.anytypeio.anytype.domain.misc.AppActionManager
import com.anytypeio.anytype.domain.multiplayer.UserPermissionProvider
import com.anytypeio.anytype.domain.search.ObjectTypesSubscriptionManager
import com.anytypeio.anytype.domain.search.RelationsSubscriptionManager
import com.anytypeio.anytype.domain.spaces.SpaceDeletedStatusWatcher
@ -37,7 +38,8 @@ class DeletedAccountViewModel(
private val relationsSubscriptionManager: RelationsSubscriptionManager,
private val objectTypesSubscriptionManager: ObjectTypesSubscriptionManager,
private val spaceDeletedStatusWatcher: SpaceDeletedStatusWatcher,
private val appActionManager: AppActionManager
private val appActionManager: AppActionManager,
private val userPermissionProvider: UserPermissionProvider
) : BaseViewModel() {
val commands = MutableSharedFlow<Command>(replay = 0)
@ -150,6 +152,7 @@ class DeletedAccountViewModel(
relationsSubscriptionManager.onStop()
objectTypesSubscriptionManager.onStop()
spaceDeletedStatusWatcher.onStop()
userPermissionProvider.stop()
}
class Factory @Inject constructor(
@ -160,7 +163,8 @@ class DeletedAccountViewModel(
private val relationsSubscriptionManager: RelationsSubscriptionManager,
private val objectTypesSubscriptionManager: ObjectTypesSubscriptionManager,
private val spaceDeletedStatusWatcher: SpaceDeletedStatusWatcher,
private val appActionManager: AppActionManager
private val appActionManager: AppActionManager,
private val userPermissionProvider: UserPermissionProvider
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(modelClass: Class<T>): T {
@ -172,7 +176,8 @@ class DeletedAccountViewModel(
relationsSubscriptionManager = relationsSubscriptionManager,
objectTypesSubscriptionManager = objectTypesSubscriptionManager,
spaceDeletedStatusWatcher = spaceDeletedStatusWatcher,
appActionManager = appActionManager
appActionManager = appActionManager,
userPermissionProvider = userPermissionProvider
) as T
}
}

View file

@ -18,6 +18,7 @@ import com.anytypeio.anytype.domain.base.BaseUseCase
import com.anytypeio.anytype.domain.base.Interactor
import com.anytypeio.anytype.domain.config.ConfigStorage
import com.anytypeio.anytype.domain.misc.LocaleProvider
import com.anytypeio.anytype.domain.multiplayer.UserPermissionProvider
import com.anytypeio.anytype.domain.search.ObjectTypesSubscriptionManager
import com.anytypeio.anytype.domain.search.RelationsSubscriptionManager
import com.anytypeio.anytype.domain.spaces.SpaceDeletedStatusWatcher
@ -42,7 +43,8 @@ class MainViewModel(
private val checkAuthorizationStatus: CheckAuthorizationStatus,
private val configStorage: ConfigStorage,
private val spaceDeletedStatusWatcher: SpaceDeletedStatusWatcher,
private val localeProvider: LocaleProvider
private val localeProvider: LocaleProvider,
private val userPermissionProvider: UserPermissionProvider
) : ViewModel() {
val wallpaper = MutableStateFlow<Wallpaper>(Wallpaper.Default)
@ -104,6 +106,7 @@ class MainViewModel(
relationsSubscriptionManager.onStop()
objectTypesSubscriptionManager.onStop()
spaceDeletedStatusWatcher.onStop()
userPermissionProvider.stop()
}
fun onRestore() {
@ -122,6 +125,7 @@ class MainViewModel(
relationsSubscriptionManager.onStart()
objectTypesSubscriptionManager.onStart()
spaceDeletedStatusWatcher.onStart()
userPermissionProvider.start()
val analyticsID = configStorage.getOrNull()?.analytics
if (analyticsID != null) {
updateUserProperties(

View file

@ -9,6 +9,7 @@ import com.anytypeio.anytype.domain.auth.interactor.Logout
import com.anytypeio.anytype.domain.auth.interactor.ResumeAccount
import com.anytypeio.anytype.domain.config.ConfigStorage
import com.anytypeio.anytype.domain.misc.LocaleProvider
import com.anytypeio.anytype.domain.multiplayer.UserPermissionProvider
import com.anytypeio.anytype.domain.search.ObjectTypesSubscriptionManager
import com.anytypeio.anytype.domain.search.RelationsSubscriptionManager
import com.anytypeio.anytype.domain.spaces.SpaceDeletedStatusWatcher
@ -28,7 +29,8 @@ class MainViewModelFactory @Inject constructor(
private val checkAuthorizationStatus: CheckAuthorizationStatus,
private val configStorage: ConfigStorage,
private val spaceDeletedStatusWatcher: SpaceDeletedStatusWatcher,
private val localeProvider: LocaleProvider
private val localeProvider: LocaleProvider,
private val userPermissionProvider: UserPermissionProvider
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(
@ -45,6 +47,7 @@ class MainViewModelFactory @Inject constructor(
checkAuthorizationStatus = checkAuthorizationStatus,
configStorage = configStorage,
spaceDeletedStatusWatcher = spaceDeletedStatusWatcher,
localeProvider = localeProvider
localeProvider = localeProvider,
userPermissionProvider = userPermissionProvider
) as T
}

View file

@ -21,6 +21,7 @@ import com.anytypeio.anytype.domain.auth.interactor.StartLoadingAccounts
import com.anytypeio.anytype.domain.config.ConfigStorage
import com.anytypeio.anytype.domain.device.PathProvider
import com.anytypeio.anytype.domain.misc.LocaleProvider
import com.anytypeio.anytype.domain.multiplayer.UserPermissionProvider
import com.anytypeio.anytype.domain.search.ObjectTypesSubscriptionManager
import com.anytypeio.anytype.domain.search.RelationsSubscriptionManager
import com.anytypeio.anytype.domain.spaces.SpaceDeletedStatusWatcher
@ -49,7 +50,8 @@ class OnboardingMnemonicLoginViewModel @Inject constructor(
private val spaceDeletedStatusWatcher: SpaceDeletedStatusWatcher,
private val crashReporter: CrashReporter,
private val configStorage: ConfigStorage,
private val localeProvider: LocaleProvider
private val localeProvider: LocaleProvider,
private val userPermissionProvider: UserPermissionProvider
) : ViewModel() {
private val jobs = mutableListOf<Job>()
@ -247,6 +249,7 @@ class OnboardingMnemonicLoginViewModel @Inject constructor(
relationsSubscriptionManager.onStart()
objectTypesSubscriptionManager.onStart()
spaceDeletedStatusWatcher.onStart()
userPermissionProvider.start()
}
private fun navigateToDashboard() {
@ -295,6 +298,7 @@ class OnboardingMnemonicLoginViewModel @Inject constructor(
private val crashReporter: CrashReporter,
private val configStorage: ConfigStorage,
private val localeProvider: LocaleProvider,
private val userPermissionProvider: UserPermissionProvider
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(modelClass: Class<T>): T {
@ -312,7 +316,8 @@ class OnboardingMnemonicLoginViewModel @Inject constructor(
observeAccounts = observeAccounts,
spaceDeletedStatusWatcher = spaceDeletedStatusWatcher,
selectAccount = selectAccount,
localeProvider = localeProvider
localeProvider = localeProvider,
userPermissionProvider = userPermissionProvider
) as T
}
}

View file

@ -17,6 +17,7 @@ import com.anytypeio.anytype.domain.base.fold
import com.anytypeio.anytype.domain.config.ConfigStorage
import com.anytypeio.anytype.domain.device.PathProvider
import com.anytypeio.anytype.domain.misc.LocaleProvider
import com.anytypeio.anytype.domain.multiplayer.UserPermissionProvider
import com.anytypeio.anytype.domain.`object`.ImportGetStartedUseCase
import com.anytypeio.anytype.domain.`object`.SetObjectDetails
import com.anytypeio.anytype.domain.search.ObjectTypesSubscriptionManager
@ -48,7 +49,8 @@ class OnboardingSetProfileNameViewModel @Inject constructor(
private val relationsSubscriptionManager: RelationsSubscriptionManager,
private val objectTypesSubscriptionManager: ObjectTypesSubscriptionManager,
private val spaceDeletedStatusWatcher: SpaceDeletedStatusWatcher,
private val localeProvider: LocaleProvider
private val localeProvider: LocaleProvider,
private val userPermissionProvider: UserPermissionProvider
) : BaseViewModel() {
init {
@ -135,6 +137,7 @@ class OnboardingSetProfileNameViewModel @Inject constructor(
relationsSubscriptionManager.onStart()
objectTypesSubscriptionManager.onStart()
spaceDeletedStatusWatcher.onStart()
userPermissionProvider.start()
}
private fun proceedWithSettingAccountName(name: String) {
@ -217,7 +220,8 @@ class OnboardingSetProfileNameViewModel @Inject constructor(
private val objectTypesSubscriptionManager: ObjectTypesSubscriptionManager,
private val crashReporter: CrashReporter,
private val spaceDeletedStatusWatcher: SpaceDeletedStatusWatcher,
private val localeProvider: LocaleProvider
private val localeProvider: LocaleProvider,
private val userPermissionProvider: UserPermissionProvider
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(modelClass: Class<T>): T {
@ -235,7 +239,8 @@ class OnboardingSetProfileNameViewModel @Inject constructor(
objectTypesSubscriptionManager = objectTypesSubscriptionManager,
crashReporter = crashReporter,
spaceDeletedStatusWatcher = spaceDeletedStatusWatcher,
localeProvider = localeProvider
localeProvider = localeProvider,
userPermissionProvider = userPermissionProvider
) as T
}
}

View file

@ -11,6 +11,7 @@ import com.anytypeio.anytype.analytics.props.Props
import com.anytypeio.anytype.domain.auth.interactor.Logout
import com.anytypeio.anytype.domain.base.Interactor
import com.anytypeio.anytype.domain.misc.AppActionManager
import com.anytypeio.anytype.domain.multiplayer.UserPermissionProvider
import com.anytypeio.anytype.domain.search.ObjectTypesSubscriptionManager
import com.anytypeio.anytype.domain.search.RelationsSubscriptionManager
import com.anytypeio.anytype.domain.spaces.SpaceDeletedStatusWatcher
@ -26,7 +27,8 @@ class LogoutWarningViewModel(
private val relationsSubscriptionManager: RelationsSubscriptionManager,
private val objectTypesSubscriptionManager: ObjectTypesSubscriptionManager,
private val spaceDeletedStatusWatcher: SpaceDeletedStatusWatcher,
private val appActionManager: AppActionManager
private val appActionManager: AppActionManager,
private val userPermissionProvider: UserPermissionProvider
) : ViewModel() {
val commands = MutableSharedFlow<Command>(replay = 0)
@ -73,6 +75,7 @@ class LogoutWarningViewModel(
relationsSubscriptionManager.onStop()
objectTypesSubscriptionManager.onStop()
spaceDeletedStatusWatcher.onStop()
userPermissionProvider.stop()
}
fun onBackupClicked() {
@ -91,7 +94,8 @@ class LogoutWarningViewModel(
private val relationsSubscriptionManager: RelationsSubscriptionManager,
private val objectTypesSubscriptionManager: ObjectTypesSubscriptionManager,
private val spaceDeletedStatusWatcher: SpaceDeletedStatusWatcher,
private val appActionManager: AppActionManager
private val appActionManager: AppActionManager,
private val userPermissionProvider: UserPermissionProvider
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(modelClass: Class<T>): T {
@ -101,7 +105,8 @@ class LogoutWarningViewModel(
relationsSubscriptionManager = relationsSubscriptionManager,
objectTypesSubscriptionManager = objectTypesSubscriptionManager,
spaceDeletedStatusWatcher = spaceDeletedStatusWatcher,
appActionManager = appActionManager
appActionManager = appActionManager,
userPermissionProvider = userPermissionProvider
) as T
}
}