diff --git a/app/src/main/java/com/anytypeio/anytype/device/NotificationExtensions.kt b/app/src/main/java/com/anytypeio/anytype/device/NotificationExtensions.kt index a377427cee..b080ea8db2 100644 --- a/app/src/main/java/com/anytypeio/anytype/device/NotificationExtensions.kt +++ b/app/src/main/java/com/anytypeio/anytype/device/NotificationExtensions.kt @@ -12,9 +12,9 @@ fun DecryptedPushContent.Message.formatNotificationBody(attachmentText: String): val rawText = text.trim() return when { hasAttachments && rawText.isNotEmpty() -> - "$rawText \uD83D\uDCCE$attachmentText" + "$rawText \uD83D\uDCCE $attachmentText" hasAttachments -> - "\uD83D\uDCCE$attachmentText" + "\uD83D\uDCCE $attachmentText" else -> rawText } diff --git a/app/src/main/java/com/anytypeio/anytype/di/feature/spaces/SpaceSettingsDI.kt b/app/src/main/java/com/anytypeio/anytype/di/feature/spaces/SpaceSettingsDI.kt index c2e7d2effb..dfcf94d13d 100644 --- a/app/src/main/java/com/anytypeio/anytype/di/feature/spaces/SpaceSettingsDI.kt +++ b/app/src/main/java/com/anytypeio/anytype/di/feature/spaces/SpaceSettingsDI.kt @@ -6,6 +6,7 @@ import com.anytypeio.anytype.analytics.base.Analytics import com.anytypeio.anytype.core_utils.di.scope.PerScreen import com.anytypeio.anytype.device.share.debug.DebugSpaceDeviceFileContentSaver import com.anytypeio.anytype.di.common.ComponentDependencies +import com.anytypeio.anytype.domain.auth.interactor.GetAccount import com.anytypeio.anytype.domain.auth.repo.AuthRepository import com.anytypeio.anytype.domain.base.AppCoroutineDispatchers import com.anytypeio.anytype.domain.block.repo.BlockRepository @@ -89,6 +90,14 @@ object SpaceSettingsModule { repo = repository ) + @JvmStatic + @Provides + @PerScreen + fun provideGetAccountUseCase( + repo: AuthRepository, + dispatchers: AppCoroutineDispatchers + ): GetAccount = GetAccount(repo = repo, dispatcher = dispatchers) + @Module interface Bindings { diff --git a/app/src/test/java/com/anytypeio/anytype/device/NotificationExtensionsTest.kt b/app/src/test/java/com/anytypeio/anytype/device/NotificationExtensionsTest.kt index 3b9ee7e631..7ba1f08204 100644 --- a/app/src/test/java/com/anytypeio/anytype/device/NotificationExtensionsTest.kt +++ b/app/src/test/java/com/anytypeio/anytype/device/NotificationExtensionsTest.kt @@ -15,13 +15,13 @@ class NotificationExtensionsTest { @Test fun `formatNotificationBody appends attachment indicator when only attachments present`() { val message = createMessage(text = "", hasAttachments = true) - assertEquals("\uD83D\uDCCEattachment", message.formatNotificationBody("attachment")) + assertEquals("\uD83D\uDCCE attachment", message.formatNotificationBody("attachment")) } @Test fun `formatNotificationBody appends attachment indicator after text when both present`() { val message = createMessage(text = "Hello world", hasAttachments = true) - assertEquals("Hello world \uD83D\uDCCEattachment", message.formatNotificationBody("attachment")) + assertEquals("Hello world \uD83D\uDCCE attachment", message.formatNotificationBody("attachment")) } @Test diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/SpaceSettingsViewModel.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/SpaceSettingsViewModel.kt index aa245f5ccc..0068db5d4b 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/SpaceSettingsViewModel.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/SpaceSettingsViewModel.kt @@ -48,7 +48,9 @@ import com.anytypeio.anytype.domain.spaces.SetSpaceDetails import com.anytypeio.anytype.domain.spaces.SetSpaceDetails.* import com.anytypeio.anytype.domain.wallpaper.ObserveWallpaper import com.anytypeio.anytype.domain.workspace.SpaceManager +import com.anytypeio.anytype.domain.auth.interactor.GetAccount import com.anytypeio.anytype.presentation.common.BaseViewModel +import com.anytypeio.anytype.presentation.mapper.toView import com.anytypeio.anytype.presentation.objects.ObjectIcon import com.anytypeio.anytype.presentation.spaces.SpaceSettingsViewModel.Command.* import com.anytypeio.anytype.presentation.spaces.UiSpaceSettingsItem.* @@ -85,7 +87,8 @@ class SpaceSettingsViewModel( private val appActionManager: AppActionManager, private val getSpaceInviteLink: GetSpaceInviteLink, private val fetchObject: FetchObject, - private val setObjectDetails: SetObjectDetails + private val setObjectDetails: SetObjectDetails, + private val getAccount: GetAccount ): BaseViewModel() { val commands = MutableSharedFlow() @@ -175,6 +178,9 @@ class SpaceSettingsViewModel( ) } + // Get account for toView function + val account = getAccount.async(Unit).getOrNull()?.id + combine( restrictions, otherFlows @@ -190,7 +196,12 @@ class SpaceSettingsViewModel( val createdByNameOrId = spaceCreator?.globalName?.takeIf { it.isNotEmpty() } ?: spaceCreator?.identity val spaceMemberCount = if (spaceMembers is ActiveSpaceMemberSubscriptionContainer.Store.Data) { - spaceMembers.members.size + spaceMembers.members.toView( + spaceView = spaceView, + urlBuilder = urlBuilder, + isCurrentUserOwner = permission?.isOwner() == true, + account = account + ).size } else { 0 } @@ -770,7 +781,8 @@ class SpaceSettingsViewModel( private val storeOfObjectTypes: StoreOfObjectTypes, private val getSpaceInviteLink: GetSpaceInviteLink, private val fetchObject: FetchObject, - private val setObjectDetails: SetObjectDetails + private val setObjectDetails: SetObjectDetails, + private val getAccount: GetAccount ) : ViewModelProvider.Factory { @Suppress("UNCHECKED_CAST") override fun create( @@ -798,7 +810,8 @@ class SpaceSettingsViewModel( storeOfObjectTypes = storeOfObjectTypes, getSpaceInviteLink = getSpaceInviteLink, fetchObject = fetchObject, - setObjectDetails = setObjectDetails + setObjectDetails = setObjectDetails, + getAccount = getAccount ) as T }