Skip to content

Commit 1e6eb9f

Browse files
authored
Merge pull request #416 from zapcannon87/master
fix: fetch all member info
2 parents 8465094 + 541b69e commit 1e6eb9f

File tree

2 files changed

+45
-24
lines changed

2 files changed

+45
-24
lines changed

LeanCloudTests/IMConversationTestCase.swift

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1831,6 +1831,8 @@ class IMConversationTestCase: RTMBaseTestCase {
18311831
})
18321832
}
18331833

1834+
delay()
1835+
18341836
expecting { (exp) in
18351837
let convB = clientB.convCollection.values.first
18361838
XCTAssertNil(convB?.memberInfoTable)
@@ -1842,6 +1844,17 @@ class IMConversationTestCase: RTMBaseTestCase {
18421844
})
18431845
}
18441846

1847+
expecting { (exp) in
1848+
convA?.fetchMemberInfoTable(completion: { (result) in
1849+
XCTAssertTrue(Thread.isMainThread)
1850+
XCTAssertTrue(result.isSuccess)
1851+
XCTAssertNil(result.error)
1852+
XCTAssertNotNil(convA?.memberInfoTable)
1853+
XCTAssertEqual(convA?.memberInfoTable?.count, 1)
1854+
exp.fulfill()
1855+
})
1856+
}
1857+
18451858
multiExpecting(expectations: { () -> [XCTestExpectation] in
18461859
let exp = self.expectation(description: "change member role to member")
18471860
exp.expectedFulfillmentCount = 2

Sources/RTM/IMConversation.swift

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1935,33 +1935,41 @@ extension IMConversation {
19351935
assert(client.specificAssertion)
19361936
switch result {
19371937
case .success(value: let token):
1938-
let header: [String: String] = [
1939-
"X-LC-IM-Session-Token": token,
1940-
]
1941-
let parameters: [String: Any] = [
1942-
"client_id": client.ID,
1943-
"cid": self.ID,
1944-
]
1945-
_ = client.application.httpClient.request(
1946-
.get, "classes/_ConversationMemberInfo",
1947-
parameters: parameters,
1948-
headers: header)
1949-
{ (response) in
1950-
if let error = LCError(response: response) {
1951-
completion(client, .failure(error: error))
1952-
} else if let results = response.results as? [[String: Any]] {
1953-
let creator = self.creator
1954-
var table: [String: MemberInfo] = [:]
1955-
for rawData in results {
1956-
if let info = MemberInfo(rawData: rawData, creator: creator) {
1957-
table[info.ID] = info
1938+
do {
1939+
guard let whereString = try ["cid": self.ID].jsonString() else {
1940+
completion(client, .failure(error: LCError(code: .malformedData)))
1941+
return
1942+
}
1943+
let header: [String: String] = [
1944+
"X-LC-IM-Session-Token": token,
1945+
]
1946+
let parameters: [String: Any] = [
1947+
"client_id": client.ID,
1948+
"where": whereString,
1949+
]
1950+
_ = client.application.httpClient.request(
1951+
.get, "classes/_ConversationMemberInfo",
1952+
parameters: parameters,
1953+
headers: header)
1954+
{ (response) in
1955+
if let error = LCError(response: response) {
1956+
completion(client, .failure(error: error))
1957+
} else if let results = response.results as? [[String: Any]] {
1958+
let creator = self.creator
1959+
var table: [String: MemberInfo] = [:]
1960+
for rawData in results {
1961+
if let info = MemberInfo(rawData: rawData, creator: creator) {
1962+
table[info.ID] = info
1963+
}
19581964
}
1965+
self.sync(self._memberInfoTable = table)
1966+
completion(client, .success)
1967+
} else {
1968+
completion(client, .failure(error: LCError(code: .malformedData)))
19591969
}
1960-
self.sync(self._memberInfoTable = table)
1961-
completion(client, .success)
1962-
} else {
1963-
completion(client, .failure(error: LCError(code: .malformedData)))
19641970
}
1971+
} catch {
1972+
completion(client, .failure(error: LCError(error: error)))
19651973
}
19661974
case .failure(error: let error):
19671975
completion(client, .failure(error: error))

0 commit comments

Comments
 (0)