Refactor direct messages model

We can track the pubkey in the DirectMessageModel instead of having a
janky tuple.
This commit is contained in:
William Casarin
2023-04-15 12:41:00 -07:00
parent 247270f3d3
commit b5a3697d78
8 changed files with 74 additions and 58 deletions

View File

@@ -8,20 +8,43 @@
import Foundation
class DirectMessagesModel: ObservableObject {
@Published var dms: [(String, DirectMessageModel)] = []
@Published var dms: [DirectMessageModel] = []
@Published var loading: Bool = false
@Published var open_dm: Bool = false
@Published private(set) var active_model: DirectMessageModel = DirectMessageModel(our_pubkey: "", pubkey: "")
let our_pubkey: String
init(our_pubkey: String) {
self.our_pubkey = our_pubkey
}
var message_requests: [(String, DirectMessageModel)] {
return dms.filter { dm in dm.1.is_request }
var message_requests: [DirectMessageModel] {
return dms.filter { dm in dm.is_request }
}
var friend_dms: [(String, DirectMessageModel)] {
return dms.filter { dm in !dm.1.is_request }
var friend_dms: [DirectMessageModel] {
return dms.filter { dm in !dm.is_request }
}
func set_active_dm_model(_ model: DirectMessageModel) {
self.active_model = model
}
func open_dm_by_pk(_ pubkey: String) {
self.set_active_dm(pubkey)
self.open_dm = true
}
func open_dm_by_model(_ model: DirectMessageModel) {
self.set_active_dm_model(model)
self.open_dm = true
}
func set_active_dm(_ pubkey: String) {
for model in self.dms where model.pubkey == pubkey {
self.set_active_dm_model(model)
break
}
}
func lookup_or_create(_ pubkey: String) -> DirectMessageModel {
@@ -29,15 +52,15 @@ class DirectMessagesModel: ObservableObject {
return dm
}
let new = DirectMessageModel(our_pubkey: our_pubkey)
dms.append((pubkey, new))
let new = DirectMessageModel(our_pubkey: our_pubkey, pubkey: pubkey)
dms.append(new)
return new
}
func lookup(_ pubkey: String) -> DirectMessageModel? {
for dm in dms {
if pubkey == dm.0 {
return dm.1
if pubkey == dm.pubkey {
return dm
}
}