35 lines
1.1 KiB
Swift
35 lines
1.1 KiB
Swift
//
|
|
// Copyright 2023 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
//
|
|
|
|
import Foundation
|
|
|
|
public class ThreadReplyInfoStore {
|
|
private let keyValueStore: KeyValueStore
|
|
init() {
|
|
self.keyValueStore = KeyValueStore(collection: "TSThreadReplyInfo")
|
|
}
|
|
|
|
public func fetch(for threadUniqueId: String, tx: DBReadTransaction) -> ThreadReplyInfo? {
|
|
guard let dataValue = keyValueStore.getData(threadUniqueId, transaction: tx) else {
|
|
return nil
|
|
}
|
|
return try? JSONDecoder().decode(ThreadReplyInfo.self, from: dataValue)
|
|
}
|
|
|
|
public func save(_ value: ThreadReplyInfo, for threadUniqueId: String, tx: DBWriteTransaction) {
|
|
let dataValue: Data
|
|
do {
|
|
dataValue = try JSONEncoder().encode(value)
|
|
} catch {
|
|
owsFailDebug("Can't encode ThreadReplyInfo")
|
|
return
|
|
}
|
|
keyValueStore.setData(dataValue, key: threadUniqueId, transaction: tx)
|
|
}
|
|
|
|
public func remove(for threadUniqueId: String, tx: DBWriteTransaction) {
|
|
keyValueStore.removeValue(forKey: threadUniqueId, transaction: tx)
|
|
}
|
|
}
|