Skip to content

Commit 8ca73f1

Browse files
authored
Merge pull request #12 from QuickBlox/rc-0.9.0
0.9.0
2 parents dd22d64 + 5f61cab commit 8ca73f1

36 files changed

+371
-72
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ Then need to add implementation of QuickBlox UIKit and QuickBlox SDK to dependen
7474

7575
```
7676
dependencies {
77-
implementation "com.quickblox:android-ui-kit:0.8.0"
77+
implementation "com.quickblox:android-ui-kit:0.9.0"
7878
7979
implementation 'com.quickblox:quickblox-android-sdk-messages:4.1.1'
8080
implementation 'com.quickblox:quickblox-android-sdk-chat:4.1.1'

ui-kit/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ ext {
1010
qbSdkVersion = '4.1.1'
1111

1212
uiKitVersionCode = 1
13-
uiKitVersionName = "0.8.0"
13+
uiKitVersionName = "0.9.0"
1414
}
1515

1616
android {

ui-kit/src/main/java/com/quickblox/android_ui_kit/QuickBloxUiKit.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ object QuickBloxUiKit {
6464
private var translateTemperature: Float = 0.5f
6565
private var translateLanguage: Languages = Languages.ENGLISH
6666

67+
private var regexUserName: String? = null
68+
6769
@Volatile
6870
private var dependency: Dependency? = null
6971

@@ -488,4 +490,12 @@ object QuickBloxUiKit {
488490
fun isEnabledReply(): Boolean {
489491
return enabledReply
490492
}
493+
494+
fun setRegexUserName(regex: String) {
495+
regexUserName = regex
496+
}
497+
498+
fun getRegexUserName(): String? {
499+
return regexUserName
500+
}
491501
}

ui-kit/src/main/java/com/quickblox/android_ui_kit/data/repository/mapper/MessageMapper.kt

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,8 @@ object MessageMapper {
123123
@VisibleForTesting
124124
fun isExistFileIn(dto: RemoteMessageDTO): Boolean {
125125
val isAvailableFileName = dto.fileName?.isNotEmpty() == true
126-
val isAvailableFileUrl = dto.fileUrl?.isNotEmpty() == true
127126
val isAvailableContentType = dto.mimeType?.isNotEmpty() == true
128-
return isAvailableFileName && isAvailableFileUrl && isAvailableContentType
127+
return isAvailableFileName && isAvailableContentType
129128
}
130129

131130
@VisibleForTesting
@@ -212,8 +211,7 @@ object MessageMapper {
212211
dto.senderId = entity.getSenderId()
213212

214213
val isMediaContentType = entity.getContentType() == ChatMessageEntity.ContentTypes.MEDIA
215-
val isAvailableFileUrl = entity.getMediaContent()?.getUrl()?.isNotEmpty() == true
216-
if (isMediaContentType && isAvailableFileUrl) {
214+
if (isMediaContentType ) {
217215
dto.fileName = entity.getMediaContent()?.getName()
218216
dto.mimeType = entity.getMediaContent()?.getMimeType()
219217
dto.fileUrl = entity.getMediaContent()?.getUrl()
@@ -232,11 +230,9 @@ object MessageMapper {
232230
dto.participantId = entity.getParticipantId()
233231

234232
val isMediaContentType = entity.getContentType() == ChatMessageEntity.ContentTypes.MEDIA
235-
val isAvailableFileUrl = entity.getMediaContent()?.getUrl()?.isNotEmpty() == true
236-
if (isMediaContentType && isAvailableFileUrl) {
233+
if (isMediaContentType) {
237234
dto.fileName = entity.getMediaContent()?.getName()
238235
dto.mimeType = entity.getMediaContent()?.getMimeType()
239-
dto.fileUrl = entity.getMediaContent()?.getUrl()
240236
}
241237

242238
if (entity.isForwardedOrReplied()) {

ui-kit/src/main/java/com/quickblox/android_ui_kit/data/source/local/LocalDataSourceImpl.kt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,18 @@ class LocalDataSourceImpl : LocalDataSource {
3434
private val dialogs = Collections.synchronizedSet(HashSet<LocalDialogDTO>())
3535

3636
override fun saveDialog(dto: LocalDialogDTO) {
37-
if (dialogs.contains(dto)) {
38-
throw exceptionFactory.makeAlreadyExist("Dialog already exist")
37+
val foundDto = dialogs.find {
38+
it.id == dto.id
3939
}
40+
41+
val lastMessageDateSentOfFoundDto = foundDto?.lastMessageDateSent ?: 0
42+
val lastMessageDateSentOfDto = dto.lastMessageDateSent ?: 0
43+
44+
val isDtoRelevantThanInCache = lastMessageDateSentOfDto > lastMessageDateSentOfFoundDto
45+
if (isDtoRelevantThanInCache) {
46+
dialogs.remove(foundDto)
47+
}
48+
4049
val isNotAdded = !dialogs.add(dto)
4150
if (isNotAdded) {
4251
throw exceptionFactory.makeUnexpected("Dialog not saved")

ui-kit/src/main/java/com/quickblox/android_ui_kit/data/source/remote/RemoteDataSourceImpl.kt

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,9 @@ open class RemoteDataSourceImpl : RemoteDataSource {
386386
val user = userId?.let {
387387
QBUsers.getUser(it).perform()
388388
}
389-
return RemoteUserDTOMapper.toDTOFrom(user)
389+
val userDTO = RemoteUserDTOMapper.toDTOFrom(user)
390+
userDTO.avatarUrl = loadUserAvatarUrl(userDTO.blobId)
391+
return userDTO
390392
} catch (exception: QBResponseException) {
391393
throw exceptionFactory.makeBy(exception.httpStatusCode, exception.message.toString())
392394
} catch (exception: MappingException) {
@@ -977,8 +979,7 @@ open class RemoteDataSourceImpl : RemoteDataSource {
977979
val userId = getLoggedUserId()
978980

979981
if (isSessionCreatedBySocialProvider()) {
980-
val user = loadUserById(userId)
981-
login = user?.login
982+
login = loadUserByIdAndGetLogin(userId)
982983
password = QBSessionManager.getInstance().token
983984
} else {
984985
login = QBSessionManager.getInstance().sessionParameters?.userLogin
@@ -1010,6 +1011,15 @@ open class RemoteDataSourceImpl : RemoteDataSource {
10101011
}
10111012
}
10121013

1014+
private fun loadUserByIdAndGetLogin(userId: Int?): String? {
1015+
try {
1016+
val user = loadUserById(userId)
1017+
return user?.login
1018+
} catch (exception: RuntimeException) {
1019+
throw exceptionFactory.makeIncorrectData(exception.message ?: "Error")
1020+
}
1021+
}
1022+
10131023
private fun isSessionCreatedBySocialProvider(): Boolean {
10141024
val socialProvider = QBSessionManager.getInstance().sessionParameters?.socialProvider
10151025

ui-kit/src/main/java/com/quickblox/android_ui_kit/data/source/remote/mapper/RemoteMessageDTOMapper.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -165,10 +165,8 @@ object RemoteMessageDTOMapper {
165165
}
166166

167167
private fun isAvailableAttachmentIn(dto: RemoteMessageDTO): Boolean {
168-
val availableContentType = dto.mimeType?.isNotEmpty() == true
169-
val availableUrl = dto.fileUrl?.isNotEmpty() == true
170-
// TODO: Need to add checking dto file name
171-
return availableContentType && availableUrl
168+
// TODO: Need to add checking dto file name
169+
return dto.mimeType?.isNotEmpty() == true
172170
}
173171

174172
fun qbSystemMessageFrom(dto: RemoteMessageDTO): QBChatMessage {

ui-kit/src/main/java/com/quickblox/android_ui_kit/data/source/remote/parser/ForwardReplyMessageParser.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,10 @@ object ForwardReplyMessageParser {
5050
private const val FORWARD_TYPE = "forward"
5151

5252
fun isForwardedOrRepliedIn(qbChatMessage: QBChatMessage): Boolean {
53-
return qbChatMessage.getProperty(QB_MESSAGE_ACTION_KEY) != null
53+
val qbMessageActionKey = qbChatMessage.getProperty(QB_MESSAGE_ACTION_KEY)
54+
val isNotNull = qbMessageActionKey != null
55+
val isNotUndefined = qbMessageActionKey != "undefined"
56+
return isNotUndefined && isNotNull
5457
}
5558

5659
fun parseForwardRepliedTypeFrom(dto: RemoteMessageDTO): ForwardedRepliedMessageEntity.Types {

ui-kit/src/main/java/com/quickblox/android_ui_kit/domain/entity/implementation/message/EventMessageEntityImpl.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ open class EventMessageEntityImpl : EventMessageEntity {
7777
loggedUserId = id
7878
}
7979

80+
override fun getReadIds(): Collection<Int>? {
81+
return readIds
82+
}
83+
8084
override fun setReadIds(ids: Collection<Int>?) {
8185
readIds = ids
8286
}

ui-kit/src/main/java/com/quickblox/android_ui_kit/domain/entity/message/EventMessageEntity.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ interface EventMessageEntity : MessageEntity {
2323

2424
fun setLoggedUserId(id: Int?)
2525

26+
fun getReadIds(): Collection<Int>?
2627
fun setReadIds(ids: Collection<Int>?)
2728

2829
fun setDeliveredIds(ids: Collection<Int>?)

0 commit comments

Comments
 (0)