Skip to content

Commit a59acec

Browse files
Merge pull request #14 from QuickBlox/release/0.3.1
0.3.1
2 parents 8e2dc71 + 6070467 commit a59acec

File tree

78 files changed

+1385
-1570
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+1385
-1570
lines changed

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ let package = Package(
77
name: "QuickBloxUIKit",
88
defaultLocalization: "en",
99
platforms: [
10-
.iOS(.v15)
10+
.iOS(.v16)
1111
],
1212
products: [
1313
// Products define the executables and libraries a package produces, and make them visible to other packages.

Sources/QuickBloxData/DTO/Dialog/RemoteDialogDTO.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public struct RemoteDialogDTO: Equatable {
1717
var participantsIds: [String] = []
1818
var toDeleteIds: [String] = []
1919
var toAddIds: [String] = []
20-
var photo = ""
20+
var photo = "null"
2121
var ownerId = ""
2222
var isOwnedByCurrentUser = false
2323

Sources/QuickBloxData/Event/RemoteEvent.swift

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,36 +9,33 @@
99

1010
public enum RemoteEvent {
1111
case create(_ dialogId: String, byUser: Bool, message: RemoteMessageDTO)
12-
case update(_ dialogId: String)
13-
case leave(_ dialogId: String, byUser: Bool)
14-
case removed(_ dialogId: String, byUser: Bool)
12+
case update(_ message: RemoteMessageDTO)
13+
case leave(_ dialogId: String)
14+
case userLeave(_ message: RemoteMessageDTO)
15+
case removed(_ dialogId: String)
1516
case newMessage(_ message: RemoteMessageDTO)
16-
case history(_ messages: RemoteMessagesDTO)
1717
case read( _ messageID: String, dialogID: String)
1818
case delivered( _ messageID: String, dialogID: String)
1919
case typing( _ userID: UInt, dialogID: String)
2020
case stopTyping( _ userID: UInt, dialogID: String)
21-
21+
}
22+
23+
extension RemoteEvent {
2224
init(_ message: RemoteMessageDTO) {
23-
if message.type == .event {
25+
if message.type == .event || message.type == .system {
2426
switch message.eventType {
2527
case .create:
2628
self = .create(message.dialogId, byUser: message.isOwnedByCurrentUser, message: message)
2729
case .update:
28-
self = .update(message.dialogId)
30+
self = .update(message)
2931
case .leave:
30-
if message.saveToHistory == true {
31-
self = .newMessage(message)
32-
self = .update(message.dialogId)
33-
} else {
34-
self = .leave(message.dialogId, byUser: message.isOwnedByCurrentUser)
35-
}
36-
case .removed:
3732
if message.isOwnedByCurrentUser {
38-
self = .update(message.dialogId)
33+
self = .leave(message.dialogId)
3934
} else {
40-
self = .removed(message.dialogId, byUser: message.isOwnedByCurrentUser)
35+
self = .userLeave(message)
4136
}
37+
case .removed:
38+
self = .removed(message.dialogId)
4239
case .message:
4340
self = .newMessage(message)
4441
case .read:

Sources/QuickBloxData/Repository/ConnectionRepository.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ public class ConnectionRepository {
2020
}
2121

2222
extension ConnectionRepository: ConnectionRepositoryProtocol {
23-
public func checkConnection() async throws {
23+
public func checkConnection() async throws -> ConnectionState {
2424
do {
25-
try await remote.checkConnection()
25+
return try await remote.checkConnection()
2626
} catch {
2727
throw try error.repositoryException
2828
}

Sources/QuickBloxData/Repository/DialogsRepository.swift

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,15 @@ extension DialogsRepository: DialogsRepositoryProtocol {
3030
.compactMap { event in
3131
switch event {
3232
case .create(let dialogId, let isCurrent, let message): return .create(dialogId, byUser: isCurrent, message: Message(message))
33-
case .update(withDialogId: let dialogId): return .update(dialogId)
34-
case .leave( let dialogId, let isCurrentUser):
35-
return .leave(dialogId, byUser: isCurrentUser)
36-
case .removed(let dialogId, let isCurrentUser):
37-
return .removed(dialogId, byUser: isCurrentUser)
33+
case .update(let message): return .update(Message(message))
34+
case .leave( let dialogId):
35+
return .leave(dialogId)
36+
case .userLeave(let message):
37+
return .userLeave(Message(message))
38+
case .removed(let dialogId):
39+
return .removed(dialogId)
3840
case .newMessage(let message):
3941
return .newMessage(Message(message))
40-
case .history(let dto):
41-
return .history(dto.dialogId,
42-
dto.messages.map { Message($0) })
43-
4442
case .read(let messageID, let dialogID):
4543
return .read(messageID, dialogID: dialogID)
4644
case .delivered(let messageID, let dialogID):

Sources/QuickBloxData/Source/Local/LocalDataSource.swift

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,11 @@ extension LocalDataSource {
109109
if dto.messages.isEmpty == false {
110110
for new in dto.messages {
111111
isUpdated = true
112-
dialog.messages.insertElement(new, withSorting: .orderedAscending)
112+
if let index = dialog.messages.firstIndex(where: { $0.id == new.id }) {
113+
dialog.messages[index] = new
114+
} else {
115+
dialog.messages.insertElement(new, withSorting: .orderedAscending)
116+
}
113117
}
114118
}
115119

@@ -146,11 +150,10 @@ extension LocalDataSource {
146150
value.remove(at: index)
147151
value.insert(dialog, at: 0)
148152
dialogs.value = value
153+
updatedDialog.value = dto.id
149154
} else {
150155
dialogs.value[index] = dialog
151156
}
152-
153-
updatedDialog.value = dto.id
154157
}
155158

156159
func getAllDialogs() async throws -> LocalDialogsDTO {

0 commit comments

Comments
 (0)