1
0
Fork 0
mirror of https://github.com/anyproto/anytype-kotlin.git synced 2025-06-08 05:47:05 +09:00

DROID-3707 Notifications | Clear push notifications for opened chat (#2475)

This commit is contained in:
Konstantin Ivanov 2025-05-29 11:11:24 +02:00 committed by konstantiniiv
parent 1359783d6b
commit dbf4750f5b
15 changed files with 343 additions and 69 deletions

View file

@ -33,6 +33,7 @@ import com.anytypeio.anytype.domain.multiplayer.ActiveSpaceMemberSubscriptionCon
import com.anytypeio.anytype.domain.multiplayer.ActiveSpaceMemberSubscriptionContainer.Store
import com.anytypeio.anytype.domain.multiplayer.SpaceViewSubscriptionContainer
import com.anytypeio.anytype.domain.multiplayer.UserPermissionProvider
import com.anytypeio.anytype.domain.notifications.NotificationBuilder
import com.anytypeio.anytype.domain.objects.CreateObjectFromUrl
import com.anytypeio.anytype.domain.objects.StoreOfObjectTypes
import com.anytypeio.anytype.domain.objects.getTypeOfObject
@ -85,7 +86,8 @@ class ChatViewModel @Inject constructor(
private val getLinkPreview: GetLinkPreview,
private val createObjectFromUrl: CreateObjectFromUrl,
private val notificationPermissionManager: NotificationPermissionManager,
private val spacePermissionProvider: UserPermissionProvider
private val spacePermissionProvider: UserPermissionProvider,
private val notificationBuilder: NotificationBuilder
) : BaseViewModel(), ExitToVaultDelegate by exitToVaultDelegate {
private val visibleRangeUpdates = MutableSharedFlow<Pair<Id, Id>>(
@ -168,6 +170,13 @@ class ChatViewModel @Inject constructor(
}
}
fun onResume() {
notificationBuilder.clearNotificationChannel(
spaceId = vmParams.space.id,
chatId = vmParams.ctx
)
}
private suspend fun proceedWithObservingChatMessages(
account: Id,
chat: Id

View file

@ -15,8 +15,7 @@ import com.anytypeio.anytype.domain.misc.UrlBuilder
import com.anytypeio.anytype.domain.multiplayer.ActiveSpaceMemberSubscriptionContainer
import com.anytypeio.anytype.domain.multiplayer.SpaceViewSubscriptionContainer
import com.anytypeio.anytype.domain.multiplayer.UserPermissionProvider
import com.anytypeio.anytype.domain.`object`.OpenObject
import com.anytypeio.anytype.domain.`object`.SetObjectDetails
import com.anytypeio.anytype.domain.notifications.NotificationBuilder
import com.anytypeio.anytype.domain.objects.CreateObjectFromUrl
import com.anytypeio.anytype.domain.objects.StoreOfObjectTypes
import com.anytypeio.anytype.presentation.notifications.NotificationPermissionManager
@ -43,19 +42,20 @@ class ChatViewModelFactory @Inject constructor(
private val getLinkPreview: GetLinkPreview,
private val createObjectFromUrl: CreateObjectFromUrl,
private val notificationPermissionManager: NotificationPermissionManager,
private val spacePermissionProvider: UserPermissionProvider
private val spacePermissionProvider: UserPermissionProvider,
private val notificationBuilder: NotificationBuilder
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(modelClass: Class<T>): T = ChatViewModel(
vmParams = params,
chatContainer = chatContainer,
addChatMessage = addChatMessage,
editChatMessage = editChatMessage,
deleteChatMessage = deleteChatMessage,
toggleChatMessageReaction = toggleChatMessageReaction,
members = members,
getAccount = getAccount,
deleteChatMessage = deleteChatMessage,
urlBuilder = urlBuilder,
editChatMessage = editChatMessage,
spaceViews = spaceViews,
dispatchers = dispatchers,
uploadFile = uploadFile,
@ -65,6 +65,7 @@ class ChatViewModelFactory @Inject constructor(
getLinkPreview = getLinkPreview,
createObjectFromUrl = createObjectFromUrl,
notificationPermissionManager = notificationPermissionManager,
spacePermissionProvider = spacePermissionProvider
spacePermissionProvider = spacePermissionProvider,
notificationBuilder = notificationBuilder
) as T
}