TM-SGNL-iOS/SignalServiceKit/Messages/Reactions/ReactionStore.swift
TeleMessage developers dde0620daf initial commit
2025-05-03 12:28:28 -07:00

74 lines
2.3 KiB
Swift

//
// Copyright 2023 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
public import LibSignalClient
public protocol ReactionStore {
/// Refers to ``TSInteraction.uniqueId``.
typealias MessageId = String
func reaction(
for aci: Aci,
messageId: MessageId,
tx: DBReadTransaction
) -> OWSReaction?
/// Returns a list of all reactions to this message
func allReactions(
messageId: MessageId,
tx: DBReadTransaction
) -> [OWSReaction]
/// Returns a list of reactions to this message that have yet to be read
func unreadReactions(
messageId: MessageId,
tx: DBReadTransaction
) -> [OWSReaction]
/// A list of all the unique reaction IDs linked to this message, ordered by creation from oldest to neweset
func allUniqueIds(
messageId: MessageId,
tx: DBReadTransaction
) -> [String]
/// Delete all reaction records associated with this message
func deleteAllReactions(
messageId: MessageId,
tx: DBWriteTransaction
)
}
public class ReactionStoreImpl: ReactionStore {
public func reaction(
for aci: Aci,
messageId: MessageId,
tx: DBReadTransaction
) -> OWSReaction? {
ReactionFinder(uniqueMessageId: messageId)
.reaction(for: aci, tx: SDSDB.shimOnlyBridge(tx).unwrapGrdbRead)
}
public func allReactions(messageId: MessageId, tx: DBReadTransaction) -> [OWSReaction] {
ReactionFinder(uniqueMessageId: messageId)
.allReactions(transaction: SDSDB.shimOnlyBridge(tx).unwrapGrdbRead)
}
public func unreadReactions(messageId: MessageId, tx: DBReadTransaction) -> [OWSReaction] {
ReactionFinder(uniqueMessageId: messageId)
.unreadReactions(transaction: SDSDB.shimOnlyBridge(tx).unwrapGrdbRead)
}
public func allUniqueIds(messageId: MessageId, tx: DBReadTransaction) -> [String] {
ReactionFinder(uniqueMessageId: messageId)
.allUniqueIds(transaction: SDSDB.shimOnlyBridge(tx).unwrapGrdbRead)
}
public func deleteAllReactions(messageId: MessageId, tx: DBWriteTransaction) {
ReactionFinder(uniqueMessageId: messageId)
.deleteAllReactions(transaction: SDSDB.shimOnlyBridge(tx).unwrapGrdbWrite)
}
}