mirror of
https://github.com/anyproto/anytype-kotlin.git
synced 2025-06-08 05:47:05 +09:00
DROID-3219 Navigation | Enhancement | Updated app navigation controls (part 1) (#1989)
This commit is contained in:
parent
bb183df533
commit
af3121087c
36 changed files with 333 additions and 123 deletions
|
@ -6,6 +6,7 @@ import androidx.navigation.navOptions
|
|||
import com.anytypeio.anytype.R
|
||||
import com.anytypeio.anytype.core_models.Id
|
||||
import com.anytypeio.anytype.core_models.Key
|
||||
import com.anytypeio.anytype.core_models.primitives.SpaceId
|
||||
import com.anytypeio.anytype.di.feature.discussions.DiscussionFragment
|
||||
import com.anytypeio.anytype.presentation.navigation.AppNavigation
|
||||
import com.anytypeio.anytype.presentation.widgets.collection.Subscription
|
||||
|
@ -14,6 +15,7 @@ import com.anytypeio.anytype.ui.auth.account.DeletedAccountFragment
|
|||
import com.anytypeio.anytype.ui.date.DateObjectFragment
|
||||
import com.anytypeio.anytype.ui.editor.EditorFragment
|
||||
import com.anytypeio.anytype.ui.editor.EditorModalFragment
|
||||
import com.anytypeio.anytype.ui.multiplayer.ShareSpaceFragment
|
||||
import com.anytypeio.anytype.ui.relations.RelationCreateFromScratchForObjectFragment
|
||||
import com.anytypeio.anytype.ui.relations.RelationEditFragment
|
||||
import com.anytypeio.anytype.ui.search.GlobalSearchFragment
|
||||
|
@ -177,6 +179,13 @@ class Navigator : AppNavigation {
|
|||
)
|
||||
}
|
||||
|
||||
override fun openShareScreen(space: SpaceId) {
|
||||
navController?.navigate(
|
||||
R.id.shareSpaceScreen,
|
||||
args = ShareSpaceFragment.args(space)
|
||||
)
|
||||
}
|
||||
|
||||
override fun openObjectSet(
|
||||
target: Id,
|
||||
space: Id,
|
||||
|
|
|
@ -35,6 +35,7 @@ import com.anytypeio.anytype.feature_allcontent.ui.AllContentWrapperScreen
|
|||
import com.anytypeio.anytype.presentation.objects.ObjectIcon
|
||||
import com.anytypeio.anytype.presentation.widgets.collection.Subscription
|
||||
import com.anytypeio.anytype.ui.base.navigation
|
||||
import com.anytypeio.anytype.ui.multiplayer.ShareSpaceFragment
|
||||
import com.anytypeio.anytype.ui.objects.creation.ObjectTypeSelectionFragment
|
||||
import com.anytypeio.anytype.ui.objects.types.pickers.ObjectTypeSelectionListener
|
||||
import com.anytypeio.anytype.ui.relations.REQUEST_KEY_MODIFY_RELATION
|
||||
|
@ -112,7 +113,6 @@ class AllContentFragment : BaseComposeFragment(), ObjectTypeSelectionListener {
|
|||
Timber.e(e, "Error while exiting to vault from all content")
|
||||
}
|
||||
}
|
||||
|
||||
is AllContentViewModel.Command.Back -> {
|
||||
runCatching {
|
||||
findNavController().popBackStack()
|
||||
|
@ -120,7 +120,6 @@ class AllContentFragment : BaseComposeFragment(), ObjectTypeSelectionListener {
|
|||
Timber.e(e, "Error while exiting back from all content")
|
||||
}
|
||||
}
|
||||
|
||||
is AllContentViewModel.Command.OpenGlobalSearch -> {
|
||||
runCatching {
|
||||
findNavController().navigate(
|
||||
|
@ -269,6 +268,16 @@ class AllContentFragment : BaseComposeFragment(), ObjectTypeSelectionListener {
|
|||
Timber.e(e, "Error while opening date object from All Objects screen")
|
||||
}
|
||||
}
|
||||
is AllContentViewModel.Command.OpenShareScreen -> {
|
||||
runCatching {
|
||||
findNavController().navigate(
|
||||
R.id.shareSpaceScreen,
|
||||
args = ShareSpaceFragment.args(command.space)
|
||||
)
|
||||
}.onFailure { e ->
|
||||
Timber.e(e, "Error while opening date object from All Objects screen")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -314,7 +323,8 @@ class AllContentFragment : BaseComposeFragment(), ObjectTypeSelectionListener {
|
|||
onRelationClicked = vm::onRelationClicked,
|
||||
undoMoveToBin = vm::proceedWithUndoMoveToBin,
|
||||
onDismissSnackbar = vm::proceedWithDismissSnackbar,
|
||||
uiBottomMenu = vm.uiBottomMenu.collectAsStateWithLifecycle().value
|
||||
uiBottomMenu = vm.uiBottomMenu.collectAsStateWithLifecycle().value,
|
||||
onShareButtonClicked = vm::onMemberButtonClicked
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -47,6 +47,9 @@ class NavigationRouter(
|
|||
is AppNavigation.Command.OpenGlobalSearch -> navigation.openGlobalSearch(
|
||||
space = command.space
|
||||
)
|
||||
is AppNavigation.Command.OpenShareScreen -> navigation.openShareScreen(
|
||||
space = command.space
|
||||
)
|
||||
is AppNavigation.Command.OpenUpdateAppScreen -> navigation.openUpdateAppScreen()
|
||||
is AppNavigation.Command.DeletedAccountScreen -> navigation.deletedAccountScreen(
|
||||
command.deadline
|
||||
|
|
|
@ -36,7 +36,6 @@ import androidx.constraintlayout.widget.ConstraintLayout
|
|||
import androidx.constraintlayout.widget.ConstraintSet
|
||||
import androidx.core.animation.doOnEnd
|
||||
import androidx.core.animation.doOnStart
|
||||
import androidx.core.app.ActivityOptionsCompat
|
||||
import androidx.core.os.bundleOf
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsAnimationCompat.Callback.DISPATCH_MODE_STOP
|
||||
|
@ -161,6 +160,7 @@ import com.anytypeio.anytype.ui.linking.LinkToObjectOrWebPagesFragment
|
|||
import com.anytypeio.anytype.ui.linking.OnLinkToAction
|
||||
import com.anytypeio.anytype.ui.moving.MoveToFragment
|
||||
import com.anytypeio.anytype.ui.moving.OnMoveToAction
|
||||
import com.anytypeio.anytype.ui.multiplayer.ShareSpaceFragment
|
||||
import com.anytypeio.anytype.ui.objects.appearance.ObjectAppearanceSettingFragment
|
||||
import com.anytypeio.anytype.ui.objects.creation.ObjectTypeSelectionFragment
|
||||
import com.anytypeio.anytype.ui.objects.creation.ObjectTypeUpdateFragment
|
||||
|
@ -601,21 +601,8 @@ open class EditorFragment : NavigationFragment<FragmentEditorBinding>(R.layout.f
|
|||
|
||||
|
||||
binding.bottomToolbar
|
||||
.backClicks()
|
||||
.onEach { vm.onBackButtonPressed() }
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
binding.bottomToolbar
|
||||
.binding
|
||||
.btnBack
|
||||
.longClicks(withHaptic = true)
|
||||
.onEach {
|
||||
runCatching {
|
||||
findNavController().navigate(R.id.actionExitToSpaceWidgets)
|
||||
}.onFailure {
|
||||
Timber.e(it, "Error while opening space switcher from editor")
|
||||
}
|
||||
}
|
||||
.shareClicks()
|
||||
.onEach { vm.onShareButtonClicked() }
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
binding.bottomToolbar
|
||||
|
@ -645,6 +632,12 @@ open class EditorFragment : NavigationFragment<FragmentEditorBinding>(R.layout.f
|
|||
.onEach { vm.onDocumentMenuClicked() }
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
binding.topToolbar.back
|
||||
.clicks()
|
||||
.throttleFirst()
|
||||
.onEach { vm.onBackButtonPressed() }
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
binding.markupToolbar
|
||||
.highlightClicks()
|
||||
.onEach { vm.onMarkupHighlightToggleClicked() }
|
||||
|
@ -1306,6 +1299,16 @@ open class EditorFragment : NavigationFragment<FragmentEditorBinding>(R.layout.f
|
|||
)
|
||||
)
|
||||
}
|
||||
is Command.OpenShareScreen -> {
|
||||
runCatching {
|
||||
findNavController().navigate(
|
||||
R.id.shareSpaceScreen,
|
||||
args = ShareSpaceFragment.args(command.space)
|
||||
)
|
||||
}.onFailure {
|
||||
Timber.e(it, "Error while opening share screen")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -89,6 +89,7 @@ fun HomeScreen(
|
|||
onCreateNewObjectClicked: () -> Unit,
|
||||
onCreateNewObjectLongClicked: () -> Unit,
|
||||
onBackClicked: () -> Unit,
|
||||
onShareButtonClicked: () -> Unit,
|
||||
onObjectCheckboxClicked: (Id, Boolean) -> Unit,
|
||||
onSpaceWidgetClicked: () -> Unit,
|
||||
onMove: (List<WidgetView>, FromIndex, ToIndex) -> Unit,
|
||||
|
@ -161,7 +162,8 @@ fun HomeScreen(
|
|||
searchClick = onSearchClicked,
|
||||
addDocClick = onCreateNewObjectClicked,
|
||||
addDocLongClick = onCreateNewObjectLongClicked,
|
||||
isOwnerOrEditor = mode !is InteractionMode.ReadOnly
|
||||
isOwnerOrEditor = mode !is InteractionMode.ReadOnly,
|
||||
onShareButtonClicked = onShareButtonClicked
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -166,7 +166,8 @@ class HomeScreenFragment : BaseComposeFragment(),
|
|||
},
|
||||
onSpaceIconClicked = vm::onSpaceSettingsClicked,
|
||||
membersCount = view?.membersCount ?: 0,
|
||||
name = view?.space?.name.orEmpty()
|
||||
name = view?.space?.name.orEmpty(),
|
||||
onBackButtonClicked = vm::onBackClicked
|
||||
)
|
||||
HorizontalPager(
|
||||
modifier = Modifier
|
||||
|
@ -347,7 +348,8 @@ class HomeScreenFragment : BaseComposeFragment(),
|
|||
onSeeAllObjectsClicked = vm::onSeeAllObjectsClicked,
|
||||
onCreateObjectInsideWidget = vm::onCreateObjectInsideWidget,
|
||||
onCreateDataViewObject = vm::onCreateDataViewObject,
|
||||
onBackLongClicked = vm::onBackLongClicked
|
||||
onBackLongClicked = vm::onBackLongClicked,
|
||||
onShareButtonClicked = vm::onSpaceShareIconClicked
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -473,11 +475,15 @@ class HomeScreenFragment : BaseComposeFragment(),
|
|||
)
|
||||
}
|
||||
is Command.Deeplink.MembershipScreen -> {
|
||||
findNavController().navigate(
|
||||
R.id.paymentsScreen,
|
||||
MembershipFragment.args(command.tierId),
|
||||
NavOptions.Builder().setLaunchSingleTop(true).build()
|
||||
)
|
||||
runCatching {
|
||||
findNavController().navigate(
|
||||
R.id.paymentsScreen,
|
||||
MembershipFragment.args(command.tierId),
|
||||
NavOptions.Builder().setLaunchSingleTop(true).build()
|
||||
)
|
||||
}.onFailure {
|
||||
Timber.e(it, "Error while opening membership screen")
|
||||
}
|
||||
}
|
||||
is Command.Deeplink.DeepLinkToObjectNotWorking -> {
|
||||
toast(
|
||||
|
@ -485,10 +491,14 @@ class HomeScreenFragment : BaseComposeFragment(),
|
|||
)
|
||||
}
|
||||
is Command.ShareSpace -> {
|
||||
findNavController().navigate(
|
||||
R.id.shareSpaceScreen,
|
||||
args = ShareSpaceFragment.args(command.space)
|
||||
)
|
||||
runCatching {
|
||||
findNavController().navigate(
|
||||
R.id.shareSpaceScreen,
|
||||
args = ShareSpaceFragment.args(command.space)
|
||||
)
|
||||
}.onFailure {
|
||||
Timber.e(it, "Error while opening share screen")
|
||||
}
|
||||
}
|
||||
is Command.CreateSourceForNewWidget -> {
|
||||
val dialog = WidgetSourceTypeFragment.new(
|
||||
|
|
|
@ -24,6 +24,7 @@ import com.anytypeio.anytype.core_ui.common.DefaultPreviews
|
|||
import com.anytypeio.anytype.core_ui.features.SpaceIconView
|
||||
import com.anytypeio.anytype.core_ui.foundation.noRippleClickable
|
||||
import com.anytypeio.anytype.core_ui.views.PreviewTitle2Medium
|
||||
import com.anytypeio.anytype.core_ui.views.Relations2
|
||||
import com.anytypeio.anytype.core_ui.views.Relations3
|
||||
import com.anytypeio.anytype.feature_discussions.R
|
||||
import com.anytypeio.anytype.presentation.spaces.SpaceIconView
|
||||
|
@ -35,6 +36,7 @@ fun HomeScreenToolbar(
|
|||
onWidgetTabClicked: () -> Unit,
|
||||
onChatTabClicked: () -> Unit,
|
||||
onSpaceIconClicked: () -> Unit,
|
||||
onBackButtonClicked: () -> Unit,
|
||||
name: String,
|
||||
membersCount: Int
|
||||
) {
|
||||
|
@ -42,19 +44,29 @@ fun HomeScreenToolbar(
|
|||
modifier = Modifier
|
||||
.systemBarsPadding()
|
||||
.fillMaxWidth()
|
||||
.height(64.dp)
|
||||
.padding(horizontal = 20.dp)
|
||||
.height(52.dp)
|
||||
) {
|
||||
|
||||
Image(
|
||||
painter = painterResource(R.drawable.ic_home_top_toolbar_back),
|
||||
contentDescription = "Back button",
|
||||
modifier = Modifier
|
||||
.padding(start = 16.dp)
|
||||
.align(Alignment.CenterStart)
|
||||
.noRippleClickable {
|
||||
onBackButtonClicked()
|
||||
}
|
||||
)
|
||||
|
||||
SpaceIconView(
|
||||
modifier = Modifier
|
||||
.padding(start = 60.dp)
|
||||
.align(Alignment.CenterStart),
|
||||
icon = spaceIconView,
|
||||
onSpaceIconClick = {
|
||||
onSpaceIconClicked()
|
||||
},
|
||||
mainSize = 40.dp
|
||||
mainSize = 32.dp
|
||||
)
|
||||
|
||||
Text(
|
||||
|
@ -62,8 +74,8 @@ fun HomeScreenToolbar(
|
|||
style = PreviewTitle2Medium,
|
||||
color = colorResource(R.color.text_primary),
|
||||
modifier = Modifier.padding(
|
||||
start = 52.dp,
|
||||
top = 13.dp
|
||||
start = 104.dp,
|
||||
top = 8.dp
|
||||
)
|
||||
)
|
||||
|
||||
|
@ -77,20 +89,20 @@ fun HomeScreenToolbar(
|
|||
)
|
||||
} else
|
||||
stringResource(id = R.string.three_dots_text_placeholder),
|
||||
style = Relations3,
|
||||
style = Relations2,
|
||||
color = colorResource(R.color.text_secondary),
|
||||
modifier = Modifier
|
||||
.align(Alignment.BottomStart)
|
||||
.padding(
|
||||
start = 52.dp,
|
||||
bottom = 13.dp
|
||||
start = 104.dp,
|
||||
bottom = 8.dp
|
||||
)
|
||||
)
|
||||
|
||||
Image(
|
||||
painter = painterResource(id = R.drawable.ic_home_toolbar_widgets),
|
||||
modifier = Modifier
|
||||
.padding(end = 48.dp)
|
||||
.padding(end = 64.dp)
|
||||
.size(32.dp)
|
||||
.align(Alignment.CenterEnd)
|
||||
.alpha(
|
||||
|
@ -105,6 +117,7 @@ fun HomeScreenToolbar(
|
|||
Image(
|
||||
painter = painterResource(id = R.drawable.ic_home_toolbar_chat),
|
||||
modifier = Modifier
|
||||
.padding(end = 16.dp)
|
||||
.size(32.dp)
|
||||
.align(Alignment.CenterEnd)
|
||||
.alpha(
|
||||
|
@ -125,9 +138,10 @@ fun HomeScreenToolbarPreview() {
|
|||
onWidgetTabClicked = {},
|
||||
onChatTabClicked = {},
|
||||
isChatActive = false,
|
||||
spaceIconView = SpaceIconView.Loading,
|
||||
spaceIconView = SpaceIconView.Placeholder(name = "A"),
|
||||
onSpaceIconClicked = {},
|
||||
membersCount = 74,
|
||||
name = "Test space"
|
||||
name = "Test space",
|
||||
onBackButtonClicked = {}
|
||||
)
|
||||
}
|
||||
|
|
|
@ -23,7 +23,6 @@ import androidx.activity.addCallback
|
|||
import androidx.appcompat.widget.AppCompatEditText
|
||||
import androidx.compose.foundation.layout.WindowInsets
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.ime
|
||||
import androidx.compose.foundation.layout.navigationBars
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.windowInsetsPadding
|
||||
|
@ -166,6 +165,9 @@ open class ObjectSetFragment :
|
|||
private val header: LinearLayout
|
||||
get() = binding.objectHeader.root
|
||||
|
||||
private val topBackButton: View
|
||||
get() = binding.topToolbar.root.findViewById(R.id.topBackButton)
|
||||
|
||||
private val topToolbarTitle: TextView
|
||||
get() = binding.topToolbar.root.findViewById(R.id.tvTopToolbarTitle)
|
||||
|
||||
|
@ -278,6 +280,7 @@ open class ObjectSetFragment :
|
|||
vm.hideTitleToolbar()
|
||||
}
|
||||
}
|
||||
subscribe(topBackButton.clicks().throttleFirst()) { vm.onBackButtonClicked() }
|
||||
subscribe(menuButton.clicks().throttleFirst()) { vm.onMenuClicked() }
|
||||
subscribe(customizeViewButton.clicks().throttleFirst()) { vm.onViewerCustomizeButtonClicked() }
|
||||
subscribe(viewerTitle.clicks().throttleFirst()) { vm.onExpandViewerMenuClicked() }
|
||||
|
@ -306,21 +309,8 @@ open class ObjectSetFragment :
|
|||
subscribe(binding.bottomPanel.root.touches()) { swipeDetector.onTouchEvent(it) }
|
||||
|
||||
subscribe(
|
||||
binding.bottomToolbar.backClicks().throttleFirst()
|
||||
) { vm.onBackButtonClicked() }
|
||||
|
||||
binding.bottomToolbar
|
||||
.binding
|
||||
.btnBack
|
||||
.longClicks(withHaptic = true)
|
||||
.onEach {
|
||||
runCatching {
|
||||
findNavController().navigate(R.id.actionExitToSpaceWidgets)
|
||||
}.onFailure {
|
||||
Timber.e(it, "Error while opening space switcher from editor")
|
||||
}
|
||||
}
|
||||
.launchIn(lifecycleScope)
|
||||
binding.bottomToolbar.shareClicks().throttleFirst()
|
||||
) { vm.onShareButtonClicked() }
|
||||
|
||||
subscribe(
|
||||
binding.bottomToolbar.searchClicks().throttleFirst()
|
||||
|
|
|
@ -107,6 +107,9 @@ class RemoteFilesManageFragment : BaseBottomSheetComposeFragment() {
|
|||
is CollectionViewModel.Command.OpenDateObject -> {
|
||||
// Do nothing
|
||||
}
|
||||
is CollectionViewModel.Command.OpenShareScreen -> {
|
||||
// Do nothing
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@ import com.anytypeio.anytype.presentation.widgets.collection.Subscription
|
|||
import com.anytypeio.anytype.presentation.widgets.collection.SubscriptionMapper
|
||||
import com.anytypeio.anytype.ui.base.navigation
|
||||
import com.anytypeio.anytype.ui.dashboard.DeleteAlertFragment
|
||||
import com.anytypeio.anytype.ui.multiplayer.ShareSpaceFragment
|
||||
import com.anytypeio.anytype.ui.objects.creation.ObjectTypeSelectionFragment
|
||||
import com.anytypeio.anytype.ui.objects.types.pickers.ObjectTypeSelectionListener
|
||||
import javax.inject.Inject
|
||||
|
@ -131,6 +132,16 @@ class CollectionFragment : BaseComposeFragment(), ObjectTypeSelectionListener {
|
|||
Timber.e(e, "Error while opening date object from Collection screen")
|
||||
}
|
||||
}
|
||||
is Command.OpenShareScreen -> {
|
||||
runCatching {
|
||||
findNavController().navigate(
|
||||
R.id.shareSpaceScreen,
|
||||
args = ShareSpaceFragment.args(command.space)
|
||||
)
|
||||
}.onFailure {
|
||||
Timber.e(it, "Error while opening share screen")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -150,7 +150,8 @@ fun ScreenContent(
|
|||
addDocClick = { vm.onAddClicked(null) },
|
||||
addDocLongClick = onCreateObjectLongClicked,
|
||||
backLongClick = vm::onBackLongClicked,
|
||||
isOwnerOrEditor = uiState.isActionButtonVisible
|
||||
isOwnerOrEditor = uiState.isActionButtonVisible,
|
||||
onShareButtonClicked = vm::onShareButtonClicked
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -175,6 +176,13 @@ fun TopBar(
|
|||
.fillMaxWidth()
|
||||
.height(48.dp)
|
||||
) {
|
||||
Image(
|
||||
painter = painterResource(R.drawable.ic_default_top_back),
|
||||
contentDescription = stringResource(R.string.content_desc_back_button),
|
||||
modifier = Modifier
|
||||
.align(Alignment.CenterStart)
|
||||
.noRippleClickable { vm.onPrevClicked() }
|
||||
)
|
||||
Text(
|
||||
modifier = Modifier.align(Alignment.Center),
|
||||
text = uiState.collectionName,
|
||||
|
|
|
@ -113,16 +113,7 @@ fun SpaceIconView(
|
|||
}
|
||||
}
|
||||
else -> {
|
||||
Box(
|
||||
modifier = modifier
|
||||
.size(mainSize)
|
||||
.background(
|
||||
color = colorResource(id = R.color.palette_system_yellow),
|
||||
shape = RoundedCornerShape(radius)
|
||||
)
|
||||
.clip(RoundedCornerShape(radius))
|
||||
.noRippleClickable { onSpaceIconClick.invoke() }
|
||||
)
|
||||
// Draw nothing
|
||||
}
|
||||
}
|
||||
}
|
|
@ -65,6 +65,7 @@ fun BottomNavigationMenu(
|
|||
modifier: Modifier = Modifier,
|
||||
backClick: () -> Unit = {},
|
||||
backLongClick: () -> Unit = {},
|
||||
onShareButtonClicked: () -> Unit = {},
|
||||
searchClick: () -> Unit = {},
|
||||
addDocClick: () -> Unit = {},
|
||||
addDocLongClick: () -> Unit = {},
|
||||
|
@ -86,10 +87,15 @@ fun BottomNavigationMenu(
|
|||
) {
|
||||
MenuItem(
|
||||
modifier = Modifier.width(72.dp).height(52.dp),
|
||||
contentDescription = stringResource(id = R.string.main_navigation_content_desc_back_button),
|
||||
res = BottomNavigationItem.BACK.res,
|
||||
onClick = backClick,
|
||||
onLongClick = backLongClick
|
||||
contentDescription = stringResource(id = R.string.main_navigation_content_desc_members_button),
|
||||
res = BottomNavigationItem.MEMBERS.res,
|
||||
onClick = onShareButtonClicked
|
||||
)
|
||||
MenuItem(
|
||||
modifier = Modifier.width(72.dp).height(52.dp),
|
||||
contentDescription = stringResource(id = R.string.main_navigation_content_desc_search_button),
|
||||
res = BottomNavigationItem.SEARCH.res,
|
||||
onClick = searchClick
|
||||
)
|
||||
if (isOwnerOrEditor) {
|
||||
MenuItem(
|
||||
|
@ -100,12 +106,6 @@ fun BottomNavigationMenu(
|
|||
onLongClick = addDocLongClick
|
||||
)
|
||||
}
|
||||
MenuItem(
|
||||
modifier = Modifier.width(72.dp).height(52.dp),
|
||||
contentDescription = stringResource(id = R.string.main_navigation_content_desc_search_button),
|
||||
res = BottomNavigationItem.SEARCH.res,
|
||||
onClick = searchClick
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -196,7 +196,7 @@ private fun ProfileMenuItem(
|
|||
|
||||
private enum class BottomNavigationItem(@DrawableRes val res: Int) {
|
||||
BACK(R.drawable.ic_nav_panel_back),
|
||||
HOME(R.drawable.ic_nav_panel_vault),
|
||||
MEMBERS(R.drawable.ic_nav_panel_members),
|
||||
SEARCH(R.drawable.ic_nav_panel_search),
|
||||
ADD_DOC(R.drawable.ic_nav_panel_plus)
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ class MainBottomToolbar @JvmOverloads constructor(
|
|||
|
||||
fun searchClicks() = binding.btnSearch.clicks()
|
||||
fun addDocClicks() = binding.btnAddDoc.clicks()
|
||||
fun backClicks() = binding.btnBack.clicks()
|
||||
fun shareClicks() = binding.btnShare.clicks()
|
||||
|
||||
|
||||
fun setIsReadOnly(isReadOnly: Boolean) {
|
||||
|
|
|
@ -26,6 +26,7 @@ class ObjectTopToolbar @JvmOverloads constructor(
|
|||
)
|
||||
|
||||
val status: StatusBadgeWidget get() = binding.statusBadge
|
||||
val back: View get() = binding.ivTopBackButton
|
||||
val menu: View get() = binding.threeDotsButton
|
||||
val container: ViewGroup get() = binding.titleContainer
|
||||
val title: TextView get() = binding.tvTopToolbarTitle
|
||||
|
|
12
core-ui/src/main/res/drawable/ic_default_top_back.xml
Normal file
12
core-ui/src/main/res/drawable/ic_default_top_back.xml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M15,20L7,12L15,4"
|
||||
android:strokeWidth="2"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="@color/glyph_active"
|
||||
android:strokeLineCap="round"/>
|
||||
</vector>
|
11
core-ui/src/main/res/drawable/ic_home_top_toolbar_back.xml
Normal file
11
core-ui/src/main/res/drawable/ic_home_top_toolbar_back.xml
Normal file
|
@ -0,0 +1,11 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M15,20L7,12L15,4"
|
||||
android:strokeWidth="2"
|
||||
android:strokeColor="@color/glyph_active"
|
||||
android:strokeLineCap="round"/>
|
||||
</vector>
|
|
@ -6,7 +6,6 @@
|
|||
<path
|
||||
android:pathData="M20,25L11,16L20,7"
|
||||
android:strokeWidth="1.5"
|
||||
android:fillColor="@color/transparent_black"
|
||||
android:strokeColor="@color/glyph_active"
|
||||
android:strokeLineCap="round"/>
|
||||
</vector>
|
||||
|
|
24
core-ui/src/main/res/drawable/ic_nav_panel_members.xml
Normal file
24
core-ui/src/main/res/drawable/ic_nav_panel_members.xml
Normal file
|
@ -0,0 +1,24 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="32dp"
|
||||
android:height="32dp"
|
||||
android:viewportWidth="32"
|
||||
android:viewportHeight="32">
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M4,4h24v24h-24z"/>
|
||||
<path
|
||||
android:pathData="M7.75,12.75a3.25,3.75 0,1 0,6.5 0a3.25,3.75 0,1 0,-6.5 0z"
|
||||
android:fillColor="@color/glyph_active" />
|
||||
<path
|
||||
android:pathData="M17.063,25C17.615,25 18.07,24.55 17.992,24.003C17.503,20.609 14.559,18 11,18C7.441,18 4.497,20.609 4.009,24.003C3.93,24.55 4.385,25 4.938,25H17.063Z"
|
||||
android:fillColor="@color/glyph_active"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M17.75,9.75a3.25,3.75 0,1 0,6.5 0a3.25,3.75 0,1 0,-6.5 0z"
|
||||
android:fillColor="@color/glyph_active"/>
|
||||
<path
|
||||
android:pathData="M27.99,21.003C28.069,21.55 27.614,22 27.061,22H19.015C18.331,20.2 17.05,18.693 15.414,17.715C16.706,16.063 18.727,15 20.999,15C24.558,15 27.502,17.609 27.99,21.003Z"
|
||||
android:fillColor="@color/glyph_active"
|
||||
android:fillType="evenOdd"/>
|
||||
</group>
|
||||
</vector>
|
|
@ -4,7 +4,7 @@
|
|||
android:viewportWidth="32"
|
||||
android:viewportHeight="32">
|
||||
<path
|
||||
android:pathData="M15.25,25.25C15.25,25.664 15.586,26 16,26C16.414,26 16.75,25.664 16.75,25.25V16.75H25.25C25.664,16.75 26,16.414 26,16C26,15.586 25.664,15.25 25.25,15.25H16.75V6.75C16.75,6.336 16.414,6 16,6C15.586,6 15.25,6.336 15.25,6.75V15.25H6.75C6.336,15.25 6,15.586 6,16C6,16.414 6.336,16.75 6.75,16.75H15.25V25.25Z"
|
||||
android:pathData="M16,5C9.925,5 5,9.925 5,16C5,22.075 9.925,27 16,27C22.075,27 27,22.075 27,16C27,9.925 22.075,5 16,5ZM16,22C15.586,22 15.25,21.664 15.25,21.25V16.75H10.75C10.336,16.75 10,16.414 10,16C10,15.586 10.336,15.25 10.75,15.25H15.25V10.75C15.25,10.336 15.586,10 16,10C16.414,10 16.75,10.336 16.75,10.75V15.25H21.25C21.664,15.25 22,15.586 22,16C22,16.414 21.664,16.75 21.25,16.75H16.75V21.25C16.75,21.664 16.414,22 16,22Z"
|
||||
android:fillColor="@color/glyph_active"
|
||||
android:fillType="evenOdd"/>
|
||||
</vector>
|
||||
|
|
|
@ -6,12 +6,10 @@
|
|||
<path
|
||||
android:pathData="M15,13.998m-7.25,0a7.25,7.25 0,1 1,14.5 0a7.25,7.25 0,1 1,-14.5 0"
|
||||
android:strokeWidth="1.5"
|
||||
android:fillColor="@color/transparent_black"
|
||||
android:strokeColor="@color/glyph_active"/>
|
||||
<path
|
||||
android:pathData="M26,24.998L20.5,19.5"
|
||||
android:strokeWidth="1.5"
|
||||
android:fillColor="@color/transparent_black"
|
||||
android:strokeColor="@color/glyph_active"
|
||||
android:strokeLineCap="round"/>
|
||||
</vector>
|
||||
|
|
|
@ -6,12 +6,28 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/topBackButton"
|
||||
android:layout_width="28dp"
|
||||
android:layout_height="28dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginStart="16dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivTopBackButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:src="@drawable/ic_default_top_back" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/statusContainer"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:paddingStart="10dp"
|
||||
android:paddingEnd="10dp"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="54dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="28dp">
|
||||
|
||||
|
|
|
@ -5,38 +5,20 @@
|
|||
tools:context="com.anytypeio.anytype.core_ui.widgets.toolbar.MainBottomToolbar">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/btnBack"
|
||||
android:id="@+id/btnShare"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/default_ripple">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/icBack"
|
||||
android:id="@+id/icShare"
|
||||
android:layout_width="@dimen/main_bottom_toolbar_icon_width"
|
||||
android:layout_height="@dimen/main_bottom_toolbar_icon_height"
|
||||
android:layout_gravity="center"
|
||||
android:scaleType="center"
|
||||
android:contentDescription="@string/content_desc_back_button"
|
||||
app:srcCompat="@drawable/ic_nav_panel_back" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/btnAddDoc"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/default_ripple">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/icAddDoc"
|
||||
android:layout_width="@dimen/main_bottom_toolbar_icon_width"
|
||||
android:layout_height="@dimen/main_bottom_toolbar_icon_height"
|
||||
android:layout_gravity="center"
|
||||
android:scaleType="center"
|
||||
android:contentDescription="@string/content_desc_add_doc_button"
|
||||
app:srcCompat="@drawable/ic_nav_panel_plus" />
|
||||
app:srcCompat="@drawable/ic_nav_panel_members" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
|
@ -59,4 +41,22 @@
|
|||
|
||||
</FrameLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/btnAddDoc"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/default_ripple">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/icAddDoc"
|
||||
android:layout_width="@dimen/main_bottom_toolbar_icon_width"
|
||||
android:layout_height="@dimen/main_bottom_toolbar_icon_height"
|
||||
android:layout_gravity="center"
|
||||
android:scaleType="center"
|
||||
android:contentDescription="@string/content_desc_add_doc_button"
|
||||
app:srcCompat="@drawable/ic_nav_panel_plus" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
</merge>
|
|
@ -3,13 +3,29 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/topBackButton"
|
||||
android:layout_width="28dp"
|
||||
android:layout_height="28dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginStart="16dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivTopBackButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:src="@drawable/ic_default_top_back" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<com.anytypeio.anytype.core_ui.widgets.StatusBadgeWidget
|
||||
android:id="@+id/statusBadge"
|
||||
android:layout_width="28dp"
|
||||
android:layout_height="28dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:scaleType="center"
|
||||
android:layout_marginStart="12dp"
|
||||
android:layout_marginEnd="54dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"/>
|
||||
|
|
|
@ -763,6 +763,12 @@ class AllContentViewModel(
|
|||
proceedWithCreateDoc(objType)
|
||||
}
|
||||
|
||||
fun onMemberButtonClicked() {
|
||||
viewModelScope.launch {
|
||||
commands.emit(OpenShareScreen(vmParams.spaceId))
|
||||
}
|
||||
}
|
||||
|
||||
private fun proceedWithCreateDoc(
|
||||
objType: ObjectWrapper.Type? = null
|
||||
) {
|
||||
|
@ -993,6 +999,7 @@ class AllContentViewModel(
|
|||
)
|
||||
}
|
||||
}
|
||||
|
||||
//endregion
|
||||
|
||||
sealed class Command {
|
||||
|
@ -1010,6 +1017,7 @@ class AllContentViewModel(
|
|||
}
|
||||
data class OpenTypeEditing(val item: UiContentItem.Type) : Command()
|
||||
data object OpenTypeCreation: Command()
|
||||
data class OpenShareScreen(val space: SpaceId): Command()
|
||||
data class OpenRelationEditing(
|
||||
val typeName: String,
|
||||
val id: Id,
|
||||
|
|
|
@ -131,7 +131,8 @@ fun AllContentWrapperScreen(
|
|||
onBackLongClicked: () -> Unit,
|
||||
moveToBin: (UiContentItem.Item) -> Unit,
|
||||
undoMoveToBin: (Id) -> Unit,
|
||||
onDismissSnackbar: () -> Unit
|
||||
onDismissSnackbar: () -> Unit,
|
||||
onShareButtonClicked: () -> Unit
|
||||
) {
|
||||
|
||||
AllContentMainScreen(
|
||||
|
@ -159,7 +160,8 @@ fun AllContentWrapperScreen(
|
|||
undoMoveToBin = undoMoveToBin,
|
||||
onDismissSnackbar = onDismissSnackbar,
|
||||
canPaginate = canPaginate,
|
||||
onUpdateLimitSearch = onUpdateLimitSearch
|
||||
onUpdateLimitSearch = onUpdateLimitSearch,
|
||||
onShareButtonClicked = onShareButtonClicked
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -191,6 +193,7 @@ fun AllContentMainScreen(
|
|||
onDismissSnackbar: () -> Unit,
|
||||
canPaginate: Boolean,
|
||||
onUpdateLimitSearch: () -> Unit,
|
||||
onShareButtonClicked: () -> Unit
|
||||
) {
|
||||
var isSearchEmpty by remember { mutableStateOf(true) }
|
||||
val snackBarHostState = remember { SnackbarHostState() }
|
||||
|
@ -235,7 +238,8 @@ fun AllContentMainScreen(
|
|||
onCreateObjectLongClicked = onCreateObjectLongClicked,
|
||||
onBackClicked = onBackClicked,
|
||||
onBackLongClicked = onBackLongClicked,
|
||||
uiBottomMenu = uiBottomMenu
|
||||
uiBottomMenu = uiBottomMenu,
|
||||
onShareButtonClicked = onShareButtonClicked
|
||||
)
|
||||
}
|
||||
},
|
||||
|
@ -253,7 +257,8 @@ fun AllContentMainScreen(
|
|||
uiMenuState = uiMenuState,
|
||||
onSortClick = onSortClick,
|
||||
onModeClick = onModeClick,
|
||||
onBinClick = onBinClick
|
||||
onBinClick = onBinClick,
|
||||
onBackClick = onBackClicked
|
||||
)
|
||||
AllContentTabs(tabsViewState = uiTabsState) { tab ->
|
||||
onTabClick(tab)
|
||||
|
@ -337,6 +342,7 @@ fun BottomMenu(
|
|||
onCreateObjectLongClicked: () -> Unit,
|
||||
onBackClicked: () -> Unit,
|
||||
onBackLongClicked: () -> Unit,
|
||||
onShareButtonClicked: () -> Unit
|
||||
) {
|
||||
val isImeVisible = WindowInsets.ime.getBottom(LocalDensity.current) > 0
|
||||
if (isImeVisible) return
|
||||
|
@ -347,7 +353,8 @@ fun BottomMenu(
|
|||
searchClick = onGlobalSearchClicked,
|
||||
addDocClick = onAddDocClicked,
|
||||
addDocLongClick = onCreateObjectLongClicked,
|
||||
isOwnerOrEditor = uiBottomMenu.isOwnerOrEditor
|
||||
isOwnerOrEditor = uiBottomMenu.isOwnerOrEditor,
|
||||
onShareButtonClicked = onShareButtonClicked
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -617,7 +624,8 @@ fun PreviewMainScreen() {
|
|||
undoMoveToBin = {},
|
||||
onDismissSnackbar = {},
|
||||
canPaginate = true,
|
||||
onUpdateLimitSearch = {}
|
||||
onUpdateLimitSearch = {},
|
||||
onShareButtonClicked = {}
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ import androidx.compose.foundation.text.KeyboardActions
|
|||
import androidx.compose.foundation.text.selection.LocalTextSelectionColors
|
||||
import androidx.compose.foundation.text.selection.TextSelectionColors
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.IconButton
|
||||
import androidx.compose.material.TextFieldDefaults
|
||||
import androidx.compose.material3.CenterAlignedTopAppBar
|
||||
import androidx.compose.material3.DropdownMenu
|
||||
|
@ -78,7 +79,8 @@ fun AllContentTopBarContainer(
|
|||
uiMenuState: UiMenuState,
|
||||
onModeClick: (AllContentMenuMode) -> Unit,
|
||||
onSortClick: (AllContentSort) -> Unit,
|
||||
onBinClick: () -> Unit
|
||||
onBinClick: () -> Unit,
|
||||
onBackClick: () -> Unit
|
||||
) {
|
||||
var isMenuExpanded by remember { mutableStateOf(false) }
|
||||
|
||||
|
@ -86,6 +88,18 @@ fun AllContentTopBarContainer(
|
|||
modifier = Modifier.fillMaxWidth(),
|
||||
expandedHeight = 48.dp,
|
||||
title = { AllContentTitle(state = titleState) },
|
||||
navigationIcon = {
|
||||
Image(
|
||||
modifier = Modifier
|
||||
.padding(start = 16.dp)
|
||||
.noRippleClickable {
|
||||
onBackClick()
|
||||
}
|
||||
,
|
||||
painter = painterResource(R.drawable.ic_default_top_back),
|
||||
contentDescription = stringResource(R.string.content_desc_back_button)
|
||||
)
|
||||
},
|
||||
actions = {
|
||||
AllContentMenuButton(
|
||||
onClick = { isMenuExpanded = true }
|
||||
|
@ -147,7 +161,8 @@ private fun AllContentTopBarContainerPreview() {
|
|||
),
|
||||
onModeClick = {},
|
||||
onSortClick = {},
|
||||
onBinClick = {}
|
||||
onBinClick = {},
|
||||
onBackClick = {}
|
||||
)
|
||||
}
|
||||
//endregion
|
||||
|
|
|
@ -763,7 +763,7 @@ private fun ChatBox(
|
|||
}
|
||||
) {
|
||||
Image(
|
||||
painter = painterResource(id = R.drawable.ic_nav_panel_plus),
|
||||
painter = painterResource(id = R.drawable.ic_chat_box_add_attachment),
|
||||
contentDescription = "Plus button",
|
||||
modifier = Modifier
|
||||
.align(Alignment.Center)
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="32dp"
|
||||
android:height="32dp"
|
||||
android:viewportWidth="32"
|
||||
android:viewportHeight="32">
|
||||
<path
|
||||
android:pathData="M15.25,25.25C15.25,25.664 15.586,26 16,26C16.414,26 16.75,25.664 16.75,25.25V16.75H25.25C25.664,16.75 26,16.414 26,16C26,15.586 25.664,15.25 25.25,15.25H16.75V6.75C16.75,6.336 16.414,6 16,6C15.586,6 15.25,6.336 15.25,6.75V15.25H6.75C6.336,15.25 6,15.586 6,16C6,16.414 6.336,16.75 6.75,16.75H15.25V25.25Z"
|
||||
android:fillColor="@color/glyph_active"
|
||||
android:fillType="evenOdd"/>
|
||||
</vector>
|
|
@ -1820,6 +1820,7 @@ Please provide specific details of your needs here.</string>
|
|||
<string name="all_content_snackbar_title">moved to bin</string>
|
||||
|
||||
<string name="main_navigation_content_desc_back_button">Back button</string>
|
||||
<string name="main_navigation_content_desc_members_button">Share and members button</string>
|
||||
<string name="main_navigation_content_desc_search_button">Search objects button</string>
|
||||
<string name="main_navigation_content_desc_create_button">Create object button</string>
|
||||
|
||||
|
|
|
@ -1197,6 +1197,12 @@ class EditorViewModel(
|
|||
proceedWithExitingBack()
|
||||
}
|
||||
|
||||
fun onShareButtonClicked() {
|
||||
dispatch(
|
||||
Command.OpenShareScreen(vmParams.space)
|
||||
)
|
||||
}
|
||||
|
||||
fun onHomeButtonClicked() {
|
||||
Timber.d("onHomeButtonClicked, ")
|
||||
if (stateData.value == ViewState.NotExist) {
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.anytypeio.anytype.presentation.editor.editor
|
|||
import com.anytypeio.anytype.core_models.Id
|
||||
import com.anytypeio.anytype.core_models.Key
|
||||
import com.anytypeio.anytype.core_models.Url
|
||||
import com.anytypeio.anytype.core_models.primitives.SpaceId
|
||||
import com.anytypeio.anytype.core_utils.ext.Mimetype
|
||||
import com.anytypeio.anytype.presentation.objects.ObjectIcon
|
||||
|
||||
|
@ -21,6 +22,8 @@ sealed class Command {
|
|||
data object OpenVideoPicker: Command()
|
||||
data object OpenFilePicker: Command()
|
||||
|
||||
data class OpenShareScreen(val space: SpaceId) : Command()
|
||||
|
||||
data class OpenBookmarkSetter(
|
||||
val target: String,
|
||||
val context: String,
|
||||
|
|
|
@ -1750,6 +1750,14 @@ class HomeScreenViewModel(
|
|||
}
|
||||
}
|
||||
|
||||
fun onSpaceShareIconClicked() {
|
||||
viewModelScope.launch {
|
||||
commands.emit(
|
||||
Command.ShareSpace(SpaceId(spaceManager.get()))
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun onSpaceSettingsClicked() {
|
||||
viewModelScope.launch {
|
||||
commands.emit(
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.anytypeio.anytype.presentation.navigation
|
|||
|
||||
import com.anytypeio.anytype.core_models.Id
|
||||
import com.anytypeio.anytype.core_models.Key
|
||||
import com.anytypeio.anytype.core_models.primitives.SpaceId
|
||||
import com.anytypeio.anytype.presentation.widgets.collection.Subscription
|
||||
|
||||
interface AppNavigation {
|
||||
|
@ -44,6 +45,7 @@ interface AppNavigation {
|
|||
fun exitToDesktop()
|
||||
fun exitToVault()
|
||||
fun openGlobalSearch(space: Id)
|
||||
fun openShareScreen(space: SpaceId)
|
||||
fun openUpdateAppScreen()
|
||||
fun openRemoteFilesManageScreen(subscription: Id, space: Id)
|
||||
|
||||
|
@ -82,6 +84,10 @@ interface AppNavigation {
|
|||
object OpenSettings : Command()
|
||||
object MigrationErrorScreen: Command()
|
||||
|
||||
data class OpenShareScreen(
|
||||
val space: SpaceId
|
||||
) : Command()
|
||||
|
||||
data class OpenGlobalSearch(
|
||||
val space: Id
|
||||
) : Command()
|
||||
|
|
|
@ -103,6 +103,7 @@ import com.anytypeio.anytype.presentation.templates.TemplateView
|
|||
import com.anytypeio.anytype.presentation.util.Dispatcher
|
||||
import com.anytypeio.anytype.presentation.widgets.TypeTemplatesWidgetUI
|
||||
import com.anytypeio.anytype.presentation.widgets.TypeTemplatesWidgetUIAction
|
||||
import com.anytypeio.anytype.presentation.widgets.collection.CollectionViewModel.Command.OpenShareScreen
|
||||
import com.anytypeio.anytype.presentation.widgets.enterEditing
|
||||
import com.anytypeio.anytype.presentation.widgets.exitEditing
|
||||
import com.anytypeio.anytype.presentation.widgets.hideMoreMenu
|
||||
|
@ -1609,6 +1610,16 @@ class ObjectSetViewModel(
|
|||
}
|
||||
}
|
||||
|
||||
fun onShareButtonClicked() {
|
||||
viewModelScope.launch {
|
||||
dispatch(
|
||||
AppNavigation.Command.OpenShareScreen(
|
||||
vmParams.space
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun onClickListener(clicked: ListenerType) {
|
||||
Timber.d("onClickListener, clicked:[$clicked]")
|
||||
when (clicked) {
|
||||
|
|
|
@ -847,14 +847,16 @@ class CollectionViewModel(
|
|||
fun onPrevClicked() {
|
||||
launch {
|
||||
analytics.sendScreenHomeEvent()
|
||||
commands.emit(Command.Exit)
|
||||
commands.emit(Exit)
|
||||
}
|
||||
}
|
||||
|
||||
fun onShareButtonClicked() {
|
||||
launch { commands.emit(OpenShareScreen(vmParams.spaceId)) }
|
||||
}
|
||||
|
||||
fun onBackLongClicked() {
|
||||
launch {
|
||||
commands.emit(Command.ExitToSpaceWidgets)
|
||||
}
|
||||
launch { commands.emit(ExitToSpaceWidgets) }
|
||||
}
|
||||
|
||||
fun onSearchClicked(space: Id) {
|
||||
|
@ -1044,6 +1046,7 @@ class CollectionViewModel(
|
|||
data class LaunchObjectSet(val target: Id, val space: Id) : Command()
|
||||
data class OpenChat(val target: Id, val space: Id) : Command()
|
||||
data class OpenDateObject(val target: Id, val space: Id) : Command()
|
||||
data class OpenShareScreen(val space: SpaceId) : Command()
|
||||
|
||||
data object ToDesktop : Command()
|
||||
data class ToSearch(val space: Id) : Command()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue