diff --git a/.github/workflows/legacy_version_analyze.yml b/.github/workflows/legacy_version_analyze.yml new file mode 100644 index 00000000..89c195df --- /dev/null +++ b/.github/workflows/legacy_version_analyze.yml @@ -0,0 +1,71 @@ +name: legacy_version_analyze + +env: + # Note: The versions below should be manually updated after a new stable + # version comes out. + flutter_version: "3.7.12" + +on: + push: + branches: + - master + - develop + paths: + - 'packages/**' + - '.github/workflows/legacy_version_analyze.yml' + pull_request: + branches: + - master + - develop + paths: + - 'packages/**' + - '.github/workflows/legacy_version_analyze.yml' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + # Does a sanity check that packages at least pass analysis on the N-1 + # versions of Flutter stable if the package claims to support that version. + # This is to minimize accidentally making changes that break old versions + # (which we don't commit to supporting, but don't want to actively break) + # without updating the constraints. + analyze_legacy_versions: + timeout-minutes: 15 + if: github.event.pull_request.draft == false + runs-on: ubuntu-latest + steps: + - name: "Git Checkout" + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: "Install Flutter" + uses: subosito/flutter-action@v2 + with: + cache: true + flutter-version: ${{ env.flutter_version }} + + - name: "Install Tools" + run: flutter pub global activate melos + + - name: "Bootstrap Workspace" + run: melos bootstrap --verbose + + # Only analyze lib/; non-client code doesn't need to work on + # all supported legacy version. + - name: "Stream Chat Analyze" + run: cd packages/stream_chat/lib && dart analyze --fatal-infos . + + - name: "Stream Chat Flutter Core Analyze" + run: cd packages/stream_chat_flutter_core/lib && dart analyze --fatal-infos . + + - name: "Stream Chat Flutter Analyze" + run: cd packages/stream_chat_flutter/lib && dart analyze --fatal-infos . + + - name: "Stream Chat Persistence Analyze" + run: cd packages/stream_chat_persistence/lib && dart analyze --fatal-infos . + + - name: "Stream Chat Localizations Analyze" + run: cd packages/stream_chat_localizations/lib && dart analyze --fatal-infos . \ No newline at end of file diff --git a/packages/stream_chat/CHANGELOG.md b/packages/stream_chat/CHANGELOG.md index e8f5c67c..21f6caa5 100644 --- a/packages/stream_chat/CHANGELOG.md +++ b/packages/stream_chat/CHANGELOG.md @@ -2,7 +2,7 @@ 🔄 Changed -- Updated minimum supported `SDK` version to Dart 2.18 +- Updated minimum supported `SDK` version to Dart 2.19 ## 6.4.0 diff --git a/packages/stream_chat/pubspec.yaml b/packages/stream_chat/pubspec.yaml index ebd77c17..b52f7bfd 100644 --- a/packages/stream_chat/pubspec.yaml +++ b/packages/stream_chat/pubspec.yaml @@ -6,29 +6,29 @@ repository: https://github.com/GetStream/stream-chat-flutter issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues environment: - sdk: '>=2.18.0 <4.0.0' + sdk: '>=2.19.0 <4.0.0' dependencies: async: ^2.10.0 collection: ^1.17.0 - dio: ^5.2.0 + dio: ^5.2.1+1 equatable: ^2.0.5 freezed_annotation: ^2.2.0 http_parser: ^4.0.2 jose: ^0.3.3 - json_annotation: ^4.8.0 - logging: ^1.1.1 + json_annotation: ^4.8.1 + logging: ^1.2.0 meta: ^1.8.0 mime: ^1.0.4 rate_limiter: ^1.0.0 rxdart: ^0.27.7 - synchronized: ^3.0.0 + synchronized: ^3.1.0 uuid: ^3.0.7 - web_socket_channel: ^2.3.0 + web_socket_channel: ^2.4.0 dev_dependencies: build_runner: ^2.3.3 - freezed: ^2.3.2 - json_serializable: ^6.6.1 + freezed: ^2.4.0 + json_serializable: ^6.6.2 mocktail: ^0.3.0 - test: ^1.24.1 + test: ^1.24.3 diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index 0e27b8f1..e00716ed 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -2,7 +2,7 @@ 🔄 Changed -- Updated minimum supported `SDK` version to Flutter 3.3/Dart 2.18 +- Updated minimum supported `SDK` version to Flutter 3.7/Dart 2.19 ## 6.5.0 @@ -104,7 +104,6 @@ - Updated `chewie` dependency to `^1.6.0`. - Updated `share_plus` dependency to `^7.0.2`. - Deprecated `StreamUserItem` in favor of `StreamUserListTile`. -- Updated `jiffy` dependency to `^6.2.1`. ## 6.4.0 diff --git a/packages/stream_chat_flutter/lib/src/channel/channel_info.dart b/packages/stream_chat_flutter/lib/src/channel/channel_info.dart index abab5ad9..5c32d278 100644 --- a/packages/stream_chat_flutter/lib/src/channel/channel_info.dart +++ b/packages/stream_chat_flutter/lib/src/channel/channel_info.dart @@ -106,10 +106,9 @@ class _ConnectedTitleState extends StatelessWidget { style: textStyle, ); } else { - final lastActive = otherMember.user?.lastActive ?? DateTime.now(); alternativeWidget = Text( '${context.translations.userLastOnlineText} ' - '${Jiffy.parseFromDateTime(lastActive).fromNow()}', + '${Jiffy(otherMember.user?.lastActive).fromNow()}', style: textStyle, ); } diff --git a/packages/stream_chat_flutter/lib/src/channel/channel_preview.dart b/packages/stream_chat_flutter/lib/src/channel/channel_preview.dart index f64b9dc9..ae6247ea 100644 --- a/packages/stream_chat_flutter/lib/src/channel/channel_preview.dart +++ b/packages/stream_chat_flutter/lib/src/channel/channel_preview.dart @@ -349,16 +349,16 @@ class _Date extends StatelessWidget { if (lastMessageAt.millisecondsSinceEpoch >= startOfDay.millisecondsSinceEpoch) { - stringDate = Jiffy.parseFromDateTime(lastMessageAt.toLocal()).jm; + stringDate = Jiffy(lastMessageAt.toLocal()).jm; } else if (lastMessageAt.millisecondsSinceEpoch >= startOfDay .subtract(const Duration(days: 1)) .millisecondsSinceEpoch) { stringDate = context.translations.yesterdayLabel; } else if (startOfDay.difference(lastMessageAt).inDays < 7) { - stringDate = Jiffy.parseFromDateTime(lastMessageAt.toLocal()).EEEE; + stringDate = Jiffy(lastMessageAt.toLocal()).EEEE; } else { - stringDate = Jiffy.parseFromDateTime(lastMessageAt.toLocal()).yMd; + stringDate = Jiffy(lastMessageAt.toLocal()).yMd; } return Text( diff --git a/packages/stream_chat_flutter/lib/src/localization/translations.dart b/packages/stream_chat_flutter/lib/src/localization/translations.dart index e6bb87d9..61c3441a 100644 --- a/packages/stream_chat_flutter/lib/src/localization/translations.dart +++ b/packages/stream_chat_flutter/lib/src/localization/translations.dart @@ -611,15 +611,13 @@ class DefaultTranslations implements Translations { } else if (date == yesterday) { return 'yesterday'; } else { - return 'on ${Jiffy.parseFromDateTime(date).MMMd}'; + return 'on ${Jiffy(date).MMMd}'; } } @override - String sentAtText({required DateTime date, required DateTime time}) { - final atTime = Jiffy.parseFromDateTime(time.toLocal()); - return 'Sent ${_getDay(date)} at ${atTime.jm}'; - } + String sentAtText({required DateTime date, required DateTime time}) => + 'Sent ${_getDay(date)} at ${Jiffy(time.toLocal()).format('HH:mm')}'; @override String get todayLabel => 'Today'; diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_message_input_attachment_list.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_message_input_attachment_list.dart index a849bffc..46ebbd85 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_message_input_attachment_list.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_message_input_attachment_list.dart @@ -208,7 +208,7 @@ class MessageInputFileAttachments extends StatelessWidget { message: Message(), // dummy message attachment: attachment, constraints: BoxConstraints.loose(Size( - MediaQuery.sizeOf(context).width * 0.65, + MediaQuery.of(context).size.width * 0.65, 56, )), trailing: Padding( diff --git a/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart index f9de1787..5a5075f8 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart @@ -669,20 +669,14 @@ class _StreamMessageListViewState extends State { final isPartOfThread = message.replyCount! > 0 || message.showInChannel == true; - final createdAt = Jiffy.parseFromDateTime( - message.createdAt.toLocal(), - ); - - final nextCreatedAt = Jiffy.parseFromDateTime( - nextMessage.createdAt.toLocal(), - ); - - if (!createdAt.isSame(nextCreatedAt, unit: Unit.day)) { + final createdAt = message.createdAt.toLocal(); + final nextCreatedAt = nextMessage.createdAt.toLocal(); + if (!Jiffy(createdAt).isSame(nextCreatedAt, Units.DAY)) { separator = _buildDateDivider(nextMessage); } else { - final hasTimeDiff = !createdAt.isSame( + final hasTimeDiff = !Jiffy(createdAt).isSame( nextCreatedAt, - unit: Unit.minute, + Units.MINUTE, ); final isNextUserSame = @@ -1077,12 +1071,10 @@ class _StreamMessageListViewState extends State { var hasTimeDiff = false; if (nextMessage != null) { - final createdAt = Jiffy.parseFromDateTime(message.createdAt.toLocal()); - final nextCreatedAt = Jiffy.parseFromDateTime( + hasTimeDiff = !Jiffy(message.createdAt.toLocal()).isSame( nextMessage.createdAt.toLocal(), + Units.MINUTE, ); - - hasTimeDiff = !createdAt.isSame(nextCreatedAt, unit: Unit.minute); } final hasFileAttachment = diff --git a/packages/stream_chat_flutter/lib/src/message_widget/bottom_row.dart b/packages/stream_chat_flutter/lib/src/message_widget/bottom_row.dart index 7092dadf..5ca2462a 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget/bottom_row.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget/bottom_row.dart @@ -191,7 +191,7 @@ class BottomRow extends StatelessWidget { ), if (showTimeStamp) Text( - Jiffy.parseFromDateTime(message.createdAt.toLocal()).jm, + Jiffy(message.createdAt.toLocal()).jm, style: messageTheme.createdAtStyle, ), if (showSendingIndicator) diff --git a/packages/stream_chat_flutter/lib/src/misc/date_divider.dart b/packages/stream_chat_flutter/lib/src/misc/date_divider.dart index 24c0c9a7..24af4f3f 100644 --- a/packages/stream_chat_flutter/lib/src/misc/date_divider.dart +++ b/packages/stream_chat_flutter/lib/src/misc/date_divider.dart @@ -20,17 +20,17 @@ class StreamDateDivider extends StatelessWidget { @override Widget build(BuildContext context) { - final createdAt = Jiffy.parseFromDateTime(dateTime); - final now = Jiffy.parseFromDateTime(DateTime.now()); + final createdAt = Jiffy(dateTime); + final now = Jiffy(DateTime.now()); var dayInfo = createdAt.MMMd; - if (createdAt.isSame(now, unit: Unit.day)) { + if (createdAt.isSame(now, Units.DAY)) { dayInfo = context.translations.todayLabel; - } else if (createdAt.isSame(now.subtract(days: 1), unit: Unit.day)) { + } else if (createdAt.isSame(now.subtract(days: 1), Units.DAY)) { dayInfo = context.translations.yesterdayLabel; - } else if (createdAt.isAfter(now.subtract(days: 7), unit: Unit.day)) { + } else if (createdAt.isAfter(now.subtract(days: 7), Units.DAY)) { dayInfo = createdAt.EEEE; - } else if (createdAt.isAfter(now.subtract(years: 1), unit: Unit.day)) { + } else if (createdAt.isAfter(now.subtract(years: 1), Units.DAY)) { dayInfo = createdAt.MMMd; } diff --git a/packages/stream_chat_flutter/lib/src/scroll_view/channel_scroll_view/stream_channel_list_tile.dart b/packages/stream_chat_flutter/lib/src/scroll_view/channel_scroll_view/stream_channel_list_tile.dart index b5261802..6b2a9b4f 100644 --- a/packages/stream_chat_flutter/lib/src/scroll_view/channel_scroll_view/stream_channel_list_tile.dart +++ b/packages/stream_chat_flutter/lib/src/scroll_view/channel_scroll_view/stream_channel_list_tile.dart @@ -287,16 +287,16 @@ class ChannelLastMessageDate extends StatelessWidget { if (lastMessageAt.millisecondsSinceEpoch >= startOfDay.millisecondsSinceEpoch) { - stringDate = Jiffy.parseFromDateTime(lastMessageAt.toLocal()).jm; + stringDate = Jiffy(lastMessageAt.toLocal()).jm; } else if (lastMessageAt.millisecondsSinceEpoch >= startOfDay .subtract(const Duration(days: 1)) .millisecondsSinceEpoch) { stringDate = context.translations.yesterdayLabel; } else if (startOfDay.difference(lastMessageAt).inDays < 7) { - stringDate = Jiffy.parseFromDateTime(lastMessageAt.toLocal()).EEEE; + stringDate = Jiffy(lastMessageAt.toLocal()).EEEE; } else { - stringDate = Jiffy.parseFromDateTime(lastMessageAt.toLocal()).yMd; + stringDate = Jiffy(lastMessageAt.toLocal()).yMd; } return Text( diff --git a/packages/stream_chat_flutter/lib/src/scroll_view/message_search_scroll_view/stream_message_search_list_tile.dart b/packages/stream_chat_flutter/lib/src/scroll_view/message_search_scroll_view/stream_message_search_list_tile.dart index 3eb03aec..5aab3b2d 100644 --- a/packages/stream_chat_flutter/lib/src/scroll_view/message_search_scroll_view/stream_message_search_list_tile.dart +++ b/packages/stream_chat_flutter/lib/src/scroll_view/message_search_scroll_view/stream_message_search_list_tile.dart @@ -227,9 +227,9 @@ class MessageSearchTileMessageDate extends StatelessWidget { if (now.year != createdAt.year || now.month != createdAt.month || now.day != createdAt.day) { - stringDate = Jiffy.parseFromDateTime(createdAt.toLocal()).yMd; + stringDate = Jiffy(createdAt.toLocal()).yMd; } else { - stringDate = Jiffy.parseFromDateTime(createdAt.toLocal()).jm; + stringDate = Jiffy(createdAt.toLocal()).jm; } return Text( diff --git a/packages/stream_chat_flutter/lib/src/scroll_view/user_scroll_view/stream_user_list_tile.dart b/packages/stream_chat_flutter/lib/src/scroll_view/user_scroll_view/stream_user_list_tile.dart index 1b0251f6..5ee49dcc 100644 --- a/packages/stream_chat_flutter/lib/src/scroll_view/user_scroll_view/stream_user_list_tile.dart +++ b/packages/stream_chat_flutter/lib/src/scroll_view/user_scroll_view/stream_user_list_tile.dart @@ -176,12 +176,11 @@ class UserLastActive extends StatelessWidget { @override Widget build(BuildContext context) { final chatTheme = StreamChatTheme.of(context); - final lastActive = user.lastActive ?? DateTime.now(); return Text( user.online ? context.translations.userOnlineText : '${context.translations.userLastOnlineText} ' - '${Jiffy.parseFromDateTime(lastActive).fromNow()}', + '${Jiffy(user.lastActive).fromNow()}', style: chatTheme.textTheme.footnote.copyWith( color: chatTheme.colorTheme.textHighEmphasis.withOpacity(0.5), ), diff --git a/packages/stream_chat_flutter/lib/src/stream_chat.dart b/packages/stream_chat_flutter/lib/src/stream_chat.dart index 6b0d0e60..73a0d0a0 100644 --- a/packages/stream_chat_flutter/lib/src/stream_chat.dart +++ b/packages/stream_chat_flutter/lib/src/stream_chat.dart @@ -165,9 +165,9 @@ class StreamChatState extends State { @override void didChangeDependencies() { final currentLocale = Localizations.localeOf(context).toString(); - final availableLocales = Jiffy.getSupportedLocales(); + final availableLocales = Jiffy.getAllAvailableLocales(); if (availableLocales.contains(currentLocale)) { - Jiffy.setLocale(currentLocale); + Jiffy.locale(currentLocale); } super.didChangeDependencies(); } diff --git a/packages/stream_chat_flutter/lib/src/user/user_item.dart b/packages/stream_chat_flutter/lib/src/user/user_item.dart index 0c13d95e..019322d9 100644 --- a/packages/stream_chat_flutter/lib/src/user/user_item.dart +++ b/packages/stream_chat_flutter/lib/src/user/user_item.dart @@ -74,12 +74,11 @@ class StreamUserItem extends StatelessWidget { Widget _buildLastActive(BuildContext context) { final chatTheme = StreamChatTheme.of(context); - final lastActive = user.lastActive ?? DateTime.now(); return Text( user.online ? context.translations.userOnlineText : '${context.translations.userLastOnlineText} ' - '${Jiffy.parseFromDateTime(lastActive).fromNow()}', + '${Jiffy(user.lastActive).fromNow()}', style: chatTheme.textTheme.footnote.copyWith( color: chatTheme.colorTheme.textHighEmphasis.withOpacity(0.5), ), diff --git a/packages/stream_chat_flutter/lib/src/utils/typedefs.dart b/packages/stream_chat_flutter/lib/src/utils/typedefs.dart index 17cab820..64f18e1a 100644 --- a/packages/stream_chat_flutter/lib/src/utils/typedefs.dart +++ b/packages/stream_chat_flutter/lib/src/utils/typedefs.dart @@ -88,7 +88,7 @@ typedef ChannelTapCallback = void Function(Channel, Widget?); typedef ChannelInfoCallback = void Function(Channel); /// {@template channelPreviewBuilder} -/// Builder used to create a custom [ChannelPreview] for a [Channel] +/// Builder used to create a custom ChannelPreview for a [Channel] /// {@endtemplate} @Deprecated('Use StreamChannelListViewIndexedWidgetBuilder instead') typedef ChannelPreviewBuilder = Widget Function(BuildContext, Channel); diff --git a/packages/stream_chat_flutter/pubspec.yaml b/packages/stream_chat_flutter/pubspec.yaml index fcd24a0f..bacecae3 100644 --- a/packages/stream_chat_flutter/pubspec.yaml +++ b/packages/stream_chat_flutter/pubspec.yaml @@ -6,45 +6,45 @@ repository: https://github.com/GetStream/stream-chat-flutter issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues environment: - sdk: ">=2.18.0 <4.0.0" - flutter: ">=3.3.0" + sdk: ">=2.19.0 <4.0.0" + flutter: ">=3.7.0" dependencies: - cached_network_image: ^3.0.0 - chewie: ^1.6.0 + cached_network_image: ^3.2.3 + chewie: ^1.7.0 collection: ^1.17.0 contextmenu: ^3.0.0 dart_vlc: ^0.4.0 - desktop_drop: ^0.4.0 - diacritic: ^0.1.3 - dio: ^5.2.0 + desktop_drop: ^0.4.1 + diacritic: ^0.1.4 + dio: ^5.2.1+1 ezanimation: ^0.6.0 - file_picker: ^5.2.4 - file_selector: ^0.9.0 + file_picker: ^5.3.1 + file_selector: ^1.0.0 flutter: sdk: flutter - flutter_markdown: ^0.6.1 - flutter_portal: ^1.0.0 - flutter_svg: ^2.0.4 - http_parser: ^4.0.0 - image_gallery_saver: ^2.0.1 - image_picker: ">=0.8.2 <2.0.0" - jiffy: ^6.2.1 - lottie: ^2.0.0 + flutter_markdown: ^0.6.15 + flutter_portal: ^1.1.4 + flutter_svg: ^2.0.5 + http_parser: ^4.0.2 + image_gallery_saver: ^2.0.3 + image_picker: ^1.0.0 + jiffy: ^5.0.0 + lottie: ^2.3.2 meta: ^1.8.0 - path_provider: ^2.0.9 - photo_manager: ^2.5.2 + path_provider: ^2.0.15 + photo_manager: ^2.6.0 photo_view: ^0.14.0 - rxdart: ^0.27.0 + rxdart: ^0.27.7 share_plus: ^7.0.2 shimmer: ^3.0.0 stream_chat_flutter_core: ^6.4.0 - synchronized: ^3.0.0 + synchronized: ^3.1.0 thumblr: ^0.0.4 - url_launcher: ^6.1.0 + url_launcher: ^6.1.11 video_player: ^2.7.0 video_player_macos: ^2.0.1 - video_thumbnail: ^0.5.0 + video_thumbnail: ^0.5.3 flutter: plugin: @@ -73,5 +73,4 @@ dev_dependencies: flutter_test: sdk: flutter golden_toolkit: ^0.15.0 - mocktail: ^0.3.0 - path: ^1.8.2 + mocktail: ^0.3.0 \ No newline at end of file diff --git a/packages/stream_chat_flutter_core/CHANGELOG.md b/packages/stream_chat_flutter_core/CHANGELOG.md index 0cc5486a..fd21268b 100644 --- a/packages/stream_chat_flutter_core/CHANGELOG.md +++ b/packages/stream_chat_flutter_core/CHANGELOG.md @@ -1,6 +1,6 @@ ## Upcoming -- Updated minimum supported `SDK` version to Flutter 3.3/Dart 2.18 +- Updated minimum supported `SDK` version to Flutter 3.7/Dart 2.19 ## 6.4.0 diff --git a/packages/stream_chat_flutter_core/pubspec.yaml b/packages/stream_chat_flutter_core/pubspec.yaml index 4d01809a..16902a1c 100644 --- a/packages/stream_chat_flutter_core/pubspec.yaml +++ b/packages/stream_chat_flutter_core/pubspec.yaml @@ -6,24 +6,24 @@ repository: https://github.com/GetStream/stream-chat-flutter issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues environment: - sdk: ">=2.18.0 <4.0.0" - flutter: ">=3.3.0" + sdk: ">=2.19.0 <4.0.0" + flutter: ">=3.7.0" dependencies: collection: ^1.17.0 - connectivity_plus: ^4.0.0 + connectivity_plus: ^4.0.1 flutter: sdk: flutter - freezed_annotation: ^2.0.3 + freezed_annotation: ^2.2.0 meta: ^1.8.0 - rxdart: ^0.27.0 + rxdart: ^0.27.7 stream_chat: ^6.4.0 dev_dependencies: build_runner: ^2.3.3 - fake_async: ^1.2.0 + fake_async: ^1.3.1 flutter_test: sdk: flutter - freezed: ^2.3.2 + freezed: ^2.4.0 mocktail: ^0.3.0 diff --git a/packages/stream_chat_localizations/CHANGELOG.md b/packages/stream_chat_localizations/CHANGELOG.md index f2ad2fd8..f6ff4939 100644 --- a/packages/stream_chat_localizations/CHANGELOG.md +++ b/packages/stream_chat_localizations/CHANGELOG.md @@ -1,6 +1,6 @@ ## Upcoming -- Updated minimum supported `SDK` version to Flutter 3.3/Dart 2.18 +- Updated minimum supported `SDK` version to Flutter 3.7/Dart 2.19 ## 5.5.0 diff --git a/packages/stream_chat_localizations/example/lib/add_new_lang.dart b/packages/stream_chat_localizations/example/lib/add_new_lang.dart index e1d1335a..bab8101b 100644 --- a/packages/stream_chat_localizations/example/lib/add_new_lang.dart +++ b/packages/stream_chat_localizations/example/lib/add_new_lang.dart @@ -270,15 +270,13 @@ class NnStreamChatLocalizations extends GlobalStreamChatLocalizations { } else if (date == yesterday) { return 'yesterday'; } else { - return 'on ${Jiffy.parseFromDateTime(date).MMMd}'; + return 'on ${Jiffy(date).MMMd}'; } } @override - String sentAtText({required DateTime date, required DateTime time}) { - final atTime = Jiffy.parseFromDateTime(time.toLocal()); - return 'Sent ${_getDay(date)} at ${atTime.jm}'; - } + String sentAtText({required DateTime date, required DateTime time}) => + 'Sent ${_getDay(date)} at ${Jiffy(time.toLocal()).format('HH:mm')}'; @override String get todayLabel => 'Today'; diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ca.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ca.dart index ed2d3d7e..3c471e05 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ca.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ca.dart @@ -249,15 +249,13 @@ class StreamChatLocalizationsCa extends GlobalStreamChatLocalizations { } else if (date == yesterday) { return 'ahir'; } else { - return 'el ${Jiffy.parseFromDateTime(date).MMMd}'; + return 'el ${Jiffy(date).MMMd}'; } } @override - String sentAtText({required DateTime date, required DateTime time}) { - final atTime = Jiffy.parseFromDateTime(time.toLocal()); - return 'Enviat el ${_getDay(date)} a les ${atTime.jm}'; - } + String sentAtText({required DateTime date, required DateTime time}) => + '''Enviat el ${_getDay(date)} a les ${Jiffy(time.toLocal()).format('HH:mm')}'''; @override String get todayLabel => 'Avui'; diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart index fe95f0f7..df2a7766 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart @@ -239,15 +239,13 @@ class StreamChatLocalizationsDe extends GlobalStreamChatLocalizations { } else if (date == yesterday) { return 'Gestern'; } else { - return 'am ${Jiffy.parseFromDateTime(date).MMMd}'; + return 'am ${Jiffy(date).MMMd}'; } } @override - String sentAtText({required DateTime date, required DateTime time}) { - final atTime = Jiffy.parseFromDateTime(time.toLocal()); - return 'Gesendet ${_getDay(date)} am ${atTime.jm}'; - } + String sentAtText({required DateTime date, required DateTime time}) => + 'Gesendet ${_getDay(date)} am ${Jiffy(time.toLocal()).format('HH:mm')}'; @override String get todayLabel => 'Heute'; diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_en.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_en.dart index a744ff2a..c55bbf49 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_en.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_en.dart @@ -246,15 +246,13 @@ class StreamChatLocalizationsEn extends GlobalStreamChatLocalizations { } else if (date == yesterday) { return 'yesterday'; } else { - return 'on ${Jiffy.parseFromDateTime(date).MMMd}'; + return 'on ${Jiffy(date).MMMd}'; } } @override - String sentAtText({required DateTime date, required DateTime time}) { - final atTime = Jiffy.parseFromDateTime(time.toLocal()); - return 'Sent ${_getDay(date)} at ${atTime.jm}'; - } + String sentAtText({required DateTime date, required DateTime time}) => + 'Sent ${_getDay(date)} at ${Jiffy(time.toLocal()).format('HH:mm')}'; @override String get todayLabel => 'Today'; diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_es.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_es.dart index 2d75b102..107e2616 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_es.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_es.dart @@ -250,15 +250,13 @@ class StreamChatLocalizationsEs extends GlobalStreamChatLocalizations { } else if (date == yesterday) { return 'ayer'; } else { - return 'el ${Jiffy.parseFromDateTime(date).MMMd}'; + return 'el ${Jiffy(date).MMMd}'; } } @override - String sentAtText({required DateTime date, required DateTime time}) { - final atTime = Jiffy.parseFromDateTime(time.toLocal()); - return 'Enviado el ${_getDay(date)} a las ${atTime.jm}'; - } + String sentAtText({required DateTime date, required DateTime time}) => + '''Enviado el ${_getDay(date)} a las ${Jiffy(time.toLocal()).format('HH:mm')}'''; @override String get todayLabel => 'Hoy'; diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_fr.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_fr.dart index 6a474b8a..8b501184 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_fr.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_fr.dart @@ -249,15 +249,13 @@ class StreamChatLocalizationsFr extends GlobalStreamChatLocalizations { } else if (date == yesterday) { return 'hier'; } else { - return 'le ${Jiffy.parseFromDateTime(date).MMMd}'; + return 'le ${Jiffy(date).MMMd}'; } } @override - String sentAtText({required DateTime date, required DateTime time}) { - final atTime = Jiffy.parseFromDateTime(time.toLocal()); - return 'Envoyé ${_getDay(date)} à ${atTime.jm}'; - } + String sentAtText({required DateTime date, required DateTime time}) => + 'Envoyé ${_getDay(date)} à ${Jiffy(time.toLocal()).format('HH:mm')}'; @override String get todayLabel => "Aujourd'hui"; diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart index 4e056ab2..4f27717a 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart @@ -243,15 +243,13 @@ class StreamChatLocalizationsHi extends GlobalStreamChatLocalizations { } else if (date == yesterday) { return 'कल'; } else { - return '${Jiffy.parseFromDateTime(date).MMMd} को'; + return '${Jiffy(date).MMMd} को'; } } @override - String sentAtText({required DateTime date, required DateTime time}) { - final atTime = Jiffy.parseFromDateTime(time.toLocal()); - return '${_getDay(date)} ${atTime.jm} बजे भेजा गया'; - } + String sentAtText({required DateTime date, required DateTime time}) => + '${_getDay(date)} ${Jiffy(time.toLocal()).format('HH:mm')} बजे भेजा गया'; @override String get todayLabel => 'आज'; diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_it.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_it.dart index 51a80897..b407629d 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_it.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_it.dart @@ -252,15 +252,13 @@ Il file è troppo grande per essere caricato. Il limite è di $limitInMB MB.'''; } else if (date == yesterday) { return 'ieri'; } else { - return 'il ${Jiffy.parseFromDateTime(date).MMMd}'; + return 'il ${Jiffy(date).MMMd}'; } } @override - String sentAtText({required DateTime date, required DateTime time}) { - final atTime = Jiffy.parseFromDateTime(time.toLocal()); - return 'Inviato ${_getDay(date)} alle ${atTime.jm}'; - } + String sentAtText({required DateTime date, required DateTime time}) => + "Inviato ${_getDay(date)} alle ${Jiffy(time.toLocal()).format('HH:mm')}"; @override String get todayLabel => 'Oggi'; diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ja.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ja.dart index 17285f6a..26a5e8b3 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ja.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ja.dart @@ -236,15 +236,13 @@ class StreamChatLocalizationsJa extends GlobalStreamChatLocalizations { } else if (date == yesterday) { return '昨日'; } else { - return '${Jiffy.parseFromDateTime(date).MMMd}に'; + return '${Jiffy(date).MMMd}に'; } } @override - String sentAtText({required DateTime date, required DateTime time}) { - final atTime = Jiffy.parseFromDateTime(time.toLocal()); - return '${_getDay(date)}の${atTime.jm}に送信しました '; - } + String sentAtText({required DateTime date, required DateTime time}) => + '${_getDay(date)}の${Jiffy(time.toLocal()).format('HH:mm')}に送信しました '; @override String get todayLabel => '今日'; diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ko.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ko.dart index acf1f79f..7b907584 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ko.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ko.dart @@ -235,15 +235,13 @@ class StreamChatLocalizationsKo extends GlobalStreamChatLocalizations { } else if (date == yesterday) { return '어제'; } else { - return '${Jiffy.parseFromDateTime(date).MMMd}에'; + return '${Jiffy(date).MMMd}에'; } } @override - String sentAtText({required DateTime date, required DateTime time}) { - final atTime = Jiffy.parseFromDateTime(time.toLocal()); - return '${_getDay(date)} ${atTime.jm}에 보냈습니다'; - } + String sentAtText({required DateTime date, required DateTime time}) => + '${_getDay(date)} ${Jiffy(time.toLocal()).format('HH:mm')}에 보냈습니다'; @override String get todayLabel => '오늘'; diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_no.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_no.dart index 8a6c4db3..88350979 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_no.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_no.dart @@ -242,15 +242,13 @@ class StreamChatLocalizationsNo extends GlobalStreamChatLocalizations { } else if (date == yesterday) { return 'i går'; } else { - return 'på ${Jiffy.parseFromDateTime(date).MMMd}'; + return 'på ${Jiffy(date).MMMd}'; } } @override - String sentAtText({required DateTime date, required DateTime time}) { - final atTime = Jiffy.parseFromDateTime(time.toLocal()); - return 'Sent ${_getDay(date)} kl. ${atTime.jm}'; - } + String sentAtText({required DateTime date, required DateTime time}) => + 'Sent ${_getDay(date)} kl. ${Jiffy(time.toLocal()).format('HH:mm')}'; @override String get todayLabel => 'I dag'; diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_pt.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_pt.dart index f359808b..874eb118 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_pt.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_pt.dart @@ -244,15 +244,13 @@ class StreamChatLocalizationsPt extends GlobalStreamChatLocalizations { } else if (date == yesterday) { return 'Ontem'; } else { - return 'o ${Jiffy.parseFromDateTime(date).MMMd}'; + return 'o ${Jiffy(date).MMMd}'; } } @override - String sentAtText({required DateTime date, required DateTime time}) { - final atTime = Jiffy.parseFromDateTime(time.toLocal()); - return 'Enviado ${_getDay(date)} às ${atTime.jm}'; - } + String sentAtText({required DateTime date, required DateTime time}) => + '''Enviado ${_getDay(date)} às ${Jiffy(time.toLocal()).format('HH:mm')}'''; @override String get todayLabel => 'Hoje'; diff --git a/packages/stream_chat_localizations/pubspec.yaml b/packages/stream_chat_localizations/pubspec.yaml index d9d07664..c72032ea 100644 --- a/packages/stream_chat_localizations/pubspec.yaml +++ b/packages/stream_chat_localizations/pubspec.yaml @@ -6,8 +6,8 @@ repository: https://github.com/GetStream/stream-chat-flutter issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues environment: - sdk: ">=2.18.0 <4.0.0" - flutter: ">=3.3.0" + sdk: ">=2.19.0 <4.0.0" + flutter: ">=3.7.0" dependencies: flutter: diff --git a/packages/stream_chat_persistence/CHANGELOG.md b/packages/stream_chat_persistence/CHANGELOG.md index 393a17ef..76623ba7 100644 --- a/packages/stream_chat_persistence/CHANGELOG.md +++ b/packages/stream_chat_persistence/CHANGELOG.md @@ -1,6 +1,6 @@ ## Upcoming -- Updated minimum supported `SDK` version to Flutter 3.3/Dart 2.18 +- Updated minimum supported `SDK` version to Flutter 3.7/Dart 2.19 ## 6.4.0 diff --git a/packages/stream_chat_persistence/pubspec.yaml b/packages/stream_chat_persistence/pubspec.yaml index 2cc62b15..6ff7ac15 100644 --- a/packages/stream_chat_persistence/pubspec.yaml +++ b/packages/stream_chat_persistence/pubspec.yaml @@ -6,23 +6,23 @@ repository: https://github.com/GetStream/stream-chat-flutter issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues environment: - sdk: ">=2.18.0 <4.0.0" - flutter: ">=3.3.0" + sdk: ">=2.19.0 <4.0.0" + flutter: ">=3.7.0" dependencies: - drift: ^2.7.0 + drift: ^2.8.0 flutter: sdk: flutter - logging: ^1.0.1 + logging: ^1.2.0 meta: ^1.8.0 path: ^1.8.2 - path_provider: ^2.0.1 - sqlite3_flutter_libs: ^0.5.0 + path_provider: ^2.0.15 + sqlite3_flutter_libs: ^0.5.15 stream_chat: ^6.4.0 dev_dependencies: build_runner: ^2.3.3 - drift_dev: ^2.7.0 + drift_dev: ^2.8.3 flutter_test: sdk: flutter mocktail: ^0.3.0 diff --git a/pubspec.yaml b/pubspec.yaml index 9016fa8f..cf418d76 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: stream_chat_flutter_workspace environment: - sdk: '>=2.18.0 <3.0.0' + sdk: '>=2.19.0 <4.0.0' dev_dependencies: - melos: ^3.0.0 + melos: ^3.1.0