mute: migrate Lists.swift to use new MuteItem
This patch depends on: Adding new structs/enums for new mute list
- Rewrites Lists.swift to use new mute list option
- This leads to a lot of changes for changing the type from RefId to the new MuteItem
- Update & relay new mute list in AddMuteItemView.swift (fixing previous patch TODO)
- Renames `list` to `list_deprecated`
- We need to keep this since existing users might have an old mute list
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:
committed by
William Casarin
parent
6d2c382469
commit
f36646116e
@@ -23,15 +23,13 @@ final class ListTests: XCTestCase {
|
||||
let pubkey = test_keypair_full.pubkey
|
||||
let to_mute = test_pubkey
|
||||
let keypair = FullKeypair(pubkey: pubkey, privkey: privkey)
|
||||
let mutelist = create_or_update_mutelist(keypair: keypair, mprev: nil, to_add: .pubkey(to_mute))!
|
||||
let mutelist = create_or_update_mutelist(keypair: keypair, mprev: nil, to_add: .user(to_mute, nil))!
|
||||
|
||||
XCTAssertEqual(mutelist.pubkey, pubkey)
|
||||
XCTAssertEqual(mutelist.content, "")
|
||||
XCTAssertEqual(mutelist.tags.count, 2)
|
||||
XCTAssertEqual(mutelist.tags[0][0].string(), "d")
|
||||
XCTAssertEqual(mutelist.tags[0][1].string(), "mute")
|
||||
XCTAssertEqual(mutelist.tags[1][0].string(), "p")
|
||||
XCTAssertEqual(mutelist.tags[1][1].string(), to_mute.hex())
|
||||
XCTAssertEqual(mutelist.tags.count, 1)
|
||||
XCTAssertEqual(mutelist.tags[0][0].string(), "p")
|
||||
XCTAssertEqual(mutelist.tags[0][1].string(), to_mute.hex())
|
||||
}
|
||||
|
||||
func testCreateAndRemoveMuteList() throws {
|
||||
@@ -39,14 +37,12 @@ final class ListTests: XCTestCase {
|
||||
let pubkey = test_keypair_full.pubkey
|
||||
let to_mute = test_pubkey
|
||||
let keypair = FullKeypair(pubkey: pubkey, privkey: privkey)
|
||||
let mutelist = create_or_update_mutelist(keypair: keypair, mprev: nil, to_add: .pubkey(to_mute))!
|
||||
let new = remove_from_mutelist(keypair: keypair, prev: mutelist, to_remove: .pubkey(to_mute))!
|
||||
let mutelist = create_or_update_mutelist(keypair: keypair, mprev: nil, to_add: .user(to_mute, nil))!
|
||||
let new = remove_from_mutelist(keypair: keypair, prev: mutelist, to_remove: .user(to_mute, nil))!
|
||||
|
||||
XCTAssertEqual(new.pubkey, pubkey)
|
||||
XCTAssertEqual(new.content, "")
|
||||
XCTAssertEqual(new.tags.count, 1)
|
||||
XCTAssertEqual(new.tags[0][0].string(), "d")
|
||||
XCTAssertEqual(new.tags[0][1].string(), "mute")
|
||||
XCTAssertEqual(new.tags.count, 0)
|
||||
}
|
||||
|
||||
func testAddToExistingMutelist() throws {
|
||||
@@ -55,17 +51,25 @@ final class ListTests: XCTestCase {
|
||||
let to_mute = test_pubkey
|
||||
let to_mute_2 = test_pubkey_2
|
||||
let keypair = FullKeypair(pubkey: pubkey, privkey: privkey)
|
||||
let mutelist = create_or_update_mutelist(keypair: keypair, mprev: nil, to_add: .pubkey(to_mute))!
|
||||
let new = create_or_update_mutelist(keypair: keypair, mprev: mutelist, to_add: .pubkey(to_mute_2))!
|
||||
let mutelist = create_or_update_mutelist(keypair: keypair, mprev: nil, to_add: .user(to_mute, nil))!
|
||||
let new = create_or_update_mutelist(keypair: keypair, mprev: mutelist, to_add: .user(to_mute_2, nil))!
|
||||
|
||||
XCTAssertEqual(new.pubkey, pubkey)
|
||||
XCTAssertEqual(new.content, "")
|
||||
XCTAssertEqual(new.tags.count, 3)
|
||||
XCTAssertEqual(new.tags[0][0].string(), "d")
|
||||
XCTAssertEqual(new.tags[0][1].string(), "mute")
|
||||
XCTAssertEqual(new.tags.count, 2)
|
||||
XCTAssertEqual(new.tags[0][0].string(), "p")
|
||||
XCTAssertEqual(new.tags[1][0].string(), "p")
|
||||
XCTAssertEqual(new.tags[1][1].string(), to_mute.hex())
|
||||
XCTAssertEqual(new.tags[2][0].string(), "p")
|
||||
XCTAssertEqual(new.tags[2][1].string(), to_mute_2.hex())
|
||||
// This test failed once out of like 10 tries, due to the tags being in the incorrect order. So I decided to put the elements in an array and sort it. That way if the mutelist tags aren't in the expected order it won't fail the test.
|
||||
XCTAssertEqual([new.tags[0][1].string(), new.tags[1][1].string()].sorted(), [to_mute.hex(), to_mute_2.hex()].sorted())
|
||||
}
|
||||
|
||||
func testAddToExistingMutelistShouldNotOverrideContent() throws {
|
||||
let privkey = test_keypair_full.privkey
|
||||
let pubkey = test_keypair_full.pubkey
|
||||
let keypair = FullKeypair(pubkey: pubkey, privkey: privkey)
|
||||
let mutelist = NostrEvent(content: "random", keypair: keypair.to_keypair(), kind: NostrKind.mute_list.rawValue, tags: [])
|
||||
let new = create_or_update_mutelist(keypair: keypair, mprev: mutelist, to_add: .user(test_pubkey, nil))!
|
||||
|
||||
XCTAssertEqual(new.content, "random")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user