Skip to content

Commit 8ec7401

Browse files
fix: fix issue with block user (#23)
Co-authored-by: Gbogboade Ayomide <[email protected]>
1 parent f651404 commit 8ec7401

File tree

2 files changed

+77
-18
lines changed

2 files changed

+77
-18
lines changed

Diff for: Sources/User/UpdateProfile.swift

+31-18
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@ extension PushUser {
5353
let verificationProof = "\(sigType):\(signature)"
5454

5555
let payload = UpdateUserPayload(
56-
name: newProfile.name, desc: newProfile.desc, picture: newProfile.picture,
56+
name: newProfile.name,
57+
desc: newProfile.desc,
58+
picture: newProfile.picture,
5759
blockedUsersList: newProfile.blockedUsersList,
5860
verificationProof: verificationProof)
5961

@@ -84,41 +86,52 @@ extension PushUser {
8486

8587
struct UpdateUserPayload: Codable {
8688
var name: String?
87-
var desc: String
88-
var picture: String
89+
var desc: String?
90+
var picture: String?
8991
var blockedUsersList: [String]
9092
var verificationProof: String
93+
94+
private enum CodingKeys: String, CodingKey {
95+
case name, desc, picture, blockedUsersList, verificationProof
96+
}
97+
98+
99+
func encode(to encoder: Encoder) throws{
100+
var container = encoder.container(keyedBy: CodingKeys.self)
101+
102+
try container.encode(name, forKey: .name)
103+
try container.encode(desc, forKey: .desc)
104+
try container.encode(picture, forKey: .picture)
105+
try container.encode(blockedUsersList, forKey: .blockedUsersList)
106+
try container.encode(verificationProof, forKey: .verificationProof)
107+
}
91108
}
92109

93110
struct UpdateUseProfile: Codable {
94111
public var name: String?
95-
public var desc: String
96-
public var picture: String
112+
public var desc: String?
113+
public var picture: String?
97114
public var blockedUsersList: [String]
98115
}
99116

100117
func getUpdateProfileHash(newProfile: PushUser.UserProfile) throws -> (
101118
UpdateUseProfile, String
102119
) {
120+
let newUserProfile = UpdateUseProfile(
121+
name: newProfile.name,
122+
desc: newProfile.desc,
123+
picture: newProfile.picture,
124+
blockedUsersList: newProfile.blockedUsersList!)
103125

104-
let _name = newProfile.name == nil ? "" : newProfile.name!
105-
let _desc = newProfile.desc == nil ? "" : newProfile.desc!
106-
107-
let name = newProfile.name == nil ? "null" : "\"\(_name)\""
108-
let desc = newProfile.desc == nil ? "null" : "\"\(_desc)\""
126+
let name = newProfile.name == nil ? "null" : "\"\(newProfile.name!)\""
127+
let desc = newProfile.desc == nil ? "null" : "\"\(newProfile.desc!)\""
109128
let picture = "\"\(newProfile.picture)\""
110-
let blockedUsersList = newProfile.blockedUsersList!
129+
111130

112131
let blockUserAddresses = flatten_address_list(addresses: newProfile.blockedUsersList!)
113132
let jsonString =
114133
"{\"name\":\(name),\"desc\":\(desc),\"picture\":\(picture),\"blockedUsersList\":\(blockUserAddresses)}"
115-
116-
let newUserProfile = UpdateUseProfile(
117-
name: name.replacingOccurrences(of: "\"", with: ""),
118-
desc: desc.replacingOccurrences(of: "\"", with: ""),
119-
picture: picture.replacingOccurrences(of: "\"", with: ""),
120-
blockedUsersList: blockedUsersList)
121-
let hash = generateSHA256Hash(msg: jsonString)
134+
let hash = generateSHA256Hash(msg: jsonString)
122135

123136
return (newUserProfile, hash)
124137
}

Diff for: Tests/User/UpdateUserTests.swift

+46
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,52 @@ class UpdateUserTests: XCTestCase {
4141
env: .STAGING)
4242
}
4343

44+
func testGenerateHash() async throws {
45+
46+
let name = "null"
47+
let desc = "null"
48+
let picture = "\"name\""
49+
50+
let blockUserAddresses = flatten_address_list(addresses: [])
51+
let jsonString =
52+
"{\"name\":\(name),\"desc\":\(desc),\"picture\":\(picture),\"blockedUsersList\":\(blockUserAddresses)}"
53+
54+
55+
let hash = generateSHA256Hash(msg: jsonString)
56+
print(hash)
57+
}
58+
59+
func testUserBlockForNewUser() async throws {
60+
let userPk1 = getRandomAccount()
61+
62+
let signer1 = try SignerPrivateKey(privateKey: userPk1)
63+
64+
let user1 = try await PushUser.create(
65+
options: PushUser.CreateUserOptions(
66+
env: ENV.DEV,
67+
signer: SignerPrivateKey(
68+
privateKey: userPk1
69+
),
70+
progressHook: nil
71+
))
72+
73+
74+
let user1PpgpPk = try await PushUser.DecryptPGPKey(
75+
encryptedPrivateKey: user1.encryptedPrivateKey, signer: signer1)
76+
77+
78+
let (a1, a2, a3) = (
79+
generateRandomEthereumAddress(), generateRandomEthereumAddress(),
80+
generateRandomEthereumAddress()
81+
)
82+
83+
let usersToBlock = [a1, a2, a3]
84+
85+
try await PushUser.blockUsers(
86+
addressesToBlock: usersToBlock, account: user1.did, pgpPrivateKey: user1PpgpPk,
87+
env: .DEV)
88+
}
89+
4490
func testUserUnBlock() async throws {
4591
let (a1, a2, a3) = (
4692
generateRandomEthereumAddress(), generateRandomEthereumAddress(),

0 commit comments

Comments
 (0)