diff --git a/CHANGELOG.md b/CHANGELOG.md
index cbd936c27cd..24843d81a64 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -58,6 +58,7 @@
### 🐞 Fixed
### ⬆️ Improved
+- Improved UI customization for Audio Recording feature. [#4906](https://github.com/GetStream/stream-chat-android/pull/4906)
### ✅ Added
diff --git a/docusaurus/docs/Android/04-ui/06-guides/04-enabling-audio-recording.mdx b/docusaurus/docs/Android/04-ui/06-guides/04-enabling-audio-recording.mdx
index cf7f8a6324f..896164a2170 100644
--- a/docusaurus/docs/Android/04-ui/06-guides/04-enabling-audio-recording.mdx
+++ b/docusaurus/docs/Android/04-ui/06-guides/04-enabling-audio-recording.mdx
@@ -17,13 +17,14 @@ The UI Components Chat SDK provides the flexibility to customize the visual pres
We'll start changing it by replacing the stock play button in favor of a flatter, semi-transparent
design.
-First, let's enable audio recording by setting `streamUiMessageComposerAudioRecordingButtonVisible`
-to `true` in our `MessageComposerViewTheme`:
+First, let's display enabled audio recording button by setting `streamUiMessageComposerAudioRecordingButtonVisible`
+and `streamUiMessageComposerAudioRecordingButtonEnabled` to `true` in our `MessageComposerViewTheme`:
```xml
```
@@ -38,13 +39,15 @@ something typed in the composer.
```
:::note
Only certain attributes were used here, you can find the rest in
-the [source file](https://github.com/GetStream/stream-chat-android/blob/main/stream-chat-android-ui-components/src/main/res/values/attrs_message_composer_view.xml#L132)
+the source code [here](https://github.com/GetStream/stream-chat-android/blob/main/stream-chat-android-ui-components/src/main/res/values/attrs_message_composer_view.xml#L199-L202)
+and [here](https://github.com/GetStream/stream-chat-android/blob/main/stream-chat-android-ui-components/src/main/res/values/attrs_message_composer_view.xml#L132)
.
:::
@@ -76,13 +79,15 @@ The same result can be achieved by using XML attributes directly on the `Message
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:streamUiMessageComposerAudioRecordingButtonVisible="true"
+ app:streamUiMessageComposerAudioRecordingButtonEnabled="true"
app:streamUiMessageComposerAudioRecordingButtonPreferred="true"
/>
```
:::note
Only certain attributes were used here, you can find the rest in
-the [source file](https://github.com/GetStream/stream-chat-android/blob/main/stream-chat-android-ui-components/src/main/res/values/attrs_message_composer_view.xml#L132)
+the source code [here](https://github.com/GetStream/stream-chat-android/blob/main/stream-chat-android-ui-components/src/main/res/values/attrs_message_composer_view.xml#L199-L202)
+and [here](https://github.com/GetStream/stream-chat-android/blob/main/stream-chat-android-ui-components/src/main/res/values/attrs_message_composer_view.xml#L132)
.
:::
@@ -98,6 +103,7 @@ functionality:
TransformStyle.messageComposerStyleTransformer = StyleTransformer { defaultStyle ->
defaultStyle.copy(
audioRecordingButtonVisible = true,
+ audioRecordingButtonEnabled = true,
audioRecordingButtonPreferred = true,
)
}
@@ -119,6 +125,7 @@ TransformStyle.setMessageComposerStyleTransformer(source -> {
:::note
Only certain attributes were used here, you can find the rest in
-the [source file](https://github.com/GetStream/stream-chat-android/blob/main/stream-chat-android-ui-components/src/main/res/values/attrs_message_composer_view.xml#L132)
+the source code [here](https://github.com/GetStream/stream-chat-android/blob/main/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/composer/MessageComposerViewStyle.kt#L222-L225)
+and [here](https://github.com/GetStream/stream-chat-android/blob/main/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/composer/MessageComposerViewStyle.kt#L185-L200)
.
:::
\ No newline at end of file
diff --git a/stream-chat-android-ui-components/api/stream-chat-android-ui-components.api b/stream-chat-android-ui-components/api/stream-chat-android-ui-components.api
index 524deb3d92d..d0116ae5570 100644
--- a/stream-chat-android-ui-components/api/stream-chat-android-ui-components.api
+++ b/stream-chat-android-ui-components/api/stream-chat-android-ui-components.api
@@ -910,7 +910,7 @@ public final class io/getstream/chat/android/ui/feature/messages/composer/Messag
public final class io/getstream/chat/android/ui/feature/messages/composer/MessageComposerViewStyle {
public static final field Companion Lio/getstream/chat/android/ui/feature/messages/composer/MessageComposerViewStyle$Companion;
- public fun (ILjava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;ILio/getstream/chat/android/ui/font/TextStyle;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;ILandroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;ZZLio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ZZILjava/lang/String;IZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;Ljava/lang/Integer;FFIIIIZZLjava/lang/String;ILandroid/graphics/drawable/Drawable;Ljava/lang/Integer;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;ZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;ZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;ZLandroid/graphics/drawable/Drawable;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ZLandroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;ILio/getstream/chat/android/ui/font/TextStyle;IFLio/getstream/chat/android/ui/font/TextStyle;IFLio/getstream/chat/android/ui/feature/messages/composer/attachment/picker/AttachmentsPickerDialogStyle;)V
+ public fun (ILjava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;ILio/getstream/chat/android/ui/font/TextStyle;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;ILandroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;ZZLio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ZZILjava/lang/String;IZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;Ljava/lang/Integer;FFIIIILjava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;ZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;ZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;ZLandroid/graphics/drawable/Drawable;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ZLandroid/graphics/drawable/Drawable;ZZZLandroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;ILio/getstream/chat/android/ui/font/TextStyle;IFLio/getstream/chat/android/ui/font/TextStyle;IFLio/getstream/chat/android/ui/feature/messages/composer/attachment/picker/AttachmentsPickerDialogStyle;)V
public final fun component1 ()I
public final fun component10 ()Lio/getstream/chat/android/ui/font/TextStyle;
public final fun component11 ()I
@@ -940,21 +940,21 @@ public final class io/getstream/chat/android/ui/feature/messages/composer/Messag
public final fun component33 ()I
public final fun component34 ()I
public final fun component35 ()I
- public final fun component36 ()Z
- public final fun component37 ()Z
- public final fun component38 ()Ljava/lang/String;
- public final fun component39 ()I
+ public final fun component36 ()Ljava/lang/String;
+ public final fun component37 ()Lio/getstream/chat/android/ui/font/TextStyle;
+ public final fun component38 ()Landroid/graphics/drawable/Drawable;
+ public final fun component39 ()Ljava/lang/Integer;
public final fun component4 ()Ljava/lang/String;
- public final fun component40 ()Landroid/graphics/drawable/Drawable;
- public final fun component41 ()Ljava/lang/Integer;
- public final fun component42 ()Ljava/lang/String;
- public final fun component43 ()Landroid/graphics/drawable/Drawable;
- public final fun component44 ()Ljava/lang/Integer;
- public final fun component45 ()Landroid/graphics/drawable/Drawable;
- public final fun component46 ()Ljava/lang/Integer;
- public final fun component47 ()Landroid/graphics/drawable/Drawable;
- public final fun component48 ()Ljava/lang/Integer;
- public final fun component49 ()Z
+ public final fun component40 ()Ljava/lang/String;
+ public final fun component41 ()Lio/getstream/chat/android/ui/font/TextStyle;
+ public final fun component42 ()Landroid/graphics/drawable/Drawable;
+ public final fun component43 ()Ljava/lang/Integer;
+ public final fun component44 ()Landroid/graphics/drawable/Drawable;
+ public final fun component45 ()Ljava/lang/Integer;
+ public final fun component46 ()Landroid/graphics/drawable/Drawable;
+ public final fun component47 ()Ljava/lang/Integer;
+ public final fun component48 ()Landroid/graphics/drawable/Drawable;
+ public final fun component49 ()Ljava/lang/Integer;
public final fun component5 ()Lio/getstream/chat/android/ui/font/TextStyle;
public final fun component50 ()Landroid/graphics/drawable/Drawable;
public final fun component51 ()Ljava/lang/Integer;
@@ -963,31 +963,38 @@ public final class io/getstream/chat/android/ui/feature/messages/composer/Messag
public final fun component54 ()Ljava/lang/Integer;
public final fun component55 ()Z
public final fun component56 ()Landroid/graphics/drawable/Drawable;
- public final fun component57 ()Ljava/lang/String;
- public final fun component58 ()Lio/getstream/chat/android/ui/font/TextStyle;
- public final fun component59 ()Ljava/lang/String;
+ public final fun component57 ()Ljava/lang/Integer;
+ public final fun component58 ()Z
+ public final fun component59 ()Landroid/graphics/drawable/Drawable;
public final fun component6 ()Landroid/graphics/drawable/Drawable;
- public final fun component60 ()Landroid/graphics/drawable/Drawable;
- public final fun component61 ()Ljava/lang/String;
- public final fun component62 ()Landroid/graphics/drawable/Drawable;
+ public final fun component60 ()Ljava/lang/String;
+ public final fun component61 ()Lio/getstream/chat/android/ui/font/TextStyle;
+ public final fun component62 ()Ljava/lang/String;
public final fun component63 ()Landroid/graphics/drawable/Drawable;
- public final fun component64 ()Z
+ public final fun component64 ()Ljava/lang/String;
public final fun component65 ()Landroid/graphics/drawable/Drawable;
- public final fun component66 ()Lio/getstream/chat/android/ui/font/TextStyle;
- public final fun component67 ()Landroid/graphics/drawable/Drawable;
- public final fun component68 ()I
- public final fun component69 ()Lio/getstream/chat/android/ui/font/TextStyle;
+ public final fun component66 ()Landroid/graphics/drawable/Drawable;
+ public final fun component67 ()Z
+ public final fun component68 ()Landroid/graphics/drawable/Drawable;
+ public final fun component69 ()Z
public final fun component7 ()I
- public final fun component70 ()I
- public final fun component71 ()F
- public final fun component72 ()Lio/getstream/chat/android/ui/font/TextStyle;
- public final fun component73 ()I
- public final fun component74 ()F
- public final fun component75 ()Lio/getstream/chat/android/ui/feature/messages/composer/attachment/picker/AttachmentsPickerDialogStyle;
+ public final fun component70 ()Z
+ public final fun component71 ()Z
+ public final fun component72 ()Landroid/graphics/drawable/Drawable;
+ public final fun component73 ()Lio/getstream/chat/android/ui/font/TextStyle;
+ public final fun component74 ()Landroid/graphics/drawable/Drawable;
+ public final fun component75 ()I
+ public final fun component76 ()Lio/getstream/chat/android/ui/font/TextStyle;
+ public final fun component77 ()I
+ public final fun component78 ()F
+ public final fun component79 ()Lio/getstream/chat/android/ui/font/TextStyle;
public final fun component8 ()Lio/getstream/chat/android/ui/font/TextStyle;
+ public final fun component80 ()I
+ public final fun component81 ()F
+ public final fun component82 ()Lio/getstream/chat/android/ui/feature/messages/composer/attachment/picker/AttachmentsPickerDialogStyle;
public final fun component9 ()Ljava/lang/String;
- public final fun copy (ILjava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;ILio/getstream/chat/android/ui/font/TextStyle;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;ILandroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;ZZLio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ZZILjava/lang/String;IZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;Ljava/lang/Integer;FFIIIIZZLjava/lang/String;ILandroid/graphics/drawable/Drawable;Ljava/lang/Integer;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;ZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;ZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;ZLandroid/graphics/drawable/Drawable;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ZLandroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;ILio/getstream/chat/android/ui/font/TextStyle;IFLio/getstream/chat/android/ui/font/TextStyle;IFLio/getstream/chat/android/ui/feature/messages/composer/attachment/picker/AttachmentsPickerDialogStyle;)Lio/getstream/chat/android/ui/feature/messages/composer/MessageComposerViewStyle;
- public static synthetic fun copy$default (Lio/getstream/chat/android/ui/feature/messages/composer/MessageComposerViewStyle;ILjava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;ILio/getstream/chat/android/ui/font/TextStyle;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;ILandroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;ZZLio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ZZILjava/lang/String;IZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;Ljava/lang/Integer;FFIIIIZZLjava/lang/String;ILandroid/graphics/drawable/Drawable;Ljava/lang/Integer;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;ZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;ZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;ZLandroid/graphics/drawable/Drawable;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ZLandroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;ILio/getstream/chat/android/ui/font/TextStyle;IFLio/getstream/chat/android/ui/font/TextStyle;IFLio/getstream/chat/android/ui/feature/messages/composer/attachment/picker/AttachmentsPickerDialogStyle;IIILjava/lang/Object;)Lio/getstream/chat/android/ui/feature/messages/composer/MessageComposerViewStyle;
+ public final fun copy (ILjava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;ILio/getstream/chat/android/ui/font/TextStyle;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;ILandroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;ZZLio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ZZILjava/lang/String;IZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;Ljava/lang/Integer;FFIIIILjava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;ZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;ZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;ZLandroid/graphics/drawable/Drawable;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ZLandroid/graphics/drawable/Drawable;ZZZLandroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;ILio/getstream/chat/android/ui/font/TextStyle;IFLio/getstream/chat/android/ui/font/TextStyle;IFLio/getstream/chat/android/ui/feature/messages/composer/attachment/picker/AttachmentsPickerDialogStyle;)Lio/getstream/chat/android/ui/feature/messages/composer/MessageComposerViewStyle;
+ public static synthetic fun copy$default (Lio/getstream/chat/android/ui/feature/messages/composer/MessageComposerViewStyle;ILjava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;ILio/getstream/chat/android/ui/font/TextStyle;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;ILandroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;ZZLio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ZZILjava/lang/String;IZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;Ljava/lang/Integer;FFIIIILjava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;ZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;ZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;ZLandroid/graphics/drawable/Drawable;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ZLandroid/graphics/drawable/Drawable;ZZZLandroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;ILio/getstream/chat/android/ui/font/TextStyle;IFLio/getstream/chat/android/ui/font/TextStyle;IFLio/getstream/chat/android/ui/feature/messages/composer/attachment/picker/AttachmentsPickerDialogStyle;IIILjava/lang/Object;)Lio/getstream/chat/android/ui/feature/messages/composer/MessageComposerViewStyle;
public fun equals (Ljava/lang/Object;)Z
public final fun getAlsoSendToChannelCheckboxDrawable ()Landroid/graphics/drawable/Drawable;
public final fun getAlsoSendToChannelCheckboxText ()Ljava/lang/String;
@@ -997,19 +1004,26 @@ public final class io/getstream/chat/android/ui/feature/messages/composer/Messag
public final fun getAttachmentsButtonRippleColor ()Ljava/lang/Integer;
public final fun getAttachmentsButtonVisible ()Z
public final fun getAttachmentsPickerDialogStyle ()Lio/getstream/chat/android/ui/feature/messages/composer/attachment/picker/AttachmentsPickerDialogStyle;
+ public final fun getAudioRecordingButtonEnabled ()Z
+ public final fun getAudioRecordingButtonIconDrawable ()Landroid/graphics/drawable/Drawable;
public final fun getAudioRecordingButtonPreferred ()Z
public final fun getAudioRecordingButtonVisible ()Z
+ public final fun getAudioRecordingFloatingButtonBackgroundDrawable ()Landroid/graphics/drawable/Drawable;
+ public final fun getAudioRecordingFloatingButtonBackgroundDrawableTint ()Ljava/lang/Integer;
+ public final fun getAudioRecordingFloatingButtonIconDrawable ()Landroid/graphics/drawable/Drawable;
+ public final fun getAudioRecordingFloatingButtonIconDrawableTint ()Ljava/lang/Integer;
+ public final fun getAudioRecordingFloatingLockIconDrawable ()Landroid/graphics/drawable/Drawable;
+ public final fun getAudioRecordingFloatingLockIconDrawableTint ()Ljava/lang/Integer;
+ public final fun getAudioRecordingFloatingLockedIconDrawable ()Landroid/graphics/drawable/Drawable;
+ public final fun getAudioRecordingFloatingLockedIconDrawableTint ()Ljava/lang/Integer;
public final fun getAudioRecordingHoldToRecordBackgroundDrawable ()Landroid/graphics/drawable/Drawable;
public final fun getAudioRecordingHoldToRecordBackgroundDrawableTint ()Ljava/lang/Integer;
public final fun getAudioRecordingHoldToRecordText ()Ljava/lang/String;
- public final fun getAudioRecordingHoldToRecordTextColor ()I
- public final fun getAudioRecordingLockIconDrawable ()Landroid/graphics/drawable/Drawable;
- public final fun getAudioRecordingLockIconDrawableTint ()Ljava/lang/Integer;
- public final fun getAudioRecordingLockedIconDrawable ()Landroid/graphics/drawable/Drawable;
- public final fun getAudioRecordingLockedIconDrawableTint ()Ljava/lang/Integer;
- public final fun getAudioRecordingMicIconDrawable ()Landroid/graphics/drawable/Drawable;
- public final fun getAudioRecordingMicIconDrawableTint ()Ljava/lang/Integer;
+ public final fun getAudioRecordingHoldToRecordTextStyle ()Lio/getstream/chat/android/ui/font/TextStyle;
+ public final fun getAudioRecordingSlideToCancelStartDrawable ()Landroid/graphics/drawable/Drawable;
+ public final fun getAudioRecordingSlideToCancelStartDrawableTint ()Ljava/lang/Integer;
public final fun getAudioRecordingSlideToCancelText ()Ljava/lang/String;
+ public final fun getAudioRecordingSlideToCancelTextStyle ()Lio/getstream/chat/android/ui/font/TextStyle;
public final fun getBackgroundColor ()I
public final fun getButtonIconDrawableTintColor ()Ljava/lang/Integer;
public final fun getCommandSuggestionItemCommandDescriptionText ()Ljava/lang/String;
diff --git a/stream-chat-android-ui-components/detekt-baseline.xml b/stream-chat-android-ui-components/detekt-baseline.xml
index 11964737ff3..8b5fd50f2e7 100644
--- a/stream-chat-android-ui-components/detekt-baseline.xml
+++ b/stream-chat-android-ui-components/detekt-baseline.xml
@@ -12,8 +12,6 @@
ComplexMethod:AttachmentDestination.kt$AttachmentDestination$public fun showAttachment(message: Message, attachment: Attachment)
ComplexMethod:DefaultMessageComposerCenterOverlapContent.kt$DefaultMessageComposerOverlappingContent$@SuppressLint("ClickableViewAccessibility") override fun onTouchEvent(event: MotionEvent): Boolean
ComplexMethod:DefaultMessageComposerTrailingContent.kt$DefaultMessageComposerTrailingContent$override fun renderState(state: MessageComposerState)
- ComplexMethod:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$internal operator fun invoke(context: Context, attrs: AttributeSet?): MessageComposerViewStyle
- ComplexMethod:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$private fun createAttachmentPickerDialogStyle(context: Context, a: TypedArray): AttachmentsPickerDialogStyle
ComplexMethod:MessageListItemDiffCallback.kt$MessageListItemDiffCallback$override fun areContentsTheSame(oldItem: MessageListItem, newItem: MessageListItem): Boolean
ComplexMethod:MessageListItemViewHolderFactory.kt$MessageListItemViewHolderFactory$public open fun createViewHolder( parentView: ViewGroup, viewType: Int, ): BaseMessageItemViewHolder<out MessageListItem>
ComplexMethod:MessageOptionItemsFactory.kt$DefaultMessageOptionItemsFactory$override fun createMessageOptionItems( selectedMessage: Message, currentUser: User?, isInThread: Boolean, ownCapabilities: Set<String>, style: MessageListViewStyle, ): List<MessageOptionItem>
@@ -35,8 +33,6 @@
LongMethod:GiphyViewHolderStyle.kt$GiphyViewHolderStyle.Companion$operator fun invoke(context: Context, attributes: TypedArray): GiphyViewHolderStyle
LongMethod:MediaAttachmentGridViewStyle.kt$MediaAttachmentGridViewStyle.Companion$operator fun invoke(context: Context, it: TypedArray): MediaAttachmentGridViewStyle
LongMethod:MentionListViewStyle.kt$MentionListViewStyle.Companion$operator fun invoke(context: Context, attrs: AttributeSet?): MentionListViewStyle
- LongMethod:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$internal operator fun invoke(context: Context, attrs: AttributeSet?): MessageComposerViewStyle
- LongMethod:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$private fun createAttachmentPickerDialogStyle(context: Context, a: TypedArray): AttachmentsPickerDialogStyle
LongMethod:MessageListHeaderViewStyle.kt$MessageListHeaderViewStyle.Companion$operator fun invoke(context: Context, attrs: AttributeSet?): MessageListHeaderViewStyle
LongMethod:MessageListItemStyle.kt$MessageListItemStyle.Builder$fun build(): MessageListItemStyle
LongMethod:MessageListViewModelBinding.kt$@JvmName("bind") public fun MessageListViewModel.bindView( view: MessageListView, lifecycleOwner: LifecycleOwner, )
@@ -113,53 +109,6 @@
MaxLineLength:MediaAttachmentDialogFragment.kt$MediaAttachmentDialogFragment$viewModel.attachmentGalleryItemsLiveData.observe(viewLifecycleOwner, mediaAttachmentGridView::setAttachments)
MaxLineLength:MessageBackgroundFactoryImpl.kt$MessageBackgroundFactoryImpl$// however, if a user has specified a background color attribute, we use it for _all_ message backgrounds.
MaxLineLength:MessageComposerViewModel.kt$MessageComposerViewModel$*
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerAllowAccessButtonTextFontAssets
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerAttachmentTabToggleButtonStateList
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerFileAttachmentItemCheckboxDeselectedDrawable
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerFileAttachmentItemCheckboxSelectedDrawable
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerFileAttachmentItemCheckboxTextColor
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerFileAttachmentItemNameTextColor
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerFileAttachmentItemNameTextFont
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerFileAttachmentItemNameTextFontAssets
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerFileAttachmentItemNameTextSize
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerFileAttachmentItemNameTextStyle
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerFileAttachmentItemSizeTextColor
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerFileAttachmentItemSizeTextFont
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerFileAttachmentItemSizeTextFontAssets
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerFileAttachmentItemSizeTextSize
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerFileAttachmentItemSizeTextStyle
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerFileAttachmentsNoFilesTextColor
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerFileAttachmentsNoFilesTextFont
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerFileAttachmentsNoFilesTextFontAssets
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerFileAttachmentsNoFilesTextSize
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerFileAttachmentsNoFilesTextStyle
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerMediaAttachmentNoMediaTextColor
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerMediaAttachmentNoMediaTextFont
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerMediaAttachmentNoMediaTextFontAssets
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerMediaAttachmentNoMediaTextSize
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerMediaAttachmentNoMediaTextStyle
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerSubmitAttachmentsButtonIconDrawable
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingHoldToRecordBackgroundDrawableTint
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerCommandSuggestionItemCommandDescriptionTextColor
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerCommandSuggestionItemCommandDescriptionTextFont
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerCommandSuggestionItemCommandDescriptionTextFontAssets
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerCommandSuggestionItemCommandDescriptionTextSize
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerCommandSuggestionItemCommandDescriptionTextStyle
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerCommandSuggestionItemCommandNameTextColor
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerCommandSuggestionItemCommandNameTextFontAssets
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerCommandSuggestionItemCommandNameTextStyle
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerMentionSuggestionItemMentionTextFontAssets
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerMentionSuggestionItemUsernameTextFontAssets
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerMessageInputVideoAttachmentIconDrawablePadding
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerMessageInputVideoAttachmentIconDrawablePaddingBottom
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerMessageInputVideoAttachmentIconDrawablePaddingEnd
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerMessageInputVideoAttachmentIconDrawablePaddingStart
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$R.styleable.MessageComposerView_streamUiMessageComposerMessageInputVideoAttachmentIconDrawablePaddingTop
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$a.getColorOrNull(R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerVideoIconDrawableTint)
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$a.getColorOrNull(R.styleable.MessageComposerView_streamUiMessageComposerMessageInputVideoAttachmentIconBackgroundColor)
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$a.getColorOrNull(R.styleable.MessageComposerView_streamUiMessageComposerMessageInputVideoAttachmentIconDrawableTint)
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$a.getDrawable(R.styleable.MessageComposerView_streamUiMessageComposerMessageInputVideoAttachmentIconDrawable)
- MaxLineLength:MessageComposerViewStyle.kt$MessageComposerViewStyle.Companion$messageInputVideoAttachmentIconDrawablePaddingBottom
MaxLineLength:MessageListHeaderViewStyle.kt$MessageListHeaderViewStyle$*
MaxLineLength:MessageListItemDecoratorProvider.kt$MessageListItemDecoratorProvider$*
MaxLineLength:MessageListItemDiffCallback.kt$MessageListItemDiffCallback$is MessageListItem.DateSeparatorItem -> oldItem.date == (newItem as? MessageListItem.DateSeparatorItem)?.date
diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/composer/MessageComposerViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/composer/MessageComposerViewStyle.kt
index cdc9e49f7a4..2cdb8982db5 100644
--- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/composer/MessageComposerViewStyle.kt
+++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/composer/MessageComposerViewStyle.kt
@@ -88,6 +88,35 @@ import io.getstream.chat.android.ui.utils.extensions.use
* @param messageInputVideoAttachmentIconDrawablePaddingEnd Sets the end padding between the video attachment drawable
* and its parent card.
* @param audioRecordingButtonVisible If the button to record audio is displayed.
+ * @param audioRecordingButtonEnabled If the button to record audio is enabled.
+ * @param audioRecordingButtonPreferred If the button to record audio is displayed over send button while input is
+ * empty.
+ * @param audioRecordingHoldToRecordText The info text that will be shown if touch event on audio button was too short.
+ * @param audioRecordingHoldToRecordTextStyle The text style that will be used for the "hold to record" text.
+ * @param audioRecordingHoldToRecordBackgroundDrawable The drawable will be used as a background for the "hold to
+ * record" text.
+ * @param audioRecordingHoldToRecordBackgroundDrawableTint The tint color will be used for background drawable of
+ * the "hold to record" text.
+ * @param audioRecordingSlideToCancelText The info text that will be shown while holding mic button.
+ * @param audioRecordingSlideToCancelTextStyle The text style that will be used for the "slide to cancel" text.
+ * @param audioRecordingSlideToCancelStartDrawable The icon that will be displayed in front of the
+ * "slide to cancel" text.
+ * @param audioRecordingSlideToCancelStartDrawableTint The tint color that will be used for the icon in front of the
+ * "slide to cancel" text.
+ * @param audioRecordingFloatingButtonIconDrawable The icon that will be displayed in inside the floating draggable
+ * button while recording.
+ * @param audioRecordingFloatingButtonIconDrawableTint The tint color that will be used for the the mic icon inside
+ * the floating draggable button.
+ * @param audioRecordingFloatingButtonBackgroundDrawable The background drawable that will be applied to the floating
+ * draggable button while recording.
+ * @param audioRecordingFloatingButtonBackgroundDrawableTint The tint color that will be used for the background
+ * drawable in the floating draggable button.
+ * @param audioRecordingFloatingLockIconDrawable The floating icon that will be displayed above floating button
+ * while unlocked.
+ * @param audioRecordingFloatingLockIconDrawableTint The tint color that will be used for the the lock icon.
+ * @param audioRecordingFloatingLockedIconDrawable The floating icon that will be displayed above recording view
+ * when locked.
+ * @param audioRecordingFloatingLockedIconDrawableTint The tint color that will be used for the the locked icon.
* @param attachmentsButtonVisible If the button to pick attachments is displayed.
* @param attachmentsButtonIconDrawable The icon for the attachments button.
* @param attachmentsButtonRippleColor Ripple color of the attachments button.
@@ -164,19 +193,22 @@ public data class MessageComposerViewStyle(
public val messageInputVideoAttachmentIconDrawablePaddingStart: Int,
public val messageInputVideoAttachmentIconDrawablePaddingEnd: Int,
// Center overlap content
- public val audioRecordingButtonVisible: Boolean,
- public val audioRecordingButtonPreferred: Boolean,
public val audioRecordingHoldToRecordText: String,
- @ColorInt public val audioRecordingHoldToRecordTextColor: Int,
+ public val audioRecordingHoldToRecordTextStyle: TextStyle,
public val audioRecordingHoldToRecordBackgroundDrawable: Drawable,
@ColorInt public val audioRecordingHoldToRecordBackgroundDrawableTint: Int?,
public val audioRecordingSlideToCancelText: String,
- public val audioRecordingMicIconDrawable: Drawable,
- @ColorInt public val audioRecordingMicIconDrawableTint: Int?,
- public val audioRecordingLockIconDrawable: Drawable,
- @ColorInt public val audioRecordingLockIconDrawableTint: Int?,
- public val audioRecordingLockedIconDrawable: Drawable,
- @ColorInt public val audioRecordingLockedIconDrawableTint: Int?,
+ public val audioRecordingSlideToCancelTextStyle: TextStyle,
+ public val audioRecordingSlideToCancelStartDrawable: Drawable,
+ @ColorInt public val audioRecordingSlideToCancelStartDrawableTint: Int?,
+ public val audioRecordingFloatingButtonIconDrawable: Drawable,
+ @ColorInt public val audioRecordingFloatingButtonIconDrawableTint: Int?,
+ public val audioRecordingFloatingButtonBackgroundDrawable: Drawable,
+ @ColorInt public val audioRecordingFloatingButtonBackgroundDrawableTint: Int?,
+ public val audioRecordingFloatingLockIconDrawable: Drawable,
+ @ColorInt public val audioRecordingFloatingLockIconDrawableTint: Int?,
+ public val audioRecordingFloatingLockedIconDrawable: Drawable,
+ @ColorInt public val audioRecordingFloatingLockedIconDrawableTint: Int?,
// Leading content
public val attachmentsButtonVisible: Boolean,
public val attachmentsButtonIconDrawable: Drawable,
@@ -198,6 +230,10 @@ public data class MessageComposerViewStyle(
// Trailing content
public val sendMessageButtonEnabled: Boolean,
public val sendMessageButtonIconDrawable: Drawable,
+ public val audioRecordingButtonVisible: Boolean,
+ public val audioRecordingButtonEnabled: Boolean,
+ public val audioRecordingButtonPreferred: Boolean,
+ public val audioRecordingButtonIconDrawable: Drawable,
public val cooldownTimerTextStyle: TextStyle,
public val cooldownTimerBackgroundDrawable: Drawable,
// Message reply customization, by default belongs to center content as well
@@ -232,6 +268,8 @@ public data class MessageComposerViewStyle(
)
public companion object {
+
+ @Suppress("MaxLineLength", "ComplexMethod", "LongMethod")
internal operator fun invoke(context: Context, attrs: AttributeSet?): MessageComposerViewStyle {
context.obtainStyledAttributes(
attrs,
@@ -351,7 +389,8 @@ public data class MessageComposerViewStyle(
context.getColorCompat(R.color.stream_ui_text_color_primary)
)
.font(
- R.styleable.MessageComposerView_streamUiMessageComposerMentionSuggestionItemUsernameTextFontAssets,
+ R.styleable
+ .MessageComposerView_streamUiMessageComposerMentionSuggestionItemUsernameTextFontAssets,
R.styleable.MessageComposerView_streamUiMessageComposerMentionSuggestionItemUsernameTextFont
)
.style(
@@ -452,21 +491,27 @@ public data class MessageComposerViewStyle(
/**
* Center overlap content
*/
- val audioRecordingButtonVisible = a.getBoolean(
- R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingButtonVisible,
- false
- )
- val audioRecordingButtonPreferred = a.getBoolean(
- R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingButtonPreferred,
- false
- )
val audioRecordingHoldToRecordText = a.getString(
R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingHoldToRecordText
) ?: context.getString(R.string.stream_ui_message_composer_hold_to_record)
- val audioRecordingHoldToRecordTextColor = a.getColor(
- R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingHoldToRecordTextColor,
- context.getColorCompat(R.color.stream_ui_white_snow)
- )
+ val audioRecordingHoldToRecordTextStyle = TextStyle.Builder(a)
+ .size(
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingHoldToRecordTextSize,
+ context.getDimension(R.dimen.stream_ui_text_medium)
+ )
+ .color(
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingHoldToRecordTextColor,
+ context.getColorCompat(R.color.stream_ui_white_snow)
+ )
+ .font(
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingHoldToRecordTextFontAssets,
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingHoldToRecordTextFont
+ )
+ .style(
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingHoldToRecordTextStyle,
+ Typeface.BOLD
+ )
+ .build()
val audioRecordingHoldToRecordBackgroundDrawable = a.getDrawableCompat(
context,
R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingHoldToRecordBackgroundDrawable,
@@ -479,29 +524,62 @@ public data class MessageComposerViewStyle(
val audioRecordingSlideToCancelText = a.getString(
R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingSlideToCancelText
) ?: context.getString(R.string.stream_ui_message_composer_slide_to_cancel)
+ val audioRecordingSlideToCancelTextStyle = TextStyle.Builder(a)
+ .size(
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingSlideToCancelTextSize,
+ context.getDimension(R.dimen.stream_ui_text_medium)
+ )
+ .color(
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingSlideToCancelTextColor,
+ context.getColorCompat(R.color.stream_ui_text_color_secondary)
+ )
+ .font(
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingSlideToCancelTextFontAssets,
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingSlideToCancelTextFont
+ )
+ .style(
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingSlideToCancelTextStyle,
+ Typeface.NORMAL
+ )
+ .build()
+ val audioRecordingSlideToCancelStartDrawable = a.getDrawableCompat(
+ context,
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingSlideToCancelStartDrawable,
+ ) ?: context.getDrawableCompat(R.drawable.stream_ui_arrow_left)!!
- val audioRecordingMicIconDrawable = a.getDrawableCompat(
+ val audioRecordingSlideToCancelStartDrawableTint = a.getColorOrNull(
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingSlideToCancelStartDrawableTint
+ )
+ val audioRecordingFloatingButtonIconDrawable = a.getDrawableCompat(
context,
- R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingMicIconDrawable
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingFloatingButtonIconDrawable
) ?: context.getDrawableCompat(R.drawable.stream_ui_ic_mic)!!
- val audioRecordingMicIconDrawableTint = a.getColorOrNull(
- R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingMicIconDrawableTint
+ val audioRecordingFloatingButtonIconDrawableTint = a.getColorOrNull(
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingFloatingButtonIconDrawableTint
+ )
+
+ val audioRecordingFloatingButtonBackgroundDrawable = a.getDrawableCompat(
+ context,
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingFloatingButtonBackgroundDrawable
+ ) ?: context.getDrawableCompat(R.drawable.stream_ui_message_composer_audio_record_mic_background)!!
+ val audioRecordingFloatingButtonBackgroundDrawableTint = a.getColorOrNull(
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingFloatingButtonBackgroundDrawableTint
)
- val audioRecordingLockIconDrawable = a.getDrawableCompat(
+ val audioRecordingFloatingLockIconDrawable = a.getDrawableCompat(
context,
- R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingLockIconDrawable
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingFloatingLockIconDrawable
) ?: context.getDrawableCompat(R.drawable.stream_ui_ic_mic_lock)!!
- val audioRecordingLockIconDrawableTint = a.getColorOrNull(
- R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingLockIconDrawableTint
+ val audioRecordingFloatingLockIconDrawableTint = a.getColorOrNull(
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingFloatingLockIconDrawableTint
)
- val audioRecordingLockedIconDrawable = a.getDrawableCompat(
+ val audioRecordingFloatingLockedIconDrawable = a.getDrawableCompat(
context,
- R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingLockedIconDrawable
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingFloatingLockedIconDrawable
) ?: context.getDrawableCompat(R.drawable.stream_ui_ic_mic_locked)!!
- val audioRecordingLockedIconDrawableTint = a.getColorOrNull(
- R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingLockedIconDrawableTint
+ val audioRecordingFloatingLockedIconDrawableTint = a.getColorOrNull(
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingFloatingLockedIconDrawableTint
)
/**
@@ -606,6 +684,23 @@ public data class MessageComposerViewStyle(
R.styleable.MessageComposerView_streamUiMessageComposerSendMessageButtonIconDrawable
) ?: context.getDrawableCompat(R.drawable.stream_ui_ic_send_message)!!
+ val audioRecordingButtonEnabled = a.getBoolean(
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingButtonEnabled,
+ true
+ )
+ val audioRecordingButtonVisible = a.getBoolean(
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingButtonVisible,
+ false
+ )
+ val audioRecordingButtonPreferred = a.getBoolean(
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingButtonPreferred,
+ false
+ )
+ val audioRecordingButtonIconDrawable = a.getDrawableCompat(
+ context,
+ R.styleable.MessageComposerView_streamUiMessageComposerAudioRecordingButtonIconDrawable
+ ) ?: context.getDrawableCompat(R.drawable.stream_ui_ic_mic)!!
+
val cooldownTimerTextStyle = TextStyle.Builder(a)
.size(
R.styleable.MessageComposerView_streamUiMessageComposerCooldownTimerTextSize,
@@ -641,7 +736,9 @@ public data class MessageComposerViewStyle(
)
val messageInputVideoAttachmentIconDrawable =
- a.getDrawable(R.styleable.MessageComposerView_streamUiMessageComposerMessageInputVideoAttachmentIconDrawable)
+ a.getDrawable(
+ R.styleable.MessageComposerView_streamUiMessageComposerMessageInputVideoAttachmentIconDrawable
+ )
?: ContextCompat.getDrawable(context, R.drawable.stream_ui_ic_play)!!
val messageInputVideoAttachmentIconDrawableTint =
@@ -807,19 +904,22 @@ public data class MessageComposerViewStyle(
messageInputVideoAttachmentIconDrawablePaddingEnd = messageInputVideoAttachmentIconDrawablePadding
?: messageInputVideoAttachmentIconDrawablePaddingEnd,
// Center overlap content
- audioRecordingButtonVisible = audioRecordingButtonVisible,
- audioRecordingButtonPreferred = audioRecordingButtonPreferred,
audioRecordingHoldToRecordText = audioRecordingHoldToRecordText,
- audioRecordingHoldToRecordTextColor = audioRecordingHoldToRecordTextColor,
+ audioRecordingHoldToRecordTextStyle = audioRecordingHoldToRecordTextStyle,
audioRecordingHoldToRecordBackgroundDrawable = audioRecordingHoldToRecordBackgroundDrawable,
audioRecordingHoldToRecordBackgroundDrawableTint = audioRecordingHoldToRecordBackgroundDrawableTint,
audioRecordingSlideToCancelText = audioRecordingSlideToCancelText,
- audioRecordingMicIconDrawable = audioRecordingMicIconDrawable,
- audioRecordingMicIconDrawableTint = audioRecordingMicIconDrawableTint,
- audioRecordingLockIconDrawable = audioRecordingLockIconDrawable,
- audioRecordingLockIconDrawableTint = audioRecordingLockIconDrawableTint,
- audioRecordingLockedIconDrawable = audioRecordingLockedIconDrawable,
- audioRecordingLockedIconDrawableTint = audioRecordingLockedIconDrawableTint,
+ audioRecordingSlideToCancelTextStyle = audioRecordingSlideToCancelTextStyle,
+ audioRecordingSlideToCancelStartDrawable = audioRecordingSlideToCancelStartDrawable,
+ audioRecordingSlideToCancelStartDrawableTint = audioRecordingSlideToCancelStartDrawableTint,
+ audioRecordingFloatingButtonIconDrawable = audioRecordingFloatingButtonIconDrawable,
+ audioRecordingFloatingButtonIconDrawableTint = audioRecordingFloatingButtonIconDrawableTint,
+ audioRecordingFloatingButtonBackgroundDrawable = audioRecordingFloatingButtonBackgroundDrawable,
+ audioRecordingFloatingButtonBackgroundDrawableTint = audioRecordingFloatingButtonBackgroundDrawableTint,
+ audioRecordingFloatingLockIconDrawable = audioRecordingFloatingLockIconDrawable,
+ audioRecordingFloatingLockIconDrawableTint = audioRecordingFloatingLockIconDrawableTint,
+ audioRecordingFloatingLockedIconDrawable = audioRecordingFloatingLockedIconDrawable,
+ audioRecordingFloatingLockedIconDrawableTint = audioRecordingFloatingLockedIconDrawableTint,
// Leading content
attachmentsButtonVisible = attachmentsButtonVisible,
attachmentsButtonIconDrawable = attachmentsButtonIconDrawable,
@@ -841,6 +941,10 @@ public data class MessageComposerViewStyle(
// Trailing content
sendMessageButtonEnabled = sendMessageButtonEnabled,
sendMessageButtonIconDrawable = sendMessageButtonIconDrawable,
+ audioRecordingButtonEnabled = audioRecordingButtonEnabled,
+ audioRecordingButtonVisible = audioRecordingButtonVisible,
+ audioRecordingButtonPreferred = audioRecordingButtonPreferred,
+ audioRecordingButtonIconDrawable = audioRecordingButtonIconDrawable,
cooldownTimerTextStyle = cooldownTimerTextStyle,
cooldownTimerBackgroundDrawable = cooldownTimerBackgroundDrawable,
messageReplyBackgroundColor = messageReplyBackgroundColor,
@@ -855,6 +959,7 @@ public data class MessageComposerViewStyle(
}
}
+ @Suppress("MaxLineLength", "LongMethod", "ComplexMethod")
private fun createAttachmentPickerDialogStyle(context: Context, a: TypedArray): AttachmentsPickerDialogStyle {
val attachmentsPickerBackgroundColor = a.getColor(
R.styleable.MessageComposerView_streamUiMessageComposerAttachmentsPickerBackgroundColor,
diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/composer/content/DefaultMessageComposerCenterOverlapContent.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/composer/content/DefaultMessageComposerCenterOverlapContent.kt
index fe120ad4c48..1c3b754c7a2 100644
--- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/composer/content/DefaultMessageComposerCenterOverlapContent.kt
+++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/composer/content/DefaultMessageComposerCenterOverlapContent.kt
@@ -55,11 +55,13 @@ import io.getstream.chat.android.ui.databinding.StreamUiMessageComposerDefaultCe
import io.getstream.chat.android.ui.feature.messages.composer.MessageComposerContext
import io.getstream.chat.android.ui.feature.messages.composer.MessageComposerView
import io.getstream.chat.android.ui.feature.messages.composer.MessageComposerViewStyle
+import io.getstream.chat.android.ui.font.setTextStyle
import io.getstream.chat.android.ui.utils.PermissionChecker
import io.getstream.chat.android.ui.utils.extensions.applyTint
import io.getstream.chat.android.ui.utils.extensions.displayMetrics
import io.getstream.chat.android.ui.utils.extensions.dpToPx
import io.getstream.chat.android.ui.utils.extensions.getDimension
+import io.getstream.chat.android.ui.utils.extensions.setStartDrawable
import io.getstream.log.taggedLogger
private const val TAG = "OverlappingContent"
@@ -191,6 +193,12 @@ public class DefaultMessageComposerOverlappingContent : ConstraintLayout, Messag
style = messageComposerContext.style
binding.recordingSlider.text = style.audioRecordingSlideToCancelText
+ binding.recordingSlider.setTextStyle(style.audioRecordingSlideToCancelTextStyle)
+ binding.recordingSlider.setStartDrawable(
+ style.audioRecordingSlideToCancelStartDrawable.applyTint(
+ style.audioRecordingSlideToCancelStartDrawableTint
+ )
+ )
}
override fun renderState(state: MessageComposerState) {
@@ -485,7 +493,18 @@ public class DefaultMessageComposerOverlappingContent : ConstraintLayout, Messag
logger.d { "[showMicPopup] micOrigRect: $micOrigRect" }
val micContent = LayoutInflater.from(context).inflate(
R.layout.stream_ui_message_composer_default_center_overlap_floating_mic, this, false
- )
+ ).also { imageView ->
+ (imageView as ImageView).apply {
+ val iconDrawable = style.audioRecordingFloatingButtonIconDrawable.applyTint(
+ style.audioRecordingFloatingButtonIconDrawableTint
+ )
+ setImageDrawable(iconDrawable)
+ val bgDrawable = style.audioRecordingFloatingButtonBackgroundDrawable.applyTint(
+ style.audioRecordingFloatingButtonBackgroundDrawableTint
+ )
+ background = bgDrawable
+ }
+ }
val widthMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)
val heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)
@@ -526,8 +545,8 @@ public class DefaultMessageComposerOverlappingContent : ConstraintLayout, Messag
R.layout.stream_ui_message_composer_default_center_overlap_floating_lock, this, false
).also { imageView ->
(imageView as ImageView).apply {
- val iconDrawable = style.audioRecordingLockIconDrawable.applyTint(
- style.audioRecordingLockIconDrawableTint
+ val iconDrawable = style.audioRecordingFloatingLockIconDrawable.applyTint(
+ style.audioRecordingFloatingLockIconDrawableTint
)
setImageDrawable(iconDrawable)
}
@@ -574,8 +593,8 @@ public class DefaultMessageComposerOverlappingContent : ConstraintLayout, Messag
R.layout.stream_ui_message_composer_default_center_overlap_floating_locked, this, false
).also { imageView ->
(imageView as ImageView).apply {
- val iconDrawable = style.audioRecordingLockedIconDrawable.applyTint(
- style.audioRecordingLockedIconDrawableTint
+ val iconDrawable = style.audioRecordingFloatingLockedIconDrawable.applyTint(
+ style.audioRecordingFloatingLockedIconDrawableTint
)
setImageDrawable(iconDrawable)
}
@@ -606,7 +625,7 @@ public class DefaultMessageComposerOverlappingContent : ConstraintLayout, Messag
).also {
it.findViewById(R.id.holdToRecordText).apply {
text = style.audioRecordingHoldToRecordText
- setTextColor(style.audioRecordingHoldToRecordTextColor)
+ setTextStyle(style.audioRecordingHoldToRecordTextStyle)
background = style.audioRecordingHoldToRecordBackgroundDrawable.applyTint(
style.audioRecordingHoldToRecordBackgroundDrawableTint
)
diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/composer/content/DefaultMessageComposerTrailingContent.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/composer/content/DefaultMessageComposerTrailingContent.kt
index 7f22d32c8a7..d7a9a28ea58 100644
--- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/composer/content/DefaultMessageComposerTrailingContent.kt
+++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/composer/content/DefaultMessageComposerTrailingContent.kt
@@ -104,6 +104,14 @@ public class DefaultMessageComposerTrailingContent : FrameLayout, MessageCompose
disabledColor = context.getColorCompat(R.color.stream_ui_grey_gainsboro),
)
}
+ binding.recordAudioButton.setImageDrawable(style.audioRecordingButtonIconDrawable)
+ style.buttonIconDrawableTintColor?.let { tintColor ->
+ binding.recordAudioButton.imageTintList = getColorList(
+ normalColor = tintColor,
+ selectedColor = tintColor,
+ disabledColor = context.getColorCompat(R.color.stream_ui_grey_gainsboro),
+ )
+ }
binding.cooldownBadgeTextView.setTextStyle(style.cooldownTimerTextStyle)
binding.cooldownBadgeTextView.background = style.cooldownTimerBackgroundDrawable
@@ -145,6 +153,10 @@ public class DefaultMessageComposerTrailingContent : FrameLayout, MessageCompose
else -> true
}
sendMessageButton.isEnabled = style.sendMessageButtonEnabled && canSendMessage && hasValidContent
+ recordAudioButton.isEnabled = style.sendMessageButtonEnabled &&
+ canSendMessage &&
+ canUploadRecording &&
+ canUploadFile
recordAudioButton.isVisible = when (style.audioRecordingButtonVisible) {
true -> when (style.audioRecordingButtonPreferred) {
true -> canUploadFile && canUploadRecording && canSendMessage && !isInEditMode && !hasTextInput
diff --git a/stream-chat-android-ui-components/src/main/res/layout/stream_ui_message_composer_default_center_overlap_content.xml b/stream-chat-android-ui-components/src/main/res/layout/stream_ui_message_composer_default_center_overlap_content.xml
index e340a3d3ede..ab3d4a253d5 100644
--- a/stream-chat-android-ui-components/src/main/res/layout/stream_ui_message_composer_default_center_overlap_content.xml
+++ b/stream-chat-android-ui-components/src/main/res/layout/stream_ui_message_composer_default_center_overlap_content.xml
@@ -72,6 +72,7 @@
android:layout_marginEnd="96dp"
android:gravity="center"
android:text="@string/stream_ui_message_composer_slide_to_cancel"
+ android:textColor="@color/stream_ui_text_color_secondary"
app:drawableStartCompat="@drawable/stream_ui_arrow_left"
app:layout_constraintBottom_toBottomOf="@id/recordingPlayback"
app:layout_constraintEnd_toEndOf="parent"
diff --git a/stream-chat-android-ui-components/src/main/res/layout/stream_ui_message_composer_default_center_overlap_floating_hold.xml b/stream-chat-android-ui-components/src/main/res/layout/stream_ui_message_composer_default_center_overlap_floating_hold.xml
index c24fae72b58..7e4f1edff59 100644
--- a/stream-chat-android-ui-components/src/main/res/layout/stream_ui_message_composer_default_center_overlap_floating_hold.xml
+++ b/stream-chat-android-ui-components/src/main/res/layout/stream_ui_message_composer_default_center_overlap_floating_hold.xml
@@ -16,11 +16,9 @@
-->
diff --git a/stream-chat-android-ui-components/src/main/res/values/attrs_message_composer_view.xml b/stream-chat-android-ui-components/src/main/res/values/attrs_message_composer_view.xml
index e729209e65f..2b6c5ac7e87 100644
--- a/stream-chat-android-ui-components/src/main/res/values/attrs_message_composer_view.xml
+++ b/stream-chat-android-ui-components/src/main/res/values/attrs_message_composer_view.xml
@@ -130,19 +130,38 @@
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -177,6 +196,10 @@
+
+
+
+
diff --git a/stream-chat-android-ui-components/src/main/res/values/dimens.xml b/stream-chat-android-ui-components/src/main/res/values/dimens.xml
index f16696a8c3a..6ec9bab9a84 100644
--- a/stream-chat-android-ui-components/src/main/res/values/dimens.xml
+++ b/stream-chat-android-ui-components/src/main/res/values/dimens.xml
@@ -193,5 +193,6 @@
52dp
52dp
48dp
+ 8dp
diff --git a/stream-chat-android-ui-components/src/main/res/values/styles.xml b/stream-chat-android-ui-components/src/main/res/values/styles.xml
index 8b282dcd84c..d2a63c39f8c 100644
--- a/stream-chat-android-ui-components/src/main/res/values/styles.xml
+++ b/stream-chat-android-ui-components/src/main/res/values/styles.xml
@@ -1044,19 +1044,26 @@
- 2dp
- - false
- - false
- @string/stream_ui_message_composer_hold_to_record
+ - @dimen/stream_ui_text_medium
- @color/stream_ui_white_snow
+ - bold
+ - @font/stream_roboto_medium
- @drawable/stream_ui_message_composer_audio_record_hold_background
- @null
- @string/stream_ui_message_composer_slide_to_cancel
- - @drawable/stream_ui_ic_mic
- - @null
- - @drawable/stream_ui_ic_mic_lock
- - @null
- - @drawable/stream_ui_ic_mic_locked
- - @null
+ - @dimen/stream_ui_text_medium
+ - @color/stream_ui_text_color_secondary
+ - normal
+ - @font/stream_roboto_medium
+ - @drawable/stream_ui_ic_mic
+ - @color/stream_ui_accent_blue
+ - @drawable/stream_ui_message_composer_audio_record_mic_background
+ - @null
+ - @drawable/stream_ui_ic_mic_lock
+ - @null
+ - @drawable/stream_ui_ic_mic_locked
+ - @null
- true
@@ -1083,6 +1090,10 @@
- true
- @drawable/stream_ui_ic_send_message
+ - false
+ - true
+ - false
+ - @drawable/stream_ui_ic_mic
- @dimen/stream_ui_text_large
- @color/stream_ui_literal_white
- @drawable/stream_ui_cooldown_badge_background