wip
This commit is contained in:
parent
b1ca812c56
commit
3fbc18cbda
|
@ -7,9 +7,10 @@ private typealias ArchMsg = Martin.MessageArchiveManagementModule.ArchivedMessag
|
||||||
|
|
||||||
final class ClientMartinMAM {
|
final class ClientMartinMAM {
|
||||||
private var cancellables: Set<AnyCancellable> = []
|
private var cancellables: Set<AnyCancellable> = []
|
||||||
private var processor = ArchiveMessageProcessor()
|
private var processor: ArchiveMessageProcessor
|
||||||
|
|
||||||
init(_ xmppConnection: XMPPClient) {
|
init(_ xmppConnection: XMPPClient) {
|
||||||
|
processor = ArchiveMessageProcessor(xmppConnection.context)
|
||||||
// subscribe to archived messages
|
// subscribe to archived messages
|
||||||
xmppConnection.module(.mam).archivedMessagesPublisher
|
xmppConnection.module(.mam).archivedMessagesPublisher
|
||||||
.sink(receiveValue: { [weak self] archived in
|
.sink(receiveValue: { [weak self] archived in
|
||||||
|
@ -24,8 +25,10 @@ final class ClientMartinMAM {
|
||||||
|
|
||||||
private actor ArchiveMessageProcessor {
|
private actor ArchiveMessageProcessor {
|
||||||
private var accumulator: [ArchMsg] = []
|
private var accumulator: [ArchMsg] = []
|
||||||
|
private let context: Context?
|
||||||
|
|
||||||
init() {
|
init(_ ctx: Context?) {
|
||||||
|
context = ctx
|
||||||
Task {
|
Task {
|
||||||
while true {
|
while true {
|
||||||
try? await Task.sleep(nanoseconds: 700 * NSEC_PER_MSEC)
|
try? await Task.sleep(nanoseconds: 700 * NSEC_PER_MSEC)
|
||||||
|
@ -49,7 +52,7 @@ private actor ArchiveMessageProcessor {
|
||||||
|
|
||||||
private func handleMessages(_ received: [ArchMsg]) async {
|
private func handleMessages(_ received: [ArchMsg]) async {
|
||||||
if received.isEmpty { return }
|
if received.isEmpty { return }
|
||||||
try? await Database.shared.dbQueue.write { db in
|
try? await Database.shared.dbQueue.write { [weak self] db in
|
||||||
for recv in received {
|
for recv in received {
|
||||||
let message = recv.message
|
let message = recv.message
|
||||||
let date = recv.timestamp
|
let date = recv.timestamp
|
||||||
|
@ -67,7 +70,7 @@ private actor ArchiveMessageProcessor {
|
||||||
print("Date: \(date)")
|
print("Date: \(date)")
|
||||||
print("---")
|
print("---")
|
||||||
#endif
|
#endif
|
||||||
if var msg = Message.map(message, context: nil) {
|
if var msg = Message.map(message, context: self?.context) {
|
||||||
msg.date = date
|
msg.date = date
|
||||||
try msg.insert(db)
|
try msg.insert(db)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue