Skip to content

Commit dd22d64

Browse files
authored
Merge pull request #11 from QuickBlox/rc-0.8.0
0.8.0
2 parents baacdc4 + c2c7f64 commit dd22d64

File tree

6 files changed

+66
-13
lines changed

6 files changed

+66
-13
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.7.0"
77+
implementation "com.quickblox:android-ui-kit:0.8.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: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@ ext {
1010
qbSdkVersion = '4.1.1'
1111

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

1616
android {
17+
namespace = "com.quickblox.android_ui_kit"
18+
1719
compileSdk 33
1820

1921
defaultConfig {
@@ -46,6 +48,7 @@ android {
4648

4749
buildFeatures {
4850
viewBinding true
51+
buildConfig true
4952
}
5053

5154
compileOptions {

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

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ import com.quickblox.android_ui_kit.presentation.factory.DefaultScreenFactory
2121
import com.quickblox.android_ui_kit.presentation.factory.ScreenFactory
2222
import com.quickblox.android_ui_kit.presentation.theme.LightUIKitTheme
2323
import com.quickblox.android_ui_kit.presentation.theme.UiKitTheme
24-
import java.util.*
24+
import kotlinx.coroutines.CoroutineScope
25+
import kotlinx.coroutines.Dispatchers
26+
import kotlinx.coroutines.launch
27+
import java.util.Locale
2528

2629
@ExcludeFromCoverage
2730
object QuickBloxUiKit {
@@ -87,6 +90,17 @@ object QuickBloxUiKit {
8790
setupLanguageToAITranslate(defaultLanguage)
8891
}
8992

93+
fun release(errorCallback: (t: String) -> Unit = {}) {
94+
CoroutineScope(Dispatchers.Main).runCatching {
95+
launch {
96+
dependency?.getConnectionRepository()?.disconnect()
97+
dependency?.getDialogsRepository()?.clearAllDialogsInLocal()
98+
}
99+
}.onFailure {
100+
errorCallback.invoke(it.message ?: "Error release QuickBloxUiKit")
101+
}
102+
}
103+
90104
private fun getDefaultLanguage(): Languages {
91105
val systemLanguageName = getSystemLanguageName()
92106
var defaultLanguage: Languages

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

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import com.quickblox.android_ui_kit.data.source.remote.mapper.RemotePaginationDT
2828
import com.quickblox.android_ui_kit.data.source.remote.mapper.RemoteUserDTOMapper
2929
import com.quickblox.android_ui_kit.data.source.remote.parser.EventMessageParser
3030
import com.quickblox.android_ui_kit.domain.exception.repository.MappingException
31+
import com.quickblox.auth.model.QBProvider
3132
import com.quickblox.auth.session.QBSessionManager
3233
import com.quickblox.auth.session.Query
3334
import com.quickblox.chat.JIDHelper
@@ -353,14 +354,14 @@ open class RemoteDataSourceImpl : RemoteDataSource {
353354

354355
@VisibleForTesting
355356
open fun getLoggedUserIdOrThrowException(): Int {
356-
val loggedUserId = getLoggedUserIdFromSession()
357+
val loggedUserId = getLoggedUserIdFromSessionOrChat()
357358
if (loggedUserId == null) {
358359
throw RuntimeException("The logged userId is null")
359360
}
360361
return loggedUserId
361362
}
362363

363-
private fun getLoggedUserIdFromSession(): Int? {
364+
private fun getLoggedUserIdFromSessionOrChat(): Int? {
364365
val userIdFromSession = QBSessionManager.getInstance().activeSession?.userId ?: 0
365366
if (userIdFromSession > 0) {
366367
return userIdFromSession
@@ -370,6 +371,12 @@ open class RemoteDataSourceImpl : RemoteDataSource {
370371
if (userIdFromSessionParameters > 0) {
371372
return userIdFromSessionParameters
372373
}
374+
375+
val userIdFromChatService = QBChatService.getInstance().user?.id ?: 0
376+
if (userIdFromChatService > 0) {
377+
return userIdFromChatService
378+
}
379+
373380
return null
374381
}
375382

@@ -601,7 +608,7 @@ open class RemoteDataSourceImpl : RemoteDataSource {
601608
blobId?.let { id ->
602609
try {
603610
val file = QBContent.getFile(id).perform()
604-
return file.publicUrl
611+
return file.privateUrl
605612
} catch (exception: QBResponseException) {
606613
Log.e(TAG, exception.message.toString())
607614
}
@@ -965,10 +972,19 @@ open class RemoteDataSourceImpl : RemoteDataSource {
965972
throw exceptionFactory.makeUnexpected("You have already logged to chat")
966973
}
967974

968-
val login = QBSessionManager.getInstance().sessionParameters?.userLogin
969-
val password = QBSessionManager.getInstance().sessionParameters?.userPassword
975+
val login: String?
976+
val password: String?
970977
val userId = getLoggedUserId()
971978

979+
if (isSessionCreatedBySocialProvider()) {
980+
val user = loadUserById(userId)
981+
login = user?.login
982+
password = QBSessionManager.getInstance().token
983+
} else {
984+
login = QBSessionManager.getInstance().sessionParameters?.userLogin
985+
password = QBSessionManager.getInstance().sessionParameters?.userPassword
986+
}
987+
972988
val isNotValidLogin = login.isNullOrEmpty()
973989
val isNotValidPassword = password.isNullOrEmpty()
974990
val isNotValidUserId = userId < 0
@@ -994,6 +1010,16 @@ open class RemoteDataSourceImpl : RemoteDataSource {
9941010
}
9951011
}
9961012

1013+
private fun isSessionCreatedBySocialProvider(): Boolean {
1014+
val socialProvider = QBSessionManager.getInstance().sessionParameters?.socialProvider
1015+
1016+
val isFacebookProvider = socialProvider == QBProvider.FACEBOOK
1017+
val isFirebaseProvider = socialProvider == QBProvider.FIREBASE_PHONE
1018+
val isTwitterProvider = socialProvider == QBProvider.TWITTER
1019+
1020+
return isFacebookProvider || isFirebaseProvider || isTwitterProvider
1021+
}
1022+
9971023
private fun removeMessageListeners() {
9981024
QBChatService.getInstance().messageStatusesManager?.removeMessageStatusListener(statusMessageListener)
9991025
QBChatService.getInstance().incomingMessagesManager?.removeDialogMessageListrener(chatMessageListener)

ui-kit/src/main/java/com/quickblox/android_ui_kit/domain/usecases/ConnectionUseCase.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import kotlinx.coroutines.Dispatchers
1616
import kotlinx.coroutines.cancel
1717
import kotlinx.coroutines.launch
1818

19-
class ConnectionUseCase : BaseUseCase<Unit>() {
19+
class ConnectionUseCase(private val errorCallback: () -> Unit = {}) : BaseUseCase<Unit>() {
2020
private val TAG = ConnectionUseCase::javaClass.name
2121
private var connectionRepository = QuickBloxUiKit.getDependency().getConnectionRepository()
2222

@@ -28,7 +28,7 @@ class ConnectionUseCase : BaseUseCase<Unit>() {
2828
}
2929

3030
scope.launch {
31-
connect()
31+
connect(errorCallback)
3232
}
3333
}
3434

ui-kit/src/main/java/com/quickblox/android_ui_kit/presentation/dialogs/PositiveNegativeDialog.kt

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ class PositiveNegativeDialog private constructor(
2222
private val negativeText: String,
2323
private val themeDialog: UiKitTheme?,
2424
private val positiveListener: (() -> Unit)? = null,
25-
private val negativeListener: (() -> Unit)? = null
25+
private val negativeListener: (() -> Unit)? = null,
26+
private val canceledOnTouchOutside: Boolean = true,
2627
) : Dialog(context, R.style.RoundedCornersDialog) {
2728
companion object {
2829
fun show(
@@ -32,10 +33,18 @@ class PositiveNegativeDialog private constructor(
3233
negativeText: String,
3334
themeDialog: UiKitTheme?,
3435
positiveListener: (() -> Unit)? = null,
35-
negativeListener: (() -> Unit)? = null
36+
negativeListener: (() -> Unit)? = null,
37+
canceledOnTouchOutside: Boolean = true,
3638
) {
3739
PositiveNegativeDialog(
38-
context, text, positiveText, negativeText, themeDialog, positiveListener, negativeListener
40+
context,
41+
text,
42+
positiveText,
43+
negativeText,
44+
themeDialog,
45+
positiveListener,
46+
negativeListener,
47+
canceledOnTouchOutside
3948
).show()
4049
}
4150
}
@@ -57,6 +66,7 @@ class PositiveNegativeDialog private constructor(
5766
binding.tvNegative.text = negativeText
5867

5968
setClickListeners(binding)
69+
setCanceledOnTouchOutside(canceledOnTouchOutside)
6070
}
6171

6272
private fun applyParams() {

0 commit comments

Comments
 (0)