Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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 @@ -35,7 +35,6 @@ import com.anytypeio.anytype.ext.daggerViewModel
import com.anytypeio.anytype.feature_discussions.presentation.DiscussionViewModel
import com.anytypeio.anytype.feature_discussions.presentation.DiscussionViewModelFactory
import com.anytypeio.anytype.feature_discussions.ui.DiscussionScreenWrapper
import com.anytypeio.anytype.presentation.common.BaseViewModel
import com.anytypeio.anytype.presentation.home.OpenObjectNavigation
import com.anytypeio.anytype.presentation.search.GlobalSearchViewModel
import com.anytypeio.anytype.ui.editor.EditorFragment
Expand Down Expand Up @@ -73,7 +72,7 @@ class DiscussionFragment : BaseComposeFragment() {

DiscussionScreenWrapper(
vm = vm,
onAttachClicked = {
onAttachObjectClicked = {
showBottomSheet = true
},
onBackButtonClicked = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,16 @@ import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.MaterialTheme
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.ModalBottomSheet
import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.platform.LocalFocusManager
Expand All @@ -33,6 +41,7 @@ import com.anytypeio.anytype.R
import com.anytypeio.anytype.core_models.Id
import com.anytypeio.anytype.core_models.ObjectWrapper
import com.anytypeio.anytype.core_models.primitives.Space
import com.anytypeio.anytype.core_models.primitives.SpaceId
import com.anytypeio.anytype.core_ui.extensions.throttledClick
import com.anytypeio.anytype.core_utils.ext.arg
import com.anytypeio.anytype.core_utils.ext.argOrNull
Expand All @@ -49,6 +58,7 @@ import com.anytypeio.anytype.other.DefaultDeepLinkResolver
import com.anytypeio.anytype.presentation.home.Command
import com.anytypeio.anytype.presentation.home.HomeScreenViewModel
import com.anytypeio.anytype.presentation.home.HomeScreenViewModel.Navigation
import com.anytypeio.anytype.presentation.search.GlobalSearchViewModel
import com.anytypeio.anytype.presentation.spaces.SpaceIconView
import com.anytypeio.anytype.presentation.widgets.DropDownMenuAction
import com.anytypeio.anytype.presentation.widgets.WidgetView
Expand All @@ -63,6 +73,7 @@ import com.anytypeio.anytype.ui.objects.types.pickers.ObjectTypeSelectionListene
import com.anytypeio.anytype.ui.objects.types.pickers.WidgetObjectTypeListener
import com.anytypeio.anytype.ui.objects.types.pickers.WidgetSourceTypeListener
import com.anytypeio.anytype.ui.payments.MembershipFragment
import com.anytypeio.anytype.ui.search.GlobalSearchScreen
import com.anytypeio.anytype.ui.settings.space.SpaceSettingsFragment
import com.anytypeio.anytype.ui.settings.typography
import com.anytypeio.anytype.ui.widgets.SelectWidgetSourceFragment
Expand Down Expand Up @@ -93,6 +104,7 @@ class HomeScreenFragment : BaseComposeFragment(),

private val vm by viewModels<HomeScreenViewModel> { factory }

@OptIn(ExperimentalMaterial3Api::class)
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
Expand All @@ -108,10 +120,15 @@ class HomeScreenFragment : BaseComposeFragment(),
)
) {
if (featureToggles.isNewSpaceHomeEnabled) {
val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = false)
var showGlobalSearchBottomSheet by remember { mutableStateOf(false) }

val view = (vm.views.collectAsStateWithLifecycle().value.find {
it is WidgetView.SpaceWidget.View
} as? WidgetView.SpaceWidget.View)

val focus = LocalFocusManager.current

val component = componentManager().spaceLevelChatComponent
val spaceLevelChatViewModel = daggerViewModel {
component.get(
Expand All @@ -123,6 +140,7 @@ class HomeScreenFragment : BaseComposeFragment(),
}
val pagerState = rememberPagerState { 2 }
val coroutineScope = rememberCoroutineScope()

Box(
Modifier.fillMaxSize()
) {
Expand Down Expand Up @@ -150,100 +168,57 @@ class HomeScreenFragment : BaseComposeFragment(),
) { page ->
if (page == 0) {
focus.clearFocus(force = true)
HomeScreen(
modifier = Modifier,
widgets = vm.views.collectAsState().value,
mode = vm.mode.collectAsState().value,
onExpand = { path -> vm.onExpand(path) },
onCreateWidget = vm::onCreateWidgetClicked,
onEditWidgets = vm::onEditWidgets,
onExitEditMode = vm::onExitEditMode,
onWidgetMenuAction = { widget: Id, action: DropDownMenuAction ->
vm.onDropDownMenuAction(widget, action)
},
onWidgetObjectClicked = vm::onWidgetObjectClicked,
onWidgetSourceClicked = vm::onWidgetSourceClicked,
onChangeWidgetView = vm::onChangeCurrentWidgetView,
onToggleExpandedWidgetState = vm::onToggleCollapsedWidgetState,
onSearchClicked = vm::onSearchIconClicked,
onCreateNewObjectClicked = throttledClick(
onClick = { vm.onCreateNewObjectClicked() }
),
onCreateNewObjectLongClicked = throttledClick(
onClick = { vm.onCreateNewObjectLongClicked() }
),
onBackClicked = throttledClick(
onClick = vm::onBackClicked
),
onSpaceWidgetClicked = throttledClick(
onClick = vm::onSpaceSettingsClicked
),
onBundledWidgetClicked = vm::onBundledWidgetClicked,
onMove = vm::onMove,
onObjectCheckboxClicked = vm::onObjectCheckboxClicked,
onSpaceShareIconClicked = vm::onSpaceShareIconClicked,
onSeeAllObjectsClicked = vm::onSeeAllObjectsClicked,
onCreateObjectInsideWidget = vm::onCreateObjectInsideWidget,
onCreateDataViewObject = vm::onCreateDataViewObject,
onBackLongClicked = vm::onBackLongClicked
)
PageWithWidgets()
} else {
DiscussionScreenWrapper(
isSpaceLevelChat = true,
vm = spaceLevelChatViewModel,
onAttachClicked = {
// TODO
onAttachObjectClicked = {
showGlobalSearchBottomSheet = true
},
onBackButtonClicked = {
findNavController().popBackStack()
},
onMarkupLinkClicked = {
proceedWithAction(
SystemAction.OpenUrl(it)
)
proceedWithAction(SystemAction.OpenUrl(it))
}
)
}
}
}
if (showGlobalSearchBottomSheet) {
ModalBottomSheet(
onDismissRequest = {
showGlobalSearchBottomSheet = false
},
sheetState = sheetState,
containerColor = colorResource(id = R.color.background_secondary),
shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp),
dragHandle = null
) {
val component = componentManager().globalSearchComponent
val searchViewModel = daggerViewModel {
component
.get(GlobalSearchViewModel.VmParams(space = SpaceId(space)))
.getViewModel()
}
GlobalSearchScreen(
modifier = Modifier.padding(top = 12.dp),
state = searchViewModel.state
.collectAsStateWithLifecycle()
.value
,
onQueryChanged = searchViewModel::onQueryChanged,
onObjectClicked = {
spaceLevelChatViewModel.onAttachObject(it)
showGlobalSearchBottomSheet = false
},
focusOnStart = false
)
}
}
} else {
HomeScreen(
modifier = Modifier,
widgets = vm.views.collectAsState().value,
mode = vm.mode.collectAsState().value,
onExpand = { path -> vm.onExpand(path) },
onCreateWidget = vm::onCreateWidgetClicked,
onEditWidgets = vm::onEditWidgets,
onExitEditMode = vm::onExitEditMode,
onWidgetMenuAction = { widget: Id, action: DropDownMenuAction ->
vm.onDropDownMenuAction(widget, action)
},
onWidgetObjectClicked = vm::onWidgetObjectClicked,
onWidgetSourceClicked = vm::onWidgetSourceClicked,
onChangeWidgetView = vm::onChangeCurrentWidgetView,
onToggleExpandedWidgetState = vm::onToggleCollapsedWidgetState,
onSearchClicked = vm::onSearchIconClicked,
onCreateNewObjectClicked = throttledClick(
onClick = { vm.onCreateNewObjectClicked() }
),
onCreateNewObjectLongClicked = throttledClick(
onClick = { vm.onCreateNewObjectLongClicked() }
),
onBackClicked = throttledClick(
onClick = vm::onBackClicked
),
onSpaceWidgetClicked = throttledClick(
onClick = vm::onSpaceSettingsClicked
),
onBundledWidgetClicked = vm::onBundledWidgetClicked,
onMove = vm::onMove,
onObjectCheckboxClicked = vm::onObjectCheckboxClicked,
onSpaceShareIconClicked = vm::onSpaceShareIconClicked,
onSeeAllObjectsClicked = vm::onSeeAllObjectsClicked,
onCreateObjectInsideWidget = vm::onCreateObjectInsideWidget,
onCreateDataViewObject = vm::onCreateDataViewObject,
onBackLongClicked = vm::onBackLongClicked
)
PageWithWidgets()
}
}

Expand All @@ -253,6 +228,47 @@ class HomeScreenFragment : BaseComposeFragment(),
}
}

@Composable
fun PageWithWidgets() {
HomeScreen(
modifier = Modifier,
widgets = vm.views.collectAsState().value,
mode = vm.mode.collectAsState().value,
onExpand = { path -> vm.onExpand(path) },
onCreateWidget = vm::onCreateWidgetClicked,
onEditWidgets = vm::onEditWidgets,
onExitEditMode = vm::onExitEditMode,
onWidgetMenuAction = { widget: Id, action: DropDownMenuAction ->
vm.onDropDownMenuAction(widget, action)
},
onWidgetObjectClicked = vm::onWidgetObjectClicked,
onWidgetSourceClicked = vm::onWidgetSourceClicked,
onChangeWidgetView = vm::onChangeCurrentWidgetView,
onToggleExpandedWidgetState = vm::onToggleCollapsedWidgetState,
onSearchClicked = vm::onSearchIconClicked,
onCreateNewObjectClicked = throttledClick(
onClick = { vm.onCreateNewObjectClicked() }
),
onCreateNewObjectLongClicked = throttledClick(
onClick = { vm.onCreateNewObjectLongClicked() }
),
onBackClicked = throttledClick(
onClick = vm::onBackClicked
),
onSpaceWidgetClicked = throttledClick(
onClick = vm::onSpaceSettingsClicked
),
onBundledWidgetClicked = vm::onBundledWidgetClicked,
onMove = vm::onMove,
onObjectCheckboxClicked = vm::onObjectCheckboxClicked,
onSpaceShareIconClicked = vm::onSpaceShareIconClicked,
onSeeAllObjectsClicked = vm::onSeeAllObjectsClicked,
onCreateObjectInsideWidget = vm::onCreateObjectInsideWidget,
onCreateDataViewObject = vm::onCreateDataViewObject,
onBackLongClicked = vm::onBackLongClicked
)
}

override fun onStart() {
Timber.d("onStart")
super.onStart()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,8 @@ fun GlobalSearchScreen(
state: GlobalSearchViewModel.ViewState,
onQueryChanged: (String) -> Unit,
onObjectClicked: (GlobalSearchItemView) -> Unit,
onShowRelatedClicked: (GlobalSearchItemView) -> Unit,
onClearRelatedClicked: () -> Unit,
onShowRelatedClicked: (GlobalSearchItemView) -> Unit = {},
onClearRelatedClicked: () -> Unit = {},
focusOnStart: Boolean = true
) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,11 @@ fun DiscussionScreenPreview() {
onExitEditMessageMode = {},
isSpaceLevelChat = true,
onBackButtonClicked = {},
onMarkupLinkClicked = {}
onMarkupLinkClicked = {},
onAttachFileClicked = {},
onUploadAttachmentClicked = {},
onAttachMediaClicked = {},
onAttachObjectClicked = {}
)
}

Expand Down
Loading
Loading