damus

nostr ios client
git clone git://jb55.com/damus
Log | Files | Refs | README | LICENSE

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 }