diff --git a/app/src/main/java/com/anytypeio/anytype/ui/multiplayer/ShareSpaceFragment.kt b/app/src/main/java/com/anytypeio/anytype/ui/multiplayer/ShareSpaceFragment.kt index 6c47366f8c..562a17b459 100644 --- a/app/src/main/java/com/anytypeio/anytype/ui/multiplayer/ShareSpaceFragment.kt +++ b/app/src/main/java/com/anytypeio/anytype/ui/multiplayer/ShareSpaceFragment.kt @@ -49,7 +49,7 @@ class ShareSpaceFragment : BaseBottomSheetComposeFragment() { ) { ShareSpaceScreen( shareLinkViewState = vm.shareLinkViewState.collectAsStateWithLifecycle().value, - canStopSharing = vm.canStopSharing.collectAsStateWithLifecycle().value, + isCurrentUserOwner = vm.isCurrentUserOwner.collectAsStateWithLifecycle().value, onRegenerateInviteLinkClicked = vm::onRegenerateInviteLinkClicked, onShareInviteLinkClicked = vm::onShareInviteLinkClicked, members = vm.members.collectAsStateWithLifecycle().value, diff --git a/core-ui/src/main/java/com/anytypeio/anytype/core_ui/features/multiplayer/ShareSpaceScreen.kt b/core-ui/src/main/java/com/anytypeio/anytype/core_ui/features/multiplayer/ShareSpaceScreen.kt index ee18504eb5..6b8c76fc5f 100644 --- a/core-ui/src/main/java/com/anytypeio/anytype/core_ui/features/multiplayer/ShareSpaceScreen.kt +++ b/core-ui/src/main/java/com/anytypeio/anytype/core_ui/features/multiplayer/ShareSpaceScreen.kt @@ -65,7 +65,7 @@ import com.anytypeio.anytype.presentation.objects.SpaceMemberIconView @Composable fun ShareSpaceScreen( - canStopSharing: Boolean, + isCurrentUserOwner: Boolean, members: List, shareLinkViewState: ShareSpaceViewModel.ShareLinkViewState, onRegenerateInviteLinkClicked: () -> Unit, @@ -97,7 +97,7 @@ fun ShareSpaceScreen( .align(Alignment.CenterEnd) .padding(end = 16.dp) ) { - if (canStopSharing) { + if (isCurrentUserOwner) { Image( painter = painterResource(id = R.drawable.ic_action_more), contentDescription = "Menu button", @@ -143,6 +143,7 @@ fun ShareSpaceScreen( is ShareSpaceMemberView.Config.Member -> { SpaceMember( member = member.obj, + isCurrentUserOwner = isCurrentUserOwner, config = config, onCanEditClicked = { onCanEditClicked(member) @@ -199,6 +200,7 @@ fun ShareSpaceScreen( @Composable private fun SpaceMember( + isCurrentUserOwner: Boolean, member: ObjectWrapper.SpaceMember, icon: SpaceMemberIconView, config: ShareSpaceMemberView.Config.Member, @@ -246,7 +248,7 @@ private fun SpaceMember( color = colorResource(id = R.color.text_secondary) ) } - if (config !is ShareSpaceMemberView.Config.Member.Owner) { + if (isCurrentUserOwner && config !is ShareSpaceMemberView.Config.Member.Owner) { Box(modifier = Modifier.align(Alignment.CenterVertically)) { Image( painter = painterResource(id = R.drawable.ic_action_more), @@ -558,7 +560,7 @@ fun ShareSpaceScreenPreview() { onRemoveMemberClicked = {}, onCanViewClicked = {}, onCanEditClicked = {}, - canStopSharing = false, + isCurrentUserOwner = false, onStopSharingClicked = {} ) } @@ -577,7 +579,8 @@ private fun SpaceOwnerMemberPreview() { config = ShareSpaceMemberView.Config.Member.Owner, onCanEditClicked = {}, onCanViewClicked = {}, - onRemoveMemberClicked = {} + onRemoveMemberClicked = {}, + isCurrentUserOwner = true ) } @@ -595,6 +598,7 @@ private fun SpaceEditorMemberPreview() { config = ShareSpaceMemberView.Config.Member.Writer, onCanEditClicked = {}, onCanViewClicked = {}, - onRemoveMemberClicked = {} + onRemoveMemberClicked = {}, + isCurrentUserOwner = true ) } \ No newline at end of file diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/multiplayer/ShareSpaceViewModel.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/multiplayer/ShareSpaceViewModel.kt index e6d010beaf..48189ce440 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/multiplayer/ShareSpaceViewModel.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/multiplayer/ShareSpaceViewModel.kt @@ -45,7 +45,7 @@ class ShareSpaceViewModel( val members = MutableStateFlow>(emptyList()) val shareLinkViewState = MutableStateFlow(ShareLinkViewState.Init) val commands = MutableSharedFlow() - val canStopSharing = MutableStateFlow(false) + val isCurrentUserOwner = MutableStateFlow(false) init { proceedWithGeneratingInviteLink() @@ -54,6 +54,7 @@ class ShareSpaceViewModel( private fun proceedWithSpaceMemberSubscription() { viewModelScope.launch { + val account = getAccount.async(Unit).getOrNull() container.subscribe( StoreSearchParams( subscription = SHARE_SPACE_SUBSCRIPTION, @@ -71,12 +72,10 @@ class ShareSpaceViewModel( ) } }.onEach { results -> - val account = getAccount.async(Unit).getOrNull()?.id - canStopSharing.value = results.any { result -> - val member = result.obj - member.identity == account && member.permissions == OWNER - }.also { isOwnerFound -> - if (!isOwnerFound) Timber.w("Owner not found") + isCurrentUserOwner.value = results.any { result -> + with(result.obj) { + identity.isNotEmpty() && identity == account?.id && permissions == OWNER + } } }.collect { members.value = it @@ -225,7 +224,7 @@ class ShareSpaceViewModel( fun onStopSharingSpaceClicked() { Timber.d("onStopSharingClicked") viewModelScope.launch { - if (canStopSharing.value) { + if (isCurrentUserOwner.value) { stopSharingSpace.async( params = params.space ).fold(