mirror of
https://github.com/anyproto/anytype-kotlin.git
synced 2025-06-08 05:47:05 +09:00
DROID-2249 Mutiplayer | Fix | User-as-owner-of-space fixes (#993)
This commit is contained in:
parent
14eea20df2
commit
92d8d53705
3 changed files with 18 additions and 15 deletions
|
@ -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,
|
||||
|
|
|
@ -65,7 +65,7 @@ import com.anytypeio.anytype.presentation.objects.SpaceMemberIconView
|
|||
|
||||
@Composable
|
||||
fun ShareSpaceScreen(
|
||||
canStopSharing: Boolean,
|
||||
isCurrentUserOwner: Boolean,
|
||||
members: List<ShareSpaceMemberView>,
|
||||
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
|
||||
)
|
||||
}
|
|
@ -45,7 +45,7 @@ class ShareSpaceViewModel(
|
|||
val members = MutableStateFlow<List<ShareSpaceMemberView>>(emptyList())
|
||||
val shareLinkViewState = MutableStateFlow<ShareLinkViewState>(ShareLinkViewState.Init)
|
||||
val commands = MutableSharedFlow<Command>()
|
||||
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(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue