Path: blob/main/SignalServiceKit/PinnedThreadManager/PinnedThreadManager.swift
1 views
//
// Copyright 2023 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
public enum PinnedThreads {
public static var maxPinnedThreads: UInt {
RemoteConfig.current.pinnedThreadLimit
}
}
public protocol PinnedThreadManager {
func pinnedThreadIds(tx: DBReadTransaction) -> [String]
func pinnedThreads(tx: DBReadTransaction) -> [TSThread]
func isThreadPinned(_ thread: TSThread, tx: DBReadTransaction) -> Bool
func updatePinnedThreadIds(
_ pinnedThreadIds: [String],
updateStorageService: Bool,
tx: DBWriteTransaction,
)
func pinThread(
_ thread: TSThread,
updateStorageService: Bool,
tx: DBWriteTransaction,
) throws
func unpinThread(
_ thread: TSThread,
updateStorageService: Bool,
tx: DBWriteTransaction,
) throws
func handleUpdatedThread(_ thread: TSThread, tx: DBWriteTransaction)
}
@objc
public class PinnedThreadManagerObjcBridge: NSObject {
@objc
static func handleUpdatedThread(_ thread: TSThread, transaction: DBWriteTransaction) {
DependenciesBridge.shared.pinnedThreadManager.handleUpdatedThread(thread, tx: transaction)
}
}