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

DROID-3696 Invite link | Onboarding flow with a no approval invite link (#2469)

This commit is contained in:
Konstantin Ivanov 2025-05-27 10:13:05 +02:00 committed by konstantiniiv
parent ab2f0ea838
commit 42e227ee69
17 changed files with 241 additions and 148 deletions

View file

@ -1,7 +1,6 @@
package com.anytypeio.anytype.di.feature
import com.anytypeio.anytype.analytics.base.Analytics
import com.anytypeio.anytype.core_utils.di.scope.PerDialog
import com.anytypeio.anytype.core_utils.di.scope.PerScreen
import com.anytypeio.anytype.domain.account.AccountStatusChannel
import com.anytypeio.anytype.domain.account.AwaitAccountStartManager
@ -13,6 +12,7 @@ import com.anytypeio.anytype.domain.auth.repo.AuthRepository
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.deeplink.PendingIntentStore
import com.anytypeio.anytype.domain.device.PathProvider
import com.anytypeio.anytype.domain.misc.LocaleProvider
import com.anytypeio.anytype.domain.multiplayer.SpaceInviteResolver
@ -77,7 +77,8 @@ object MainEntryModule {
globalSubscriptionManager: GlobalSubscriptionManager,
spaceInviteResolver: SpaceInviteResolver,
spaceManager: SpaceManager,
spaceViewSubscriptionContainer: SpaceViewSubscriptionContainer
spaceViewSubscriptionContainer: SpaceViewSubscriptionContainer,
pendingIntentStore: PendingIntentStore
): MainViewModelFactory = MainViewModelFactory(
resumeAccount = resumeAccount,
analytics = analytics,
@ -97,7 +98,8 @@ object MainEntryModule {
globalSubscriptionManager = globalSubscriptionManager,
spaceInviteResolver = spaceInviteResolver,
spaceManager = spaceManager,
spaceViews = spaceViewSubscriptionContainer
spaceViews = spaceViewSubscriptionContainer,
pendingIntentStore = pendingIntentStore
)
@JvmStatic

View file

@ -30,7 +30,6 @@ import com.anytypeio.anytype.domain.relations.RemoveFromFeaturedRelations
import com.anytypeio.anytype.domain.templates.CreateTemplateFromObject
import com.anytypeio.anytype.domain.widgets.CreateWidget
import com.anytypeio.anytype.domain.workspace.SpaceManager
import com.anytypeio.anytype.other.DefaultDeepLinkResolver
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
import com.anytypeio.anytype.presentation.common.Action
import com.anytypeio.anytype.presentation.common.Delegator
@ -223,11 +222,6 @@ object ObjectMenuModule {
dispatchers = dispatchers
)
@JvmStatic
@Provides
@PerDialog
fun provideDeeplinkResolver() : DeepLinkResolver = DefaultDeepLinkResolver
@JvmStatic
@Provides
@PerDialog
@ -377,11 +371,6 @@ object ObjectSetMenuModule {
dispatchers = dispatchers
)
@JvmStatic
@Provides
@PerDialog
fun provideDeeplinkResolver() : DeepLinkResolver = DefaultDeepLinkResolver
@JvmStatic
@Provides
@PerDialog

View file

@ -6,6 +6,7 @@ import com.anytypeio.anytype.di.common.ComponentDependencies
import com.anytypeio.anytype.domain.auth.interactor.GetMnemonic
import com.anytypeio.anytype.domain.auth.repo.AuthRepository
import com.anytypeio.anytype.domain.config.ConfigStorage
import com.anytypeio.anytype.domain.deeplink.PendingIntentStore
import com.anytypeio.anytype.domain.device.NetworkConnectionStatus
import com.anytypeio.anytype.domain.network.NetworkModeProvider
import com.anytypeio.anytype.presentation.onboarding.signup.OnboardingMnemonicViewModel
@ -61,6 +62,7 @@ interface OnboardingMnemonicDependencies : ComponentDependencies {
fun config(): ConfigStorage
fun networkModeProvider(): NetworkModeProvider
fun networkConnectionStatus(): NetworkConnectionStatus
fun pendingIntentStore(): PendingIntentStore
}
@Scope

View file

@ -3,7 +3,6 @@ package com.anytypeio.anytype.di.feature.onboarding.signup
import androidx.lifecycle.ViewModelProvider
import com.anytypeio.anytype.CrashReporter
import com.anytypeio.anytype.analytics.base.Analytics
import com.anytypeio.anytype.core_utils.di.scope.PerScreen
import com.anytypeio.anytype.di.common.ComponentDependencies
import com.anytypeio.anytype.domain.account.AwaitAccountStartManager
import com.anytypeio.anytype.domain.auth.interactor.CreateAccount
@ -13,6 +12,7 @@ import com.anytypeio.anytype.domain.base.AppCoroutineDispatchers
import com.anytypeio.anytype.domain.block.repo.BlockRepository
import com.anytypeio.anytype.domain.config.ConfigStorage
import com.anytypeio.anytype.domain.config.UserSettingsRepository
import com.anytypeio.anytype.domain.deeplink.PendingIntentStore
import com.anytypeio.anytype.domain.device.PathProvider
import com.anytypeio.anytype.domain.misc.LocaleProvider
import com.anytypeio.anytype.domain.multiplayer.UserPermissionProvider
@ -131,6 +131,7 @@ interface OnboardingSoulCreationDependencies : ComponentDependencies {
fun awaitAccountStartManager(): AwaitAccountStartManager
fun globalSubscriptionManager(): GlobalSubscriptionManager
fun stringResourceProvider(): StringResourceProvider
fun providePendingIntentStore(): PendingIntentStore
}
@Scope

View file

@ -2,7 +2,6 @@ package com.anytypeio.anytype.di.feature.vault
import androidx.lifecycle.ViewModelProvider
import com.anytypeio.anytype.analytics.base.Analytics
import com.anytypeio.anytype.core_utils.di.scope.PerDialog
import com.anytypeio.anytype.core_utils.di.scope.PerScreen
import com.anytypeio.anytype.di.common.ComponentDependencies
import com.anytypeio.anytype.domain.account.AwaitAccountStartManager
@ -12,6 +11,7 @@ import com.anytypeio.anytype.domain.block.repo.BlockRepository
import com.anytypeio.anytype.domain.chats.ChatPreviewContainer
import com.anytypeio.anytype.domain.config.UserSettingsRepository
import com.anytypeio.anytype.domain.debugging.Logger
import com.anytypeio.anytype.domain.deeplink.PendingIntentStore
import com.anytypeio.anytype.domain.misc.AppActionManager
import com.anytypeio.anytype.domain.misc.UrlBuilder
import com.anytypeio.anytype.domain.multiplayer.SpaceInviteResolver
@ -83,4 +83,5 @@ interface VaultComponentDependencies : ComponentDependencies {
fun awaitAccount(): AwaitAccountStartManager
fun profileContainer(): ProfileSubscriptionManager
fun chatPreviewContainer(): ChatPreviewContainer
fun pendingIntentStore(): PendingIntentStore
}

View file

@ -13,10 +13,12 @@ import com.anytypeio.anytype.domain.chats.ChatPreviewContainer
import com.anytypeio.anytype.domain.config.ConfigStorage
import com.anytypeio.anytype.domain.debugging.DebugAccountSelectTrace
import com.anytypeio.anytype.domain.debugging.Logger
import com.anytypeio.anytype.domain.deeplink.PendingIntentStore
import com.anytypeio.anytype.domain.device.NetworkConnectionStatus
import com.anytypeio.anytype.domain.device.DeviceTokenStoringService
import com.anytypeio.anytype.domain.event.interactor.SpaceSyncAndP2PStatusProvider
import com.anytypeio.anytype.domain.library.StorelessSubscriptionContainer
import com.anytypeio.anytype.domain.misc.DeepLinkResolver
import com.anytypeio.anytype.domain.multiplayer.ActiveSpaceMemberSubscriptionContainer
import com.anytypeio.anytype.domain.multiplayer.DefaultUserPermissionProvider
import com.anytypeio.anytype.domain.multiplayer.SpaceViewSubscriptionContainer
@ -37,6 +39,7 @@ import com.anytypeio.anytype.domain.spaces.SpaceDeletedStatusWatcher
import com.anytypeio.anytype.domain.subscriptions.GlobalSubscriptionManager
import com.anytypeio.anytype.domain.workspace.SpaceManager
import com.anytypeio.anytype.domain.workspace.SyncAndP2PStatusChannel
import com.anytypeio.anytype.other.DefaultDeepLinkResolver
import com.anytypeio.anytype.presentation.sync.SpaceSyncAndP2PStatusProviderImpl
import dagger.Module
import dagger.Provides
@ -298,4 +301,14 @@ object SubscriptionsModule {
dispatchers = dispatchers,
scope = scope
)
@JvmStatic
@Provides
@Singleton
fun provideDeeplinkResolver() : DeepLinkResolver = DefaultDeepLinkResolver
@JvmStatic
@Provides
@Singleton
fun providePendingIntentStore(): PendingIntentStore = PendingIntentStore()
}

View file

@ -455,7 +455,7 @@ class MainActivity : AppCompatActivity(R.layout.activity_main), AppNavigation.Pr
intent.data?.let { uri ->
val data = uri.toString()
if (DefaultDeepLinkResolver.isDeepLink(data)) {
vm.onNewDeepLink(DefaultDeepLinkResolver.resolve(data))
vm.handleNewDeepLink(DefaultDeepLinkResolver.resolve(data))
// Optionally clear to prevent repeat
intent.action = null
@ -544,7 +544,7 @@ class MainActivity : AppCompatActivity(R.layout.activity_main), AppNavigation.Pr
when {
checkDeepLink && DefaultDeepLinkResolver.isDeepLink(raw) -> {
vm.onNewDeepLink(DefaultDeepLinkResolver.resolve(raw))
vm.handleNewDeepLink(DefaultDeepLinkResolver.resolve(raw))
}
raw.isNotEmpty() && !DefaultDeepLinkResolver.isDeepLink(raw) -> {
vm.onIntentTextShare(raw)

View file

@ -145,7 +145,7 @@ class ShareSpaceFragment : BaseBottomSheetComposeFragment() {
}
dialog.show(childFragmentManager, null)
}.onFailure {
Timber.e(it, "Error while navigation")
Timber.e(it, "Error while showing remove member warning")
}
}
is Command.ShowStopSharingWarning -> {

View file

@ -78,7 +78,7 @@ fun MnemonicPhraseScreenWrapper(
copyMnemonicToClipboard = copyMnemonicToClipboard,
mnemonicColorPalette = mnemonicColorPalette,
onGoToAppClicked = {
vm.onGoToTheAppClicked(
vm.handleAppEntryClick(
space = space,
startingObject = startingObject
)

View file

@ -14,7 +14,6 @@ import androidx.fragment.app.viewModels
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.NavOptions
import androidx.navigation.fragment.findNavController
import com.anytypeio.anytype.BuildConfig.USE_EDGE_TO_EDGE
import com.anytypeio.anytype.R
import com.anytypeio.anytype.core_utils.ext.argOrNull
import com.anytypeio.anytype.core_utils.ext.toast
@ -245,6 +244,7 @@ class VaultFragment : BaseComposeFragment() {
override fun onResume() {
super.onResume()
proceedWithDeepLinks()
vm.processPendingDeeplink()
}
private fun proceedWithDeepLinks() {