diff --git a/.fvmrc b/.fvmrc
new file mode 100644
index 00000000..a6427fd2
--- /dev/null
+++ b/.fvmrc
@@ -0,0 +1,4 @@
+{
+ "flutter": "stable",
+ "flavors": {}
+}
\ No newline at end of file
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index e001cdc0..175311fa 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -80,7 +80,7 @@ jobs:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
- flutter-version: '3.13.9'
+ flutter-version: '3.27.1'
channel: 'stable'
- name: Install dependencies
run: flutter pub get
@@ -96,7 +96,7 @@ jobs:
- name: Install Flutter
uses: subosito/flutter-action@v2
with:
- flutter-version: '3.13.9'
+ flutter-version: '3.27.1'
channel: 'stable'
- name: Check Publish Warnings
run: dart pub publish --dry-run
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index d918d4b7..ad96db88 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -20,7 +20,7 @@ jobs:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
- flutter-version: "3.13.9"
+ flutter-version: "3.27.1"
channel: "stable"
- name: Install dependencies
run: flutter pub get
diff --git a/assets/svg/avatar-default.svg b/assets/svg/avatar-default.svg
new file mode 100644
index 00000000..aeaca1f0
--- /dev/null
+++ b/assets/svg/avatar-default.svg
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/lib/blip_ds.dart b/lib/blip_ds.dart
index f819e972..ffd0d289 100644
--- a/lib/blip_ds.dart
+++ b/lib/blip_ds.dart
@@ -1,4 +1,6 @@
-library blip_ds;
+library;
+
+export 'package:scroll_to_index/scroll_to_index.dart' show AutoScrollController;
export 'src/enums/ds_align.enum.dart' show DSAlign;
export 'src/enums/ds_border_radius.enum.dart' show DSBorderRadius;
@@ -58,6 +60,7 @@ export 'src/models/interactive_message/ds_interactive_message_video.model.dart'
show DSInteractiveMessageVideo;
export 'src/services/ds_auth.service.dart' show DSAuthService;
export 'src/services/ds_bottom_sheet.service.dart' show DSBottomSheetService;
+export 'src/services/ds_context.service.dart' show DSContextService;
export 'src/services/ds_dialog.service.dart' show DSDialogService;
export 'src/services/ds_file.service.dart' show DSFileService;
export 'src/services/ds_localization.service.dart' show DSLocalizationService;
@@ -67,6 +70,7 @@ export 'src/services/ds_toast.service.dart' show DSToastService;
export 'src/themes/colors/ds_colors.theme.dart' show DSColors;
export 'src/themes/colors/ds_dark_colors.theme.dart' show DSDarkColors;
export 'src/themes/colors/ds_linear_gradient.theme.dart' show DSLinearGradient;
+export 'src/themes/enums/ds_theme_type.enum.dart' show DSThemeType;
export 'src/themes/icons/ds_icons.dart' show DSIcons;
export 'src/themes/system_overlay/ds_system_overlay.style.dart'
show DSSystemOverlayStyle;
@@ -89,6 +93,7 @@ export 'src/themes/texts/styles/ds_headline_large_text_style.theme.dart'
show DSHeadlineLargeTextStyle;
export 'src/themes/texts/styles/ds_headline_small_text_style.theme.dart'
show DSHeadlineSmallTextStyle;
+export 'src/themes/texts/styles/ds_text_style.theme.dart' show DSTextStyle;
export 'src/themes/texts/utils/ds_font_families.theme.dart' show DSFontFamilies;
export 'src/themes/texts/utils/ds_font_weights.theme.dart' show DSFontWeights;
export 'src/utils/ds_animate.util.dart' show DSAnimate;
@@ -133,6 +138,8 @@ export 'src/widgets/chat/audio/ds_audio_message_bubble.widget.dart'
export 'src/widgets/chat/audio/ds_audio_player.widget.dart' show DSAudioPlayer;
export 'src/widgets/chat/calls/ds_end_calls_message_bubble.widget.dart'
show DSEndCallsMessageBubble;
+export 'src/widgets/chat/ds_active_campaign_message_bubble.widget.dart'
+ show DSActiveCampaignMessageBubble;
export 'src/widgets/chat/ds_application_json_message_bubble.widget.dart'
show DSApplicationJsonMessageBubble;
export 'src/widgets/chat/ds_carrousel.widget.dart' show DSCarrousel;
@@ -217,3 +224,5 @@ export 'src/widgets/utils/ds_group_card.widget.dart' show DSGroupCard;
export 'src/widgets/utils/ds_header.widget.dart' show DSHeader;
export 'src/widgets/utils/ds_progress_bar.widget.dart' show DSProgressBar;
export 'src/widgets/utils/ds_user_avatar.widget.dart' show DSUserAvatar;
+export 'src/widgets/utils/reply_content/ds_reply_preview.widget.dart'
+ show DSReplyPreview;
diff --git a/lib/src/controllers/ds_video_player.controller.dart b/lib/src/controllers/ds_video_player.controller.dart
index 578ddea5..405778e7 100644
--- a/lib/src/controllers/ds_video_player.controller.dart
+++ b/lib/src/controllers/ds_video_player.controller.dart
@@ -5,6 +5,7 @@ import 'package:get/get.dart';
import 'package:video_player/video_player.dart';
import '../services/ds_auth.service.dart';
+import '../services/ds_navigation.service.dart';
import '../themes/colors/ds_colors.theme.dart';
import '../widgets/chat/video/ds_video_error.dialog.dart';
@@ -66,7 +67,7 @@ class DSVideoPlayerController extends GetxController {
}
Future _showErrorDialog() async {
- Get.back();
+ NavigationService.pop();
Get.delete();
await DSVideoErrorDialog.show(
diff --git a/lib/src/enums/ds_delivery_report_status.enum.dart b/lib/src/enums/ds_delivery_report_status.enum.dart
index 14713945..e975cfc7 100644
--- a/lib/src/enums/ds_delivery_report_status.enum.dart
+++ b/lib/src/enums/ds_delivery_report_status.enum.dart
@@ -7,5 +7,6 @@ enum DSDeliveryReportStatus {
consumed,
failed,
sending,
+ dispatched,
unknown,
}
diff --git a/lib/src/models/ds_active_message.model.dart b/lib/src/models/ds_active_message.model.dart
new file mode 100644
index 00000000..6836d3b8
--- /dev/null
+++ b/lib/src/models/ds_active_message.model.dart
@@ -0,0 +1,33 @@
+import 'ds_active_message_template.model.dart';
+import 'ds_active_message_template_content.model.dart';
+
+class DSActiveMessage {
+ DSActiveMessage({
+ required this.type,
+ this.template,
+ this.templateContent,
+ });
+
+ final String type;
+ final DSActiveMessageTemplate? template;
+ final DSActiveMessageTemplateContent? templateContent;
+
+ factory DSActiveMessage.fromJson(Map json) {
+ return DSActiveMessage(
+ type: json['type'],
+ template: json['template'] != null
+ ? DSActiveMessageTemplate.fromJson(json['template'])
+ : null,
+ templateContent:
+ DSActiveMessageTemplateContent.fromJson(json['templateContent']),
+ );
+ }
+
+ Map toJson() {
+ return {
+ 'type': type,
+ 'template': template,
+ 'templateContent': templateContent,
+ };
+ }
+}
diff --git a/lib/src/models/ds_active_message_template.model.dart b/lib/src/models/ds_active_message_template.model.dart
new file mode 100644
index 00000000..8c783924
--- /dev/null
+++ b/lib/src/models/ds_active_message_template.model.dart
@@ -0,0 +1,31 @@
+class DSActiveMessageTemplate {
+ const DSActiveMessageTemplate({
+ this.name,
+ this.language,
+ this.components,
+ });
+
+ final String? name;
+ final Map? language;
+ final List