Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
f79238e
DROID-3903 new sharing screen
konstantiniiv Nov 13, 2025
153fbe1
DROID-3903 ui 2
konstantiniiv Nov 13, 2025
08b928a
DROID-3903 ui 3
konstantiniiv Nov 13, 2025
3f4f4d9
DROID-3903 refactoring
konstantiniiv Nov 14, 2025
d295385
DROID-3903 Merge branch 'main' into droid-3903-epic-redesign-sharing-…
konstantiniiv Nov 20, 2025
8e88e67
DROID-3903 Merge branch 'main' into droid-3903-epic-redesign-sharing-…
konstantiniiv Nov 27, 2025
011f204
DROID-3903 Merge branch 'main' into droid-3903-epic-redesign-sharing-…
konstantiniiv Dec 1, 2025
5ec1652
DROID-3903 Merge branch 'main' into droid-3903-epic-redesign-sharing-…
konstantiniiv Dec 4, 2025
df1e302
DROID-3903 Merge branch 'main' into droid-3903-epic-redesign-sharing-…
konstantiniiv Dec 4, 2025
ee4c4f9
DROID-3903 share logic
konstantiniiv Dec 8, 2025
e244784
DROID-3903 Merge branch 'main' into droid-3903-epic-redesign-sharing-…
konstantiniiv Dec 9, 2025
95fead4
DROID-3903 Merge branch 'main' into droid-3903-epic-redesign-sharing-…
konstantiniiv Dec 18, 2025
a2bea06
DROID-3903 di
konstantiniiv Dec 22, 2025
753b929
DROID-3903 legacy
konstantiniiv Dec 23, 2025
d0dd01b
DROID-3903 legacy
konstantiniiv Dec 23, 2025
b294373
DROID-3903 ui
konstantiniiv Dec 23, 2025
97e7cb1
DROID-3903 logic
konstantiniiv Dec 23, 2025
a7784e6
DROID-3903 fix
konstantiniiv Dec 23, 2025
3099339
DROID-3903 Merge branch 'main' into droid-3903-epic-redesign-sharing-…
konstantiniiv Dec 23, 2025
821657f
DROID-3903 pr fix
konstantiniiv Dec 23, 2025
6b38f67
DROID-3903 fix
konstantiniiv Dec 23, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ import com.anytypeio.anytype.di.feature.settings.DaggerFilesStorageComponent
import com.anytypeio.anytype.di.feature.settings.DaggerSpacesStorageComponent
import com.anytypeio.anytype.di.feature.settings.LogoutWarningModule
import com.anytypeio.anytype.di.feature.settings.ProfileModule
import com.anytypeio.anytype.di.feature.sharing.DaggerAddToAnytypeComponent
import com.anytypeio.anytype.di.feature.sharing.DaggerSharingComponent
import com.anytypeio.anytype.di.feature.spaces.DaggerCreateSpaceComponent
import com.anytypeio.anytype.di.feature.spaces.DaggerSpaceListComponent
import com.anytypeio.anytype.di.feature.spaces.DaggerSpaceSettingsComponent
Expand Down Expand Up @@ -129,7 +129,6 @@ import com.anytypeio.anytype.presentation.relations.RelationAddViewModelBase
import com.anytypeio.anytype.presentation.relations.RelationListViewModel
import com.anytypeio.anytype.feature_properties.space.SpacePropertiesViewModel
import com.anytypeio.anytype.presentation.publishtoweb.MySitesViewModel
import com.anytypeio.anytype.presentation.home.HomeScreenViewModel
import com.anytypeio.anytype.presentation.home.HomeScreenVmParams
import com.anytypeio.anytype.presentation.widgets.CreateChatObjectViewModel
import com.anytypeio.anytype.presentation.publishtoweb.PublishToWebViewModel
Expand Down Expand Up @@ -885,8 +884,8 @@ class ComponentManager(
.create(findComponentDependencies())
}

val addToAnytypeComponent = Component {
DaggerAddToAnytypeComponent
val sharingComponent = Component {
DaggerSharingComponent
.factory()
.create(findComponentDependencies())
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
package com.anytypeio.anytype.di.feature.sharing

import androidx.lifecycle.ViewModelProvider
import com.anytypeio.anytype.analytics.base.Analytics
import com.anytypeio.anytype.core_utils.di.scope.PerModal
import com.anytypeio.anytype.di.common.ComponentDependencies
import com.anytypeio.anytype.domain.account.AwaitAccountStartManager
import com.anytypeio.anytype.domain.base.AppCoroutineDispatchers
import com.anytypeio.anytype.domain.block.repo.BlockRepository
import com.anytypeio.anytype.domain.chats.AddChatMessage
import com.anytypeio.anytype.domain.block.interactor.CreateBlock
import com.anytypeio.anytype.domain.config.UserSettingsRepository
import com.anytypeio.anytype.domain.device.FileSharer
import com.anytypeio.anytype.domain.media.UploadFile
import com.anytypeio.anytype.domain.misc.UrlBuilder
import com.anytypeio.anytype.domain.multiplayer.SpaceViewSubscriptionContainer
import com.anytypeio.anytype.domain.multiplayer.UserPermissionProvider
import com.anytypeio.anytype.domain.objects.CreateBookmarkObject
import com.anytypeio.anytype.domain.objects.CreateObjectFromUrl
import com.anytypeio.anytype.domain.objects.CreatePrefilledNote
import com.anytypeio.anytype.domain.page.AddBackLinkToObject
import com.anytypeio.anytype.domain.page.CloseObject
import com.anytypeio.anytype.domain.page.OpenPage
import com.anytypeio.anytype.domain.primitives.FieldParser
import com.anytypeio.anytype.domain.search.SearchObjects
import com.anytypeio.anytype.domain.workspace.SpaceManager
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
import com.anytypeio.anytype.presentation.sharing.SharingViewModel
import dagger.Binds
import dagger.Component
import dagger.Module
import dagger.Provides

/**
* DI Component for the redesigned sharing extension.
* Provides dependencies for SharingViewModel which handles three flows:
* - Flow 1: Chat Space (direct message sending)
* - Flow 2: Data Space without chat (object creation)
* - Flow 3: Data Space with chat (hybrid)
*/
@Component(
dependencies = [SharingDependencies::class],
modules = [
SharingModule::class,
SharingModule.Declarations::class
]
)
@PerModal
interface SharingComponent {
@Component.Factory
interface Factory {
fun create(dependency: SharingDependencies): SharingComponent
}

/**
* Provides the ViewModel factory for creating SharingViewModel instances.
* Used by MainActivity's Compose overlay for the pure Compose modal sheet.
*/
fun viewModelFactory(): ViewModelProvider.Factory
}

@Module
object SharingModule {

@Provides
@PerModal
fun provideCreateBookmarkObject(
repo: BlockRepository,
dispatchers: AppCoroutineDispatchers
): CreateBookmarkObject = CreateBookmarkObject(repo)

@Provides
@PerModal
fun provideCreatePrefilledNote(
repo: BlockRepository,
dispatchers: AppCoroutineDispatchers
): CreatePrefilledNote = CreatePrefilledNote(repo, dispatchers)

@Provides
@PerModal
fun provideCreateObjectFromUrl(
repo: BlockRepository,
dispatchers: AppCoroutineDispatchers
): CreateObjectFromUrl = CreateObjectFromUrl(repo, dispatchers)

@Provides
@PerModal
fun provideAddChatMessage(
repo: BlockRepository,
dispatchers: AppCoroutineDispatchers
): AddChatMessage = AddChatMessage(repo, dispatchers)

@Provides
@PerModal
fun provideUploadFile(
repo: BlockRepository,
dispatchers: AppCoroutineDispatchers
): UploadFile = UploadFile(repo, dispatchers)

@Provides
@PerModal
fun provideSearchObjects(
repo: BlockRepository
): SearchObjects = SearchObjects(repo)

@Provides
@PerModal
fun provideOpenPage(
repo: BlockRepository,
settings: UserSettingsRepository,
dispatchers: AppCoroutineDispatchers
): OpenPage = OpenPage(
repo = repo,
settings = settings,
dispatchers = dispatchers
)

@Provides
@PerModal
fun provideCloseObject(
repo: BlockRepository,
dispatchers: AppCoroutineDispatchers
): CloseObject = CloseObject(
repo = repo,
dispatchers = dispatchers
)

@Provides
@PerModal
fun provideCreateBlock(
repo: BlockRepository,
dispatchers: AppCoroutineDispatchers
): CreateBlock = CreateBlock(
repo = repo,
dispatchers = dispatchers
)

@Provides
@PerModal
fun provideAddBackLinkToObject(
openPage: OpenPage,
createBlock: CreateBlock,
closeObject: CloseObject,
dispatchers: AppCoroutineDispatchers
): AddBackLinkToObject = AddBackLinkToObject(
openPage = openPage,
createBlock = createBlock,
closeObject = closeObject,
dispatchers = dispatchers
)

@Module
interface Declarations {
@PerModal
@Binds
fun factory(factory: SharingViewModel.Factory): ViewModelProvider.Factory
}
}

/**
* Dependencies required by the SharingComponent.
* These are provided by the parent component (MainComponent).
*/
interface SharingDependencies : ComponentDependencies {
fun blockRepo(): BlockRepository
fun spaceManager(): SpaceManager
fun dispatchers(): AppCoroutineDispatchers
fun urlBuilder(): UrlBuilder
fun awaitAccountStartedManager(): AwaitAccountStartManager
fun analytics(): Analytics
fun fileSharer(): FileSharer
fun permissions(): UserPermissionProvider
fun analyticSpaceHelper(): AnalyticSpaceHelperDelegate
fun spaceViewSubscriptionContainer(): SpaceViewSubscriptionContainer
fun fieldParser(): FieldParser
fun userSettingsRepository(): UserSettingsRepository
}
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ import com.anytypeio.anytype.di.feature.settings.FilesStorageDependencies
import com.anytypeio.anytype.di.feature.settings.LogoutWarningSubComponent
import com.anytypeio.anytype.di.feature.settings.ProfileSubComponent
import com.anytypeio.anytype.di.feature.settings.SpacesStorageDependencies
import com.anytypeio.anytype.di.feature.sharing.AddToAnytypeDependencies
import com.anytypeio.anytype.di.feature.sharing.SharingDependencies
import com.anytypeio.anytype.di.feature.spaces.CreateSpaceDependencies
import com.anytypeio.anytype.di.feature.spaces.SpaceListDependencies
import com.anytypeio.anytype.di.feature.spaces.SpaceSettingsDependencies
Expand Down Expand Up @@ -123,7 +123,6 @@ interface MainComponent :
SelectObjectTypeDependencies,
SpacesStorageDependencies,
AppPreferencesDependencies,
AddToAnytypeDependencies,
ShareSpaceDependencies,
SpaceJoinRequestDependencies,
RequestJoinSpaceDependencies,
Expand Down Expand Up @@ -154,7 +153,8 @@ interface MainComponent :
PublishToWebDependencies,
MySitesDependencies,
MediaDependencies,
CreateChatObjectDependencies
CreateChatObjectDependencies,
SharingDependencies
{

fun inject(app: AndroidApplication)
Expand Down Expand Up @@ -293,11 +293,6 @@ abstract class ComponentDependenciesModule {
@ComponentDependenciesKey(AppPreferencesDependencies::class)
abstract fun providePreferencesDependencies(component: MainComponent): ComponentDependencies

@Binds
@IntoMap
@ComponentDependenciesKey(AddToAnytypeDependencies::class)
abstract fun provideAddToAnytypeDependencies(component: MainComponent): ComponentDependencies

@Binds
@IntoMap
@ComponentDependenciesKey(ShareSpaceDependencies::class)
Expand Down Expand Up @@ -452,4 +447,9 @@ abstract class ComponentDependenciesModule {
@IntoMap
@ComponentDependenciesKey(CreateChatObjectDependencies::class)
abstract fun createChatObjectDependencies(component: MainComponent): ComponentDependencies

@Binds
@IntoMap
@ComponentDependenciesKey(SharingDependencies::class)
abstract fun sharingDependencies(component: MainComponent): ComponentDependencies
}
Loading