Lists.swift (1623B)
1 // 2 // Mute.swift 3 // damus 4 // 5 // Created by William Casarin on 2023-01-25. 6 // 7 8 import Foundation 9 10 func create_or_update_mutelist(keypair: FullKeypair, mprev: NostrEvent?, to_add: Set<MuteItem>) -> NostrEvent? { 11 let muted_items: Set<MuteItem> = (mprev?.mute_list ?? Set<MuteItem>()).union(to_add).filter { !$0.is_expired() } 12 let tags: [[String]] = muted_items.map { $0.tag } 13 return NostrEvent(content: mprev?.content ?? "", keypair: keypair.to_keypair(), kind: NostrKind.mute_list.rawValue, tags: tags) 14 } 15 16 func create_or_update_mutelist(keypair: FullKeypair, mprev: NostrEvent?, to_add: MuteItem) -> NostrEvent? { 17 return create_or_update_mutelist(keypair: keypair, mprev: mprev, to_add: [to_add]) 18 } 19 20 func remove_from_mutelist(keypair: FullKeypair, prev: NostrEvent?, to_remove: MuteItem) -> NostrEvent? { 21 let muted_items: Set<MuteItem> = (prev?.mute_list ?? Set<MuteItem>()).subtracting([to_remove]).filter { !$0.is_expired() } 22 let tags: [[String]] = muted_items.map { $0.tag } 23 return NostrEvent(content: "", keypair: keypair.to_keypair(), kind: NostrKind.mute_list.rawValue, tags: tags) 24 } 25 26 func toggle_from_mutelist(keypair: FullKeypair, prev: NostrEvent?, to_toggle: MuteItem) -> NostrEvent? { 27 let existing_muted_items: Set<MuteItem> = (prev?.mute_list ?? Set<MuteItem>()) 28 29 if existing_muted_items.contains(to_toggle) { 30 // Already exists, remove 31 return remove_from_mutelist(keypair: keypair, prev: prev, to_remove: to_toggle) 32 } else { 33 // Doesn't exist, add 34 return create_or_update_mutelist(keypair: keypair, mprev: prev, to_add: to_toggle) 35 } 36 }