DirectMessagesModel.swift (1508B)
1 // 2 // DirectMessagesModel.swift 3 // damus 4 // 5 // Created by William Casarin on 2022-06-29. 6 // 7 8 import Foundation 9 10 class DirectMessagesModel: ObservableObject { 11 @Published var dms: [DirectMessageModel] = [] 12 @Published var loading: Bool = false 13 @Published var open_dm: Bool = false 14 @Published private(set) var active_model: DirectMessageModel = DirectMessageModel(our_pubkey: .empty, pubkey: .empty) 15 let our_pubkey: Pubkey 16 17 init(our_pubkey: Pubkey) { 18 self.our_pubkey = our_pubkey 19 } 20 21 var message_requests: [DirectMessageModel] { 22 return dms.filter { dm in dm.is_request } 23 } 24 25 var friend_dms: [DirectMessageModel] { 26 return dms.filter { dm in !dm.is_request } 27 } 28 29 func set_active_dm_model(_ model: DirectMessageModel) { 30 self.active_model = model 31 } 32 33 func set_active_dm(_ pubkey: Pubkey) { 34 for model in self.dms where model.pubkey == pubkey { 35 self.set_active_dm_model(model) 36 break 37 } 38 } 39 40 func lookup_or_create(_ pubkey: Pubkey) -> DirectMessageModel { 41 if let dm = lookup(pubkey) { 42 return dm 43 } 44 45 let new = DirectMessageModel(our_pubkey: our_pubkey, pubkey: pubkey) 46 dms.append(new) 47 return new 48 } 49 50 func lookup(_ pubkey: Pubkey) -> DirectMessageModel? { 51 for dm in dms { 52 if pubkey == dm.pubkey { 53 return dm 54 } 55 } 56 57 return nil 58 } 59 }