mute: adding filtering support for MuteItem events

This patch depends on: Receiving New Mute List Type

- Changes NewMutesNotify, NewUnmutesNotify & MuteNotify to use MuteItem instead of Pubkey
- Changes is_muted in Contacts.swift to take in a MuteItem instead of a Pubkey
    - A lot of changes here were just modifying callers of that to accept the new parameter type

Related: https://github.com/damus-io/damus/issues/1718
Related: https://github.com/damus-io/damus/issues/856
Lighting Address: fishcharlie@strike.me

Signed-off-by: Charlie Fish <contact@charlie.fish>
Reviewed-by: William Casarin <jb55@jb55.com>
Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
Charlie Fish
2024-01-17 18:17:40 -07:00
committed by William Casarin
parent 07b3146026
commit 7aaea97de0
11 changed files with 43 additions and 49 deletions

View File

@@ -13,7 +13,7 @@ class Contacts {
private var friend_of_friends: Set<Pubkey> = Set()
/// Tracks which friends are friends of a given pubkey.
private var pubkey_to_our_friends = [Pubkey : Set<Pubkey>]()
private var muted: Set<Pubkey> = Set()
private var muted: Set<MuteItem> = Set()
let our_pubkey: Pubkey
var event: NostrEvent?
@@ -23,20 +23,20 @@ class Contacts {
self.our_pubkey = our_pubkey
}
func is_muted(_ pk: Pubkey) -> Bool {
return muted.contains(pk)
func is_muted(_ item: MuteItem) -> Bool {
return muted.contains(item)
}
func set_mutelist(_ ev: NostrEvent) {
let oldlist = self.mutelist
self.mutelist = ev
let old = oldlist.map({ ev in Set(ev.referenced_pubkeys) }) ?? Set<Pubkey>()
let new = Set(ev.referenced_pubkeys)
let old: Set<MuteItem> = oldlist?.mute_list ?? Set<MuteItem>()
let new: Set<MuteItem> = ev.mute_list ?? Set<MuteItem>()
let diff = old.symmetricDifference(new)
var new_mutes = Set<Pubkey>()
var new_unmutes = Set<Pubkey>()
var new_mutes = Set<MuteItem>()
var new_unmutes = Set<MuteItem>()
for d in diff {
if new.contains(d) {
@@ -47,7 +47,7 @@ class Contacts {
}
// TODO: set local mutelist here
self.muted = Set(ev.referenced_pubkeys)
self.muted = ev.mute_list ?? Set<MuteItem>()
if new_mutes.count > 0 {
notify(.new_mutes(new_mutes))