diff --git a/CHANGELOG.md b/CHANGELOG.md index 8085b8e..30b1354 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +## v1.0.0-beta.6 (Nov 29, 2024) + +### Features +- Added a `chooseMedia` parameter in `SendbirdUIKit.init()` + +### Improvements +- Fixed to support tree-shake-icons option when building applications +- Fixed some UI bugs + ## v1.0.0-beta.5 (Nov 15, 2024) ### Features diff --git a/README.md b/README.md index 8f4e14d..10aac29 100644 --- a/README.md +++ b/README.md @@ -38,8 +38,8 @@ Add following dependencies and fonts for `SendbirdIcons` in `pubspec.yaml`. ```yaml dependencies: - sendbird_uikit: ^1.0.0-beta.5 - sendbird_chat_sdk: ^4.2.28 + sendbird_uikit: ^1.0.0-beta.6 + sendbird_chat_sdk: ^4.2.29 flutter: fonts: diff --git a/lib/src/internal/component/base/sbu_base_component.dart b/lib/src/internal/component/base/sbu_base_component.dart index e87eff0..2b8ff28 100644 --- a/lib/src/internal/component/base/sbu_base_component.dart +++ b/lib/src/internal/component/base/sbu_base_component.dart @@ -345,6 +345,10 @@ mixin SBUBaseComponent { return SendbirdUIKit().choosePhoto != null; } + bool canChooseMedia() { + return SendbirdUIKit().chooseMedia != null; + } + bool canChooseDocument() { return SendbirdUIKit().chooseDocument != null; } @@ -406,10 +410,6 @@ mixin SBUBaseComponent { return (message.isReplyToChannel && message.parentMessage != null); } - bool isReplyMessage(BaseMessage message) { - return (!message.isReplyToChannel && message.parentMessage != null); - } - // Test bool isThemeTestOn() { return false; diff --git a/lib/src/internal/component/basic/sbu_bottom_sheet_menu_component.dart b/lib/src/internal/component/basic/sbu_bottom_sheet_menu_component.dart index c074f2a..ea94f6d 100644 --- a/lib/src/internal/component/basic/sbu_bottom_sheet_menu_component.dart +++ b/lib/src/internal/component/basic/sbu_bottom_sheet_menu_component.dart @@ -51,56 +51,59 @@ class SBUBottomSheetMenuComponentState final errorColorIndex = widget.errorColorIndex; final disabledNames = widget.disabledNames; - return Container( - decoration: BoxDecoration( - color: isLightTheme ? SBUColors.background50 : SBUColors.background500, - borderRadius: const BorderRadius.only( - topLeft: Radius.circular(8), - topRight: Radius.circular(8), + return SafeArea( + child: Container( + decoration: BoxDecoration( + color: + isLightTheme ? SBUColors.background50 : SBUColors.background500, + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(8), + topRight: Radius.circular(8), + ), ), - ), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - _getReactionWidget(channel, message, isLightTheme), - Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: buttonNames.mapIndexed((index, iconName) { - final isError = (errorColorIndex == index); - final isDisabled = - disabledNames?.any((name) => name == buttonNames[index]) ?? - false; + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + _getReactionWidget(channel, message, isLightTheme), + Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: buttonNames.mapIndexed((index, iconName) { + final isError = (errorColorIndex == index); + final isDisabled = + disabledNames?.any((name) => name == buttonNames[index]) ?? + false; - return Material( - color: Colors.transparent, - child: isDisabled - ? _menuItem( - index: index, - iconNames: iconNames, - buttonNames: buttonNames, - isError: isError, - isDisabled: isDisabled, - isLightTheme: isLightTheme, - ) - : InkWell( - onTap: () { - Navigator.pop(context); - onButtonClicked(buttonNames[index]); - }, - child: _menuItem( + return Material( + color: Colors.transparent, + child: isDisabled + ? _menuItem( index: index, iconNames: iconNames, buttonNames: buttonNames, isError: isError, isDisabled: isDisabled, isLightTheme: isLightTheme, + ) + : InkWell( + onTap: () { + Navigator.pop(context); + onButtonClicked(buttonNames[index]); + }, + child: _menuItem( + index: index, + iconNames: iconNames, + buttonNames: buttonNames, + isError: isError, + isDisabled: isDisabled, + isLightTheme: isLightTheme, + ), ), - ), - ); - }).toList(), - ), - ], + ); + }).toList(), + ), + ], + ), ), ); } @@ -227,6 +230,7 @@ class SBUBottomSheetMenuComponentState Navigator.pop(context); await showModalBottomSheet( context: context, + isScrollControlled: true, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(8), diff --git a/lib/src/internal/component/basic/sbu_reaction_component.dart b/lib/src/internal/component/basic/sbu_reaction_component.dart index 3d8f5ca..87d14c1 100644 --- a/lib/src/internal/component/basic/sbu_reaction_component.dart +++ b/lib/src/internal/component/basic/sbu_reaction_component.dart @@ -122,6 +122,7 @@ class SBUReactionComponentState extends State { if (reaction.key == addReactionKey) { await showModalBottomSheet( context: context, + isScrollControlled: true, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(8), @@ -144,6 +145,7 @@ class SBUReactionComponentState extends State { if (reaction.key != addReactionKey) { await showModalBottomSheet( context: context, + isScrollControlled: true, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(8), @@ -157,7 +159,6 @@ class SBUReactionComponentState extends State { selectedReaction: reaction, ); }, - isScrollControlled: true, // Check ); } }, diff --git a/lib/src/internal/component/module/sbu_message_input_component.dart b/lib/src/internal/component/module/sbu_message_input_component.dart index f6bfb1f..5c7512b 100644 --- a/lib/src/internal/component/module/sbu_message_input_component.dart +++ b/lib/src/internal/component/module/sbu_message_input_component.dart @@ -211,6 +211,7 @@ class SBUMessageInputComponentState extends State { widget.unfocus(); await showModalBottomSheet( context: context, + isScrollControlled: true, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(8), @@ -224,7 +225,7 @@ class SBUMessageInputComponentState extends State { SBUIcons.camera, if (widget.canTakeVideo()) SBUIcons.camera, - if (widget.canChoosePhoto()) + if (widget.canChooseMedia()) SBUIcons.photo, if (widget.canChooseDocument()) SBUIcons.document, @@ -234,7 +235,7 @@ class SBUMessageInputComponentState extends State { strings.takePhoto, if (widget.canTakeVideo()) strings.takeVideo, - if (widget.canChoosePhoto()) + if (widget.canChooseMedia()) strings.gallery, if (widget.canChooseDocument()) strings.document, @@ -253,7 +254,7 @@ class SBUMessageInputComponentState extends State { } else if (buttonName == strings.gallery) { fileInfo = await SendbirdUIKit() - .choosePhoto!(); + .chooseMedia!(); } else if (buttonName == strings.document) { fileInfo = await SendbirdUIKit() diff --git a/lib/src/internal/component/module/sbu_message_list_item_component.dart b/lib/src/internal/component/module/sbu_message_list_item_component.dart index f3c7732..b026de4 100644 --- a/lib/src/internal/component/module/sbu_message_list_item_component.dart +++ b/lib/src/internal/component/module/sbu_message_list_item_component.dart @@ -2,6 +2,7 @@ import 'dart:async'; +import 'package:collection/collection.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; @@ -559,6 +560,7 @@ class SBUMessageListItemComponentState widget.unfocus(); await showModalBottomSheet( context: context, + isScrollControlled: true, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(8), @@ -590,7 +592,7 @@ class SBUMessageListItemComponentState children: [ if (isSameMinuteAtPreviousMessage == false) if (message.isReplyToChannel == false && - message.parentMessage == null) + message.parentMessageId == null) Padding( padding: const EdgeInsets.only(left: 12, bottom: 4), child: SBUTextComponent( @@ -611,6 +613,7 @@ class SBUMessageListItemComponentState widget.unfocus(); await showModalBottomSheet( context: context, + isScrollControlled: true, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(8), @@ -798,6 +801,7 @@ class SBUMessageListItemComponentState widget.unfocus(); await showModalBottomSheet( context: context, + isScrollControlled: true, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(8), @@ -882,6 +886,7 @@ class SBUMessageListItemComponentState widget.unfocus(); await showModalBottomSheet( context: context, + isScrollControlled: true, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(8), @@ -1012,6 +1017,7 @@ class SBUMessageListItemComponentState widget.unfocus(); await showModalBottomSheet( context: context, + isScrollControlled: true, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(8), @@ -1043,7 +1049,7 @@ class SBUMessageListItemComponentState children: [ if (isSameMinuteAtPreviousMessage == false) if (message.isReplyToChannel == false && - message.parentMessage == null) + message.parentMessageId == null) Padding( padding: const EdgeInsets.only(left: 12, bottom: 4), child: SBUTextComponent( @@ -1068,6 +1074,7 @@ class SBUMessageListItemComponentState widget.unfocus(); await showModalBottomSheet( context: context, + isScrollControlled: true, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(8), @@ -1266,6 +1273,7 @@ class SBUMessageListItemComponentState widget.unfocus(); await showModalBottomSheet( context: context, + isScrollControlled: true, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(8), @@ -1360,6 +1368,7 @@ class SBUMessageListItemComponentState widget.unfocus(); await showModalBottomSheet( context: context, + isScrollControlled: true, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(8), @@ -1478,10 +1487,6 @@ class SBUMessageListItemComponentState child: child, ); - if (widget.isReplyMessage(message)) { - result = Container(); // Check - } - return result; } @@ -1633,9 +1638,18 @@ class SBUMessageListItemComponentState Widget result = child; if (widget.isReplyMessageToChannel(message)) { + BaseMessage parentMessage = message.parentMessage!; + if (message.parentMessageId != null) { + final updatableMessage = collection.messageList + .firstWhereOrNull((m) => m.messageId == message.parentMessageId); + if (updatableMessage != null) { + parentMessage = updatableMessage; + } + } + Widget parentMessageItemWidget = _parentMessageItemWidget( collection: collection, - message: message.parentMessage!, + message: parentMessage, isSameMinuteAtPreviousMessage: isSameMinuteAtPreviousMessage, isSameMinuteAtNextMessage: isSameMinuteAtNextMessage, timeString: timeString, @@ -1683,8 +1697,6 @@ class SBUMessageListItemComponentState ), ], ); - } else if (widget.isReplyMessage(message)) { - result = Container(); // Check } return result; diff --git a/lib/src/internal/provider/sbu_message_collection_provider.dart b/lib/src/internal/provider/sbu_message_collection_provider.dart index 8c82ab2..2329a9c 100644 --- a/lib/src/internal/provider/sbu_message_collection_provider.dart +++ b/lib/src/internal/provider/sbu_message_collection_provider.dart @@ -32,7 +32,7 @@ class SBUMessageCollectionProvider with ChangeNotifier { if (params != null && params.replyType != null) { replyType = params.replyType; } else if (SBUReplyManager().isQuoteReplyAvailable(channel)) { - replyType = ReplyType.all; + replyType = ReplyType.onlyReplyToChannel; } final collection = MessageCollection( diff --git a/lib/src/public/resource/sbu_icons.dart b/lib/src/public/resource/sbu_icons.dart index 93850d2..de332af 100644 --- a/lib/src/public/resource/sbu_icons.dart +++ b/lib/src/public/resource/sbu_icons.dart @@ -18,126 +18,126 @@ import 'package:flutter/widgets.dart'; /// SBUIcons class SBUIcons { static const _kFontFam = 'SendbirdIcons'; - static String? _kFontPkg; + static const String? _kFontPkg = null; static IconData add = - IconData(0xe800, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe800, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData archive = - IconData(0xe801, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe801, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData arrowLeft = - IconData(0xe802, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe802, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData ban = - IconData(0xe803, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe803, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData broadcast = - IconData(0xe804, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe804, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData camera = - IconData(0xe805, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe805, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData channels = - IconData(0xe806, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe806, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData chatFilled = - IconData(0xe807, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe807, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData chatHide = - IconData(0xe808, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe808, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData chatShow = - IconData(0xe809, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe809, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData chat = - IconData(0xe80a, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe80a, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData checkboxOff = - IconData(0xe80b, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe80b, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData checkboxOn = - IconData(0xe80c, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe80c, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData chevronDown = - IconData(0xe80d, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe80d, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData chevronRight = - IconData(0xe80e, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe80e, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData close = - IconData(0xe80f, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe80f, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData copy = - IconData(0xe810, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe810, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData create = - IconData(0xe811, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe811, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData delete = - IconData(0xe812, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe812, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData document = - IconData(0xe813, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe813, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData doneAll = - IconData(0xe814, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe814, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData done = - IconData(0xe815, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe815, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData download = - IconData(0xe816, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe816, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData edit = - IconData(0xe817, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe817, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData emoji = - IconData(0xe818, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe818, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData error = - IconData(0xe819, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe819, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData fileAudio = - IconData(0xe81a, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe81a, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData fileDocument = - IconData(0xe81b, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe81b, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData freeze = - IconData(0xe81c, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe81c, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData gif = - IconData(0xe81d, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe81d, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData info = - IconData(0xe81e, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe81e, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData leave = - IconData(0xe81f, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe81f, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData moderations = - IconData(0xe820, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe820, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData more = - IconData(0xe821, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe821, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData message = - IconData(0xe822, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe822, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData members = - IconData(0xe823, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe823, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData mute = - IconData(0xe824, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe824, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData notificationsFilled = - IconData(0xe825, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe825, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData notificationsOffFilled = - IconData(0xe826, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe826, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData notifications = - IconData(0xe827, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe827, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData operator = - IconData(0xe828, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe828, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData photo = - IconData(0xe829, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe829, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData play = - IconData(0xe82a, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe82a, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData plus = - IconData(0xe82b, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe82b, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData question = - IconData(0xe82c, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe82c, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData remove = - IconData(0xe82d, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe82d, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData refresh = - IconData(0xe82e, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe82e, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData replyFilled = - IconData(0xe82f, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe82f, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData reply = - IconData(0xe830, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe830, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData send = - IconData(0xe831, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe831, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData search = - IconData(0xe832, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe832, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData settingFilled = - IconData(0xe833, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe833, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData spinner = - IconData(0xe834, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe834, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData theme = - IconData(0xe835, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe835, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData streaming = - IconData(0xe836, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe836, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData supergroup = - IconData(0xe837, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe837, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData thumbnailNone = - IconData(0xe838, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe838, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData user = - IconData(0xe839, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe839, fontFamily: _kFontFam, fontPackage: _kFontPkg); static IconData unarchive = - IconData(0xe83a, fontFamily: _kFontFam, fontPackage: _kFontPkg); + const IconData(0xe83a, fontFamily: _kFontFam, fontPackage: _kFontPkg); /// Sets icons. static void setIcons({ diff --git a/lib/src/public/screen/group_channel/channel/sbu_group_channel_information_screen.dart b/lib/src/public/screen/group_channel/channel/sbu_group_channel_information_screen.dart index aeccb0d..e743d81 100644 --- a/lib/src/public/screen/group_channel/channel/sbu_group_channel_information_screen.dart +++ b/lib/src/public/screen/group_channel/channel/sbu_group_channel_information_screen.dart @@ -77,6 +77,7 @@ class SBUGroupChannelInformationScreenState onButtonClicked: () async { await showModalBottomSheet( context: context, + isScrollControlled: true, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(8), diff --git a/lib/src/public/screen/group_channel/channel_list/sbu_group_channel_settings_screen.dart b/lib/src/public/screen/group_channel/channel_list/sbu_group_channel_settings_screen.dart index 9d5f6f2..0cc3d7e 100644 --- a/lib/src/public/screen/group_channel/channel_list/sbu_group_channel_settings_screen.dart +++ b/lib/src/public/screen/group_channel/channel_list/sbu_group_channel_settings_screen.dart @@ -84,6 +84,7 @@ class SBUGroupChannelSettingsScreenState onButtonClicked: () async { await showModalBottomSheet( context: context, + isScrollControlled: true, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(8), diff --git a/lib/src/public/sendbird_uikit.dart b/lib/src/public/sendbird_uikit.dart index 6dd6a2f..8ae7089 100644 --- a/lib/src/public/sendbird_uikit.dart +++ b/lib/src/public/sendbird_uikit.dart @@ -18,7 +18,7 @@ import 'package:sendbird_uikit/src/internal/utils/sbu_reply_manager.dart'; /// SendbirdUIKit class SendbirdUIKit { /// UIKit version - static const version = '1.0.0-beta.5'; + static const version = '1.0.0-beta.6'; SendbirdUIKit._(); @@ -40,6 +40,10 @@ class SendbirdUIKit { Future Function()? get choosePhoto => _choosePhoto; + Future Function()? _chooseMedia; + + Future Function()? get chooseMedia => _chooseMedia; + Future Function()? _chooseDocument; Future Function()? get chooseDocument => _chooseDocument; @@ -91,6 +95,7 @@ class SendbirdUIKit { Future Function()? takePhoto, Future Function()? takeVideo, Future Function()? choosePhoto, + Future Function()? chooseMedia, Future Function()? chooseDocument, Future Function( String fileUrl, @@ -116,6 +121,7 @@ class SendbirdUIKit { _uikit._takePhoto = takePhoto; _uikit._takeVideo = takeVideo; _uikit._choosePhoto = choosePhoto; + _uikit._chooseMedia = chooseMedia; _uikit._chooseDocument = chooseDocument; _uikit._downloadFile = downloadFile; diff --git a/pubspec.yaml b/pubspec.yaml index 9b279d9..2116e73 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: sendbird_uikit description: With Sendbird UIKit for Flutter, you can easily build an in-app chat with all the essential messaging features. -version: 1.0.0-beta.5 +version: 1.0.0-beta.6 homepage: https://sendbird.com repository: https://github.com/sendbird/sendbird-uikit-flutter documentation: https://sendbird.com/docs/chat/uikit/v3/flutter/overview @@ -17,7 +17,7 @@ dependencies: flutter: sdk: flutter - sendbird_chat_sdk: ^4.2.28 + sendbird_chat_sdk: ^4.2.29 provider: ^6.1.2 intl: '>=0.18.1 <1.0.0' collection: ^1.18.0