Files
letro-ios/ElementX/Sources/Services/Notification/Manager/NotificationManagerProtocol.swift
Stefan Ceriu 5a56abcfc7 Remove delivered notifications for rooms that have meantime become fully read and have messages newer than what's delivered
- this is a best effort solution to cleanup outdated notifications when using multiple clients and reading them elsewhere
2025-04-28 18:51:13 +03:00

39 lines
1.3 KiB
Swift

//
// Copyright 2022-2024 New Vector Ltd.
//
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
// Please see LICENSE files in the repository root for full details.
//
import Foundation
import UserNotifications
protocol NotificationManagerDelegate: AnyObject {
func shouldDisplayInAppNotification(content: UNNotificationContent) -> Bool
func notificationTapped(content: UNNotificationContent) async
func handleInlineReply(_ service: NotificationManagerProtocol,
content: UNNotificationContent,
replyText: String) async
func registerForRemoteNotifications()
func unregisterForRemoteNotifications()
}
// MARK: - NotificationManagerProtocol
// sourcery: AutoMockable
protocol NotificationManagerProtocol: AnyObject {
var delegate: NotificationManagerDelegate? { get set }
func start()
func register(with deviceToken: Data) async -> Bool
func registrationFailed(with error: Error)
func showLocalNotification(with title: String, subtitle: String?) async
func setUserSession(_ userSession: UserSessionProtocol?)
func requestAuthorization()
func removeDeliveredMessageNotifications(for roomID: String) async
func removeDeliveredNotificationsForFullyReadRooms(_ rooms: [RoomSummary]) async
}