diff --git a/app/src/main/java/com/anytypeio/anytype/di/feature/MainEntryDI.kt b/app/src/main/java/com/anytypeio/anytype/di/feature/MainEntryDI.kt index 2dc17d1247..0920e18654 100644 --- a/app/src/main/java/com/anytypeio/anytype/di/feature/MainEntryDI.kt +++ b/app/src/main/java/com/anytypeio/anytype/di/feature/MainEntryDI.kt @@ -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 diff --git a/app/src/main/java/com/anytypeio/anytype/di/feature/auth/DeletedAccountDI.kt b/app/src/main/java/com/anytypeio/anytype/di/feature/auth/DeletedAccountDI.kt index c8d18131ac..b10eb36cad 100644 --- a/app/src/main/java/com/anytypeio/anytype/di/feature/auth/DeletedAccountDI.kt +++ b/app/src/main/java/com/anytypeio/anytype/di/feature/auth/DeletedAccountDI.kt @@ -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 } \ No newline at end of file diff --git a/app/src/main/java/com/anytypeio/anytype/di/feature/onboarding/login/OnboardingMnemonicLoginDI.kt b/app/src/main/java/com/anytypeio/anytype/di/feature/onboarding/login/OnboardingMnemonicLoginDI.kt index eec72f0b8c..6268e6b7a5 100644 --- a/app/src/main/java/com/anytypeio/anytype/di/feature/onboarding/login/OnboardingMnemonicLoginDI.kt +++ b/app/src/main/java/com/anytypeio/anytype/di/feature/onboarding/login/OnboardingMnemonicLoginDI.kt @@ -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 } \ No newline at end of file diff --git a/app/src/main/java/com/anytypeio/anytype/di/feature/onboarding/signup/OnboardingSoulCreationDI.kt b/app/src/main/java/com/anytypeio/anytype/di/feature/onboarding/signup/OnboardingSoulCreationDI.kt index 8629a78575..77469a2434 100644 --- a/app/src/main/java/com/anytypeio/anytype/di/feature/onboarding/signup/OnboardingSoulCreationDI.kt +++ b/app/src/main/java/com/anytypeio/anytype/di/feature/onboarding/signup/OnboardingSoulCreationDI.kt @@ -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 diff --git a/app/src/main/java/com/anytypeio/anytype/di/feature/settings/LogoutWarningDI.kt b/app/src/main/java/com/anytypeio/anytype/di/feature/settings/LogoutWarningDI.kt index b4b197b9da..75d2254328 100644 --- a/app/src/main/java/com/anytypeio/anytype/di/feature/settings/LogoutWarningDI.kt +++ b/app/src/main/java/com/anytypeio/anytype/di/feature/settings/LogoutWarningDI.kt @@ -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 diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/auth/account/DeletedAccountViewModel.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/auth/account/DeletedAccountViewModel.kt index 408ac415b1..d7a056aabf 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/auth/account/DeletedAccountViewModel.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/auth/account/DeletedAccountViewModel.kt @@ -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(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 create(modelClass: Class): T { @@ -172,7 +176,8 @@ class DeletedAccountViewModel( relationsSubscriptionManager = relationsSubscriptionManager, objectTypesSubscriptionManager = objectTypesSubscriptionManager, spaceDeletedStatusWatcher = spaceDeletedStatusWatcher, - appActionManager = appActionManager + appActionManager = appActionManager, + userPermissionProvider = userPermissionProvider ) as T } } diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/main/MainViewModel.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/main/MainViewModel.kt index 89b822d248..0975725927 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/main/MainViewModel.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/main/MainViewModel.kt @@ -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.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( diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/main/MainViewModelFactory.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/main/MainViewModelFactory.kt index 1935c3bae0..8dae1817d6 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/main/MainViewModelFactory.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/main/MainViewModelFactory.kt @@ -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 create( @@ -45,6 +47,7 @@ class MainViewModelFactory @Inject constructor( checkAuthorizationStatus = checkAuthorizationStatus, configStorage = configStorage, spaceDeletedStatusWatcher = spaceDeletedStatusWatcher, - localeProvider = localeProvider + localeProvider = localeProvider, + userPermissionProvider = userPermissionProvider ) as T } \ No newline at end of file diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/onboarding/login/OnboardingMnemonicLoginViewModel.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/onboarding/login/OnboardingMnemonicLoginViewModel.kt index 1d9b433162..69c14beb9e 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/onboarding/login/OnboardingMnemonicLoginViewModel.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/onboarding/login/OnboardingMnemonicLoginViewModel.kt @@ -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() @@ -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 create(modelClass: Class): T { @@ -312,7 +316,8 @@ class OnboardingMnemonicLoginViewModel @Inject constructor( observeAccounts = observeAccounts, spaceDeletedStatusWatcher = spaceDeletedStatusWatcher, selectAccount = selectAccount, - localeProvider = localeProvider + localeProvider = localeProvider, + userPermissionProvider = userPermissionProvider ) as T } } diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/onboarding/signup/OnboardingSetProfileNameViewModel.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/onboarding/signup/OnboardingSetProfileNameViewModel.kt index 0120dee72f..bdb9d1996f 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/onboarding/signup/OnboardingSetProfileNameViewModel.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/onboarding/signup/OnboardingSetProfileNameViewModel.kt @@ -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 create(modelClass: Class): T { @@ -235,7 +239,8 @@ class OnboardingSetProfileNameViewModel @Inject constructor( objectTypesSubscriptionManager = objectTypesSubscriptionManager, crashReporter = crashReporter, spaceDeletedStatusWatcher = spaceDeletedStatusWatcher, - localeProvider = localeProvider + localeProvider = localeProvider, + userPermissionProvider = userPermissionProvider ) as T } } diff --git a/ui-settings/src/main/java/com/anytypeio/anytype/ui_settings/account/LogoutWarningViewModel.kt b/ui-settings/src/main/java/com/anytypeio/anytype/ui_settings/account/LogoutWarningViewModel.kt index d59d5df1e9..1e36d2506d 100644 --- a/ui-settings/src/main/java/com/anytypeio/anytype/ui_settings/account/LogoutWarningViewModel.kt +++ b/ui-settings/src/main/java/com/anytypeio/anytype/ui_settings/account/LogoutWarningViewModel.kt @@ -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(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 create(modelClass: Class): T { @@ -101,7 +105,8 @@ class LogoutWarningViewModel( relationsSubscriptionManager = relationsSubscriptionManager, objectTypesSubscriptionManager = objectTypesSubscriptionManager, spaceDeletedStatusWatcher = spaceDeletedStatusWatcher, - appActionManager = appActionManager + appActionManager = appActionManager, + userPermissionProvider = userPermissionProvider ) as T } }