Skip to content

Commit 6737fde

Browse files
Update uikit changelog for v3.22.0
1 parent 7c7849f commit 6737fde

File tree

56 files changed

+756
-2303
lines changed

Some content is hidden

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

56 files changed

+756
-2303
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
# Changelog
2+
### v3.22.0 (Dec 16, 2024) with Chat SDK `v4.21.1`
3+
* Templated-related code has been moved to a separate module.
24
### v3.21.1 (Nov 12, 2024) with Chat SDK `v4.20.0`
35
* Fixed thumbs up reaction not working in chat messages.
46
### v3.21.0 (Sep 12, 2024) with Chat SDK `v4.19.0`

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,5 @@ android.nonTransitiveRClass=false
2222
android.nonFinalResIds=false
2323
android.enableR8.fullMode=false
2424

25-
UIKIT_VERSION = 3.21.1
25+
UIKIT_VERSION = 3.22.0
2626
UIKIT_VERSION_CODE = 1

settings.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@ dependencyResolutionManagement {
1616
}
1717

1818
include ':uikit'
19-
rootProject.name='sendbird-uikit-android-sources'
2019
include ':uikit-samples'
20+
rootProject.name='sendbird-uikit-android-sources'
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading

uikit/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ dependencies {
7070
implementation fileTree(dir: 'libs', include: ['*.jar'])
7171

7272
// Sendbird
73-
api 'com.sendbird.sdk:sendbird-chat:4.20.0'
73+
api 'com.sendbird.sdk:sendbird-chat:4.21.1'
74+
implementation "com.sendbird.sdk:message-template:1.0.0"
7475

7576
implementation 'com.github.bumptech.glide:glide:4.16.0'
7677
annotationProcessor 'com.github.bumptech.glide:compiler:4.16.0'

uikit/internal.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ dependencies {
3434
androidTestImplementation "androidx.arch.core:core-testing:2.2.0"
3535
androidTestImplementation 'io.kotest:kotest-assertions-core:5.3.0'
3636

37+
testImplementation 'com.google.code.gson:gson:2.9.0'
3738
testImplementation 'junit:junit:4.13.2'
3839
testImplementation 'org.robolectric:robolectric:4.10'
3940
testImplementation 'androidx.test:core:1.5.0'

uikit/src/main/java/com/sendbird/uikit/fragments/ChatNotificationChannelFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ public Builder withArguments(@NonNull Bundle args) {
366366

367367
/**
368368
* Sets the click listener on the message template view clicked.
369-
* Sets the click listener when the view component that has {@link com.sendbird.uikit.model.Action} is clicked
369+
* Sets the click listener when the view component that has {@link Action} is clicked
370370
*
371371
* @param handler The callback that will run.
372372
* @return This Builder object to allow for chaining of calls to set methods.

uikit/src/main/java/com/sendbird/uikit/fragments/FeedNotificationChannelFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,7 @@ public Builder withArguments(@NonNull Bundle args) {
396396

397397
/**
398398
* Sets the click listener on the message template view clicked.
399-
* Sets the click listener when the view component that has {@link com.sendbird.uikit.model.Action} is clicked
399+
* Sets the click listener when the view component that has {@link Action} is clicked
400400
*
401401
* @param handler The callback that will run.
402402
* @return This Builder object to allow for chaining of calls to set methods.

uikit/src/main/java/com/sendbird/uikit/internal/adapter/CarouselChildViewAdapter.kt

Lines changed: 0 additions & 88 deletions
This file was deleted.

uikit/src/main/java/com/sendbird/uikit/internal/extensions/MessageExtensions.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ import com.sendbird.android.message.Emoji
88
import com.sendbird.android.message.FileMessage
99
import com.sendbird.android.message.MessageFormItem
1010
import com.sendbird.android.message.MultipleFilesMessage
11-
import com.sendbird.android.shadow.com.google.gson.JsonParser
1211
import com.sendbird.uikit.R
1312
import com.sendbird.uikit.activities.adapter.MessageFormViewType
1413
import com.sendbird.uikit.consts.StringSet
1514
import com.sendbird.uikit.internal.singleton.MessageDisplayDataManager
16-
import com.sendbird.uikit.model.MessageList
1715
import com.sendbird.uikit.log.Logger
1816
import com.sendbird.uikit.model.EmojiManager
17+
import com.sendbird.uikit.model.MessageList
1918
import com.sendbird.uikit.model.UserMessageDisplayData
2019
import com.sendbird.uikit.utils.MessageUtils
20+
import org.json.JSONObject
2121

2222
internal fun BaseMessage.hasParentMessage() = parentMessageId != 0L
2323

@@ -165,7 +165,7 @@ internal val BaseMessage.isStreamMessage: Boolean
165165
return false
166166
}
167167
return try {
168-
JsonParser.parseString(data).asJsonObject[StringSet.stream].asBoolean
168+
JSONObject(data).getBoolean(StringSet.stream)
169169
} catch (e: Exception) {
170170
false
171171
}

uikit/src/main/java/com/sendbird/uikit/internal/extensions/MessageTemplateExtensions.kt

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,17 @@ package com.sendbird.uikit.internal.extensions
22

33
import com.sendbird.android.annotation.AIChatBotExperimental
44
import com.sendbird.android.channel.TemplateMessageData
5+
import com.sendbird.android.exception.SendbirdException
56
import com.sendbird.android.message.BaseMessage
7+
import com.sendbird.message.template.consts.MessageTemplateError
8+
import com.sendbird.message.template.consts.TemplateTheme
9+
import com.sendbird.message.template.model.TemplateParams
10+
import com.sendbird.uikit.SendbirdUIKit
11+
import com.sendbird.uikit.SendbirdUIKit.ThemeMode
612
import com.sendbird.uikit.consts.StringSet
7-
import com.sendbird.uikit.internal.model.template_messages.Params
13+
import com.sendbird.uikit.internal.model.notifications.NotificationThemeMode
814
import com.sendbird.uikit.internal.model.templates.MessageTemplateStatus
915
import com.sendbird.uikit.internal.singleton.MessageTemplateManager
10-
import com.sendbird.uikit.internal.singleton.MessageTemplateParser
1116

1217
internal fun BaseMessage.isTemplateMessage(): Boolean {
1318
return this.templateMessageData != null
@@ -25,22 +30,16 @@ internal fun TemplateMessageData?.isValid(): Boolean {
2530
internal fun BaseMessage.saveParamsFromTemplate() {
2631
val templateMessageData = this.templateMessageData ?: return
2732
val key = templateMessageData.key
28-
val template = MessageTemplateManager.getTemplate(key)
29-
if (template != null) {
30-
val syntax = template.getTemplateSyntax(
31-
templateMessageData.variables,
32-
templateMessageData.viewVariables
33-
)
3433

35-
try {
36-
val params = MessageTemplateParser.parse(syntax)
37-
this.messageTemplateStatus = MessageTemplateStatus.CACHED
38-
this.messageTemplateParams = params
39-
} catch (e: Exception) {
40-
this.messageTemplateStatus = MessageTemplateStatus.FAILED_TO_PARSE
34+
try {
35+
val params = MessageTemplateManager.parseTemplate(key, templateMessageData.variables, templateMessageData.viewVariables)
36+
this.messageTemplateStatus = MessageTemplateStatus.CACHED
37+
this.messageTemplateParams = params
38+
} catch (e: SendbirdException) {
39+
when (e.code) {
40+
MessageTemplateError.ERROR_TEMPLATE_NOT_EXIST -> this.messageTemplateStatus = MessageTemplateStatus.FAILED_TO_FETCH
41+
MessageTemplateError.ERROR_TEMPLATE_PARSE_FAILED -> this.messageTemplateStatus = MessageTemplateStatus.FAILED_TO_PARSE
4142
}
42-
} else {
43-
this.messageTemplateStatus = MessageTemplateStatus.FAILED_TO_FETCH
4443
}
4544
}
4645

@@ -67,8 +66,8 @@ internal var BaseMessage.messageTemplateStatus: MessageTemplateStatus?
6766
}
6867

6968
@OptIn(AIChatBotExperimental::class)
70-
internal var BaseMessage.messageTemplateParams: Params?
71-
get() = extras[StringSet.message_template_params] as? Params
69+
internal var BaseMessage.messageTemplateParams: TemplateParams?
70+
get() = extras[StringSet.message_template_params] as? TemplateParams
7271
set(value) {
7372
if (value == null) {
7473
extras.remove(StringSet.message_template_params)
@@ -77,6 +76,21 @@ internal var BaseMessage.messageTemplateParams: Params?
7776
}
7877
}
7978

79+
internal fun ThemeMode.toTemplateTheme(): TemplateTheme {
80+
return when (this) {
81+
ThemeMode.Light -> TemplateTheme.Light
82+
ThemeMode.Dark -> TemplateTheme.Dark
83+
}
84+
}
85+
86+
internal fun NotificationThemeMode.toTemplateTheme(): TemplateTheme {
87+
return when (this) {
88+
NotificationThemeMode.Light -> TemplateTheme.Light
89+
NotificationThemeMode.Dark -> TemplateTheme.Dark
90+
NotificationThemeMode.Default -> SendbirdUIKit.getDefaultThemeMode().toTemplateTheme()
91+
}
92+
}
93+
8094
internal enum class MessageTemplateContainerType {
8195
UNKNOWN, DEFAULT;
8296

uikit/src/main/java/com/sendbird/uikit/internal/extensions/ViewExtensions.kt

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,15 @@ package com.sendbird.uikit.internal.extensions
33
import android.annotation.SuppressLint
44
import android.content.Context
55
import android.content.res.ColorStateList
6-
import android.graphics.Color
76
import android.graphics.Typeface
87
import android.graphics.drawable.Drawable
98
import android.graphics.drawable.GradientDrawable
109
import android.graphics.drawable.RippleDrawable
1110
import android.os.Build
1211
import android.util.TypedValue
13-
import android.view.Gravity
1412
import android.view.View
15-
import android.view.ViewGroup
1613
import android.widget.EditText
17-
import android.widget.FrameLayout
1814
import android.widget.ImageView
19-
import android.widget.ProgressBar
2015
import android.widget.TextView
2116
import androidx.core.content.ContextCompat
2217
import com.bumptech.glide.Glide
@@ -30,11 +25,6 @@ import com.sendbird.android.message.FeedbackRating
3025
import com.sendbird.uikit.R
3126
import com.sendbird.uikit.consts.StringSet
3227
import com.sendbird.uikit.internal.interfaces.OnFeedbackRatingClickListener
33-
import com.sendbird.uikit.internal.model.notifications.NotificationThemeMode
34-
import com.sendbird.uikit.internal.model.template_messages.Params
35-
import com.sendbird.uikit.internal.model.template_messages.TemplateParamsCreator
36-
import com.sendbird.uikit.internal.model.template_messages.TemplateViewGenerator.spinnerColor
37-
import com.sendbird.uikit.utils.DrawableUtils
3828
import com.sendbird.uikit.widgets.FeedbackView
3929

4030
@Suppress("DEPRECATION")
@@ -155,45 +145,3 @@ internal fun FeedbackView.drawFeedback(message: BaseMessage, listener: OnFeedbac
155145
listener?.onFeedbackClicked(message, feedbackRating)
156146
}
157147
}
158-
159-
internal fun Context.createTemplateMessageLoadingView(): View {
160-
val height = resources.getDimensionPixelSize(R.dimen.sb_template_message_loading_view_height)
161-
return FrameLayout(this).apply {
162-
layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, height)
163-
setBackgroundColor(Color.TRANSPARENT)
164-
addView(
165-
ProgressBar(context).apply {
166-
val size = resources.intToDp(42)
167-
layoutParams = FrameLayout.LayoutParams(
168-
size, size, Gravity.CENTER
169-
)
170-
val loading = DrawableUtils.setTintList(
171-
context,
172-
R.drawable.sb_progress,
173-
ColorStateList.valueOf(NotificationThemeMode.Default.spinnerColor)
174-
)
175-
this.indeterminateDrawable = loading
176-
}
177-
)
178-
}
179-
}
180-
181-
internal fun Context.createFallbackViewParams(message: BaseMessage): Params {
182-
return createFallbackViewParams(message.message)
183-
}
184-
185-
internal fun Context.createFallbackViewParams(message: String): Params {
186-
return TemplateParamsCreator.createMessageTemplateDefaultViewParam(
187-
message,
188-
this.getString(R.string.sb_text_template_message_fallback_title),
189-
this.getString(R.string.sb_text_template_message_fallback_description),
190-
)
191-
}
192-
193-
internal fun TextView.applyTextAlignment(gravity: Int) {
194-
if ((gravity and Gravity.START) == Gravity.START) {
195-
textAlignment = View.TEXT_ALIGNMENT_VIEW_START
196-
} else if ((gravity and Gravity.END) == Gravity.END) {
197-
textAlignment = View.TEXT_ALIGNMENT_VIEW_END
198-
}
199-
}
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package com.sendbird.uikit.internal.interfaces
22

33
import com.sendbird.android.exception.SendbirdException
4+
import com.sendbird.message.template.model.TemplateParams
45

5-
internal interface GetTemplateResultHandler {
6-
fun onResult(templateKey: String, jsonTemplate: String?, isDataTemplate: Boolean, e: SendbirdException?)
6+
internal fun interface GetTemplateResultHandler {
7+
fun onResult(templateKey: String, templateParams: TemplateParams?, e: SendbirdException?)
78
}

uikit/src/main/java/com/sendbird/uikit/internal/model/NotificationDiffCallback.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.sendbird.uikit.internal.model
22

33
import androidx.recyclerview.widget.DiffUtil
44
import com.sendbird.android.message.BaseMessage
5+
import com.sendbird.uikit.internal.extensions.messageTemplateStatus
56

67
internal class NotificationDiffCallback(
78
private val oldMessageList: List<BaseMessage>,
@@ -75,6 +76,10 @@ internal class NotificationDiffCallback(
7576
return false
7677
}
7778

79+
if (oldMessage.messageTemplateStatus != newMessage.messageTemplateStatus) {
80+
return false
81+
}
82+
7883
val prevIsNew: Boolean = oldMessage.createdAt > oldLastSeenAt
7984
val currentIsNew: Boolean = newMessage.createdAt > newLastSeenAt
8085
if (prevIsNew != currentIsNew) {

uikit/src/main/java/com/sendbird/uikit/internal/model/notifications/NotificationChannelTheme.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
package com.sendbird.uikit.internal.model.notifications
44

5+
import com.sendbird.message.template.consts.Weight
56
import com.sendbird.uikit.internal.model.serializer.CSVColorIntAsStringSerializer
67
import com.sendbird.uikit.internal.model.template_messages.KeySet
7-
import com.sendbird.uikit.internal.model.template_messages.Weight
88
import com.sendbird.uikit.internal.singleton.JsonParser
99
import kotlinx.serialization.SerialName
1010
import kotlinx.serialization.Serializable

0 commit comments

Comments
 (0)