Merge pull request #1711 from GetStream/chore/bump_min_3.10
This commit is contained in:
@@ -3,7 +3,7 @@ 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"
|
||||
flutter_version: "3.10.6"
|
||||
|
||||
on:
|
||||
push:
|
||||
|
||||
@@ -2,7 +2,7 @@ name: stream_flutter_workflow
|
||||
|
||||
env:
|
||||
ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true'
|
||||
flutter_version: "3.10.4"
|
||||
flutter_channel: "stable"
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
@@ -37,7 +37,7 @@ jobs:
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
cache: true
|
||||
flutter-version: ${{ env.flutter_version }}
|
||||
channel: ${{ env.flutter_channel }}
|
||||
- name: "Install Tools"
|
||||
run: |
|
||||
flutter pub global activate melos
|
||||
|
||||
@@ -9,6 +9,10 @@
|
||||
- Added support for `channel.countUnreadMentions()` to get the count of unread messages mentioning the current user on a
|
||||
channel. [#1692](https://github.com/GetStream/stream-chat-flutter/issues/1692)
|
||||
|
||||
🔄 Changed
|
||||
|
||||
- Updated minimum supported `SDK` version to Dart 3.0
|
||||
|
||||
## 6.7.0
|
||||
|
||||
✅ Added
|
||||
|
||||
@@ -5,8 +5,8 @@ publish_to: "none"
|
||||
version: 1.0.0+1
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.0 <4.0.0'
|
||||
flutter: ">=3.7.0"
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
flutter: ">=3.10.0"
|
||||
|
||||
dependencies:
|
||||
cupertino_icons: ^1.0.5
|
||||
|
||||
@@ -1696,7 +1696,7 @@ class ClientState {
|
||||
void updateUsers(List<User?> userList) {
|
||||
final newUsers = {
|
||||
...users,
|
||||
for (var user in userList)
|
||||
for (final user in userList)
|
||||
if (user != null) user.id: user,
|
||||
};
|
||||
_usersController.add(newUsers);
|
||||
|
||||
@@ -2,7 +2,7 @@ import 'dart:async';
|
||||
import 'package:uuid/uuid.dart';
|
||||
|
||||
///
|
||||
class TimerHelper {
|
||||
mixin class TimerHelper {
|
||||
final _uuid = const Uuid();
|
||||
late final _timers = <String, Timer>{};
|
||||
|
||||
|
||||
@@ -6,19 +6,19 @@ repository: https://github.com/GetStream/stream-chat-flutter
|
||||
issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.0 <4.0.0'
|
||||
sdk: '>=3.0.0 <4.0.0'
|
||||
|
||||
dependencies:
|
||||
async: ^2.10.0
|
||||
collection: ^1.17.0
|
||||
dio: ^5.2.1+1
|
||||
async: ^2.11.0
|
||||
collection: ^1.17.1
|
||||
dio: ^5.3.2
|
||||
equatable: ^2.0.5
|
||||
freezed_annotation: ^2.2.0
|
||||
freezed_annotation: ^2.4.1
|
||||
http_parser: ^4.0.2
|
||||
jose: ^0.3.3
|
||||
jose: ^0.3.4
|
||||
json_annotation: ^4.8.1
|
||||
logging: ^1.2.0
|
||||
meta: ^1.8.0
|
||||
meta: ^1.9.1
|
||||
mime: ^1.0.4
|
||||
rate_limiter: ^1.0.0
|
||||
rxdart: ^0.27.7
|
||||
@@ -27,8 +27,8 @@ dependencies:
|
||||
web_socket_channel: ^2.4.0
|
||||
|
||||
dev_dependencies:
|
||||
build_runner: ^2.3.3
|
||||
freezed: ^2.4.0
|
||||
json_serializable: ^6.6.2
|
||||
build_runner: ^2.4.6
|
||||
freezed: ^2.4.2
|
||||
json_serializable: ^6.7.1
|
||||
mocktail: ^1.0.0
|
||||
test: ^1.24.3
|
||||
test: ^1.24.6
|
||||
|
||||
@@ -975,7 +975,7 @@ void main() {
|
||||
// skipping initial seed event -> {} users
|
||||
client.state.usersStream.skip(1),
|
||||
emitsInOrder([
|
||||
{for (var user in users) user.id: user},
|
||||
{for (final user in users) user.id: user},
|
||||
]),
|
||||
);
|
||||
|
||||
|
||||
@@ -11,6 +11,27 @@
|
||||
|
||||
- Added support for listening error events in AttachmentPickerBottomSheet.
|
||||
- Added support for overriding the `MessageWidget.onReactionTap` callback.
|
||||
- Added support for `StreamMessageInput.contentInsertionConfiguration` to specify the content insertion configuration.
|
||||
[#1613](https://github.com/GetStream/stream-chat-flutter/issues/1613)
|
||||
|
||||
```dart
|
||||
StreamMessageInput(
|
||||
...,
|
||||
contentInsertionConfiguration: ContentInsertionConfiguration(
|
||||
onContentInserted: (content) {
|
||||
// Do something with the content.
|
||||
controller.addAttachment(...);
|
||||
},
|
||||
),
|
||||
)
|
||||
```
|
||||
|
||||
🔄 Changed
|
||||
|
||||
- Updated minimum supported `SDK` version to Flutter 3.10/Dart 3.0
|
||||
- Updated `stream_chat_flutter_core` dependency
|
||||
to [`6.7.0`](https://pub.dev/packages/stream_chat_flutter_core/changelog).
|
||||
- Updated jiffy dependency to ^6.2.1.
|
||||
|
||||
## 6.8.1
|
||||
|
||||
@@ -42,43 +63,57 @@
|
||||
|
||||
🐞 Fixed
|
||||
|
||||
- [[#1620]](https://github.com/GetStream/stream-chat-flutter/issues/1620) Fixed messages Are Not Hard Deleting even
|
||||
- [[#1620]](https://github.com/GetStream/stream-chat-flutter/issues/1620) Fixed messages Are Not
|
||||
Hard Deleting even
|
||||
after overriding the `onConfirmDeleteTap` callback.
|
||||
- [[#1621]](https://github.com/GetStream/stream-chat-flutter/issues/1621) Fixed `createdAtStyle` null check error
|
||||
- [[#1621]](https://github.com/GetStream/stream-chat-flutter/issues/1621) Fixed `createdAtStyle`
|
||||
null check error
|
||||
in `SendingIndicatorBuilder`.
|
||||
- [[#1069]](https://github.com/GetStream/stream-chat-flutter/issues/1069) Fixed message swipe to reply using same
|
||||
direction for both current user and other users. It now uses `SwipeDirection.startToEnd` for current user
|
||||
- [[#1069]](https://github.com/GetStream/stream-chat-flutter/issues/1069) Fixed message swipe to
|
||||
reply using same
|
||||
direction for both current user and other users. It now uses `SwipeDirection.startToEnd` for
|
||||
current user
|
||||
and `SwipeDirection.endToStart` for other users.
|
||||
- [[#1590]](https://github.com/GetStream/stream-chat-flutter/issues/1590)
|
||||
Fixed `StreamMessageWidget.showReactionPickerIndicator` not toggling the reaction picker indicator visibility.
|
||||
- [[#1639]](https://github.com/GetStream/stream-chat-flutter/issues/1639) Fixed attachments not showing in gallery view
|
||||
Fixed `StreamMessageWidget.showReactionPickerIndicator` not toggling the reaction picker indicator
|
||||
visibility.
|
||||
- [[#1639]](https://github.com/GetStream/stream-chat-flutter/issues/1639) Fixed attachments not
|
||||
showing in gallery view
|
||||
even after saving them to the device.
|
||||
> **Note**
|
||||
> This fix depends on the [image_gallery_saver](https://pub.dev/packages/image_gallery_saver) plugin. Make sure to add
|
||||
> This fix depends on the [image_gallery_saver](https://pub.dev/packages/image_gallery_saver)
|
||||
plugin. Make sure to add
|
||||
necessary permissions in your App as per the plugin documentation.
|
||||
- [[#1642]](https://github.com/GetStream/stream-chat-flutter/issues/1642) Fixed `StreamMessageWidget.widthFactor` not
|
||||
- [[#1642]](https://github.com/GetStream/stream-chat-flutter/issues/1642)
|
||||
Fixed `StreamMessageWidget.widthFactor` not
|
||||
working on web and desktop platforms.
|
||||
|
||||
✅ Added
|
||||
|
||||
- Added support for customizing attachments in `StreamMessageInput`. Use various properties mentioned
|
||||
- Added support for customizing attachments in `StreamMessageInput`. Use various properties
|
||||
mentioned
|
||||
below. [#1511](https://github.com/GetStream/stream-chat-flutter/issues/1511)
|
||||
* `StreamMessageInput.attachmentListBuilder` to customize the attachment list.
|
||||
* `StreamMessageInput.fileAttachmentListBuilder` to customize the file attachment list.
|
||||
* `StreamMessageInput.mediaAttachmentListBuilder` to customize the media attachment list. Includes images, videos
|
||||
* `StreamMessageInput.mediaAttachmentListBuilder` to customize the media attachment list.
|
||||
Includes images, videos
|
||||
and gifs.
|
||||
* `StreamMessageInput.fileAttachmentBuilder` to customize the file attachment item shown in `FileAttachmentList`.
|
||||
* `StreamMessageInput.fileAttachmentBuilder` to customize the file attachment item shown
|
||||
in `FileAttachmentList`.
|
||||
* `StreamMessageInput.mediaAttachmentBuilder` to customize the media attachment item shown in
|
||||
`MediaAttachmentList`.
|
||||
|
||||
|
||||
- Added `StreamMessageInput.quotedMessageAttachmentThumbnailBuilders` to customize the thumbnail builders for quoted
|
||||
- Added `StreamMessageInput.quotedMessageAttachmentThumbnailBuilders` to customize the thumbnail
|
||||
builders for quoted
|
||||
message attachments.
|
||||
|
||||
🔄 Changed
|
||||
|
||||
- Deprecated `StreamMessageInput.attachmentThumbnailBuilders` in favor of `StreamMessageInput.mediaAttachmentBuilder`.
|
||||
- Deprecated `StreamMessageListView.onMessageSwiped`. Try wrapping the `MessageWidget` with a `Swipeable`, `Dismissible`
|
||||
- Deprecated `StreamMessageInput.attachmentThumbnailBuilders` in favor
|
||||
of `StreamMessageInput.mediaAttachmentBuilder`.
|
||||
- Deprecated `StreamMessageListView.onMessageSwiped`. Try wrapping the `MessageWidget` with
|
||||
a `Swipeable`, `Dismissible`
|
||||
or a custom widget to achieve the swipe to reply behaviour.
|
||||
|
||||
```dart
|
||||
@@ -126,7 +161,8 @@
|
||||
},
|
||||
)
|
||||
```
|
||||
- Deprecated `StreamMessageWidget.showReactionPickerIndicator` in favor of `StreamMessageWidget.showReactionPicker`.
|
||||
- Deprecated `StreamMessageWidget.showReactionPickerIndicator` in favor
|
||||
of `StreamMessageWidget.showReactionPicker`.
|
||||
|
||||
```diff
|
||||
StreamMessageWidget(
|
||||
@@ -143,16 +179,20 @@
|
||||
|
||||
🐞 Fixed
|
||||
|
||||
- [[#1600]](https://github.com/GetStream/stream-chat-flutter/issues/1600) Fixed type `ImageDecoderCallback` not found
|
||||
- [[#1600]](https://github.com/GetStream/stream-chat-flutter/issues/1600) Fixed
|
||||
type `ImageDecoderCallback` not found
|
||||
error on pre-Flutter 3.10.0 versions.
|
||||
- [[#1605]](https://github.com/GetStream/stream-chat-flutter/issues/1605) Fixed Null exception is thrown on message list
|
||||
- [[#1605]](https://github.com/GetStream/stream-chat-flutter/issues/1605) Fixed Null exception is
|
||||
thrown on message list
|
||||
for unread messages when `ScrollToBottomButton` is pressed.
|
||||
- [[#1615]](https://github.com/GetStream/stream-chat-flutter/issues/1615) Fixed `StreamAttachmentPickerBottomSheet` not
|
||||
- [[#1615]](https://github.com/GetStream/stream-chat-flutter/issues/1615)
|
||||
Fixed `StreamAttachmentPickerBottomSheet` not
|
||||
able to find the `StreamChatTheme` when used in nested MaterialApp.
|
||||
|
||||
✅ Added
|
||||
|
||||
- Added support for `StreamMessageInput.allowedAttachmentPickerTypes` to specify the allowed attachment picker types.
|
||||
- Added support for `StreamMessageInput.allowedAttachmentPickerTypes` to specify the allowed
|
||||
attachment picker types.
|
||||
[#1601](https://github.com/GetStream/stream-chat-flutter/issues/1376)
|
||||
|
||||
```dart
|
||||
@@ -165,7 +205,8 @@
|
||||
)
|
||||
```
|
||||
|
||||
- Added support for `StreamMessageWidget.onConfirmDeleteTap` to override the default action on delete confirmation.
|
||||
- Added support for `StreamMessageWidget.onConfirmDeleteTap` to override the default action on
|
||||
delete confirmation.
|
||||
[#1604](https://github.com/GetStream/stream-chat-flutter/issues/1604)
|
||||
|
||||
```dart
|
||||
@@ -178,8 +219,10 @@
|
||||
)
|
||||
```
|
||||
|
||||
- Added support for `StreamMessageWidget.quotedMessageBuilder` and `StreamMessageInput.quotedMessageBuilder` to override
|
||||
the default quoted message widget. [#1547](https://github.com/GetStream/stream-chat-flutter/issues/1547)
|
||||
- Added support for `StreamMessageWidget.quotedMessageBuilder`
|
||||
and `StreamMessageInput.quotedMessageBuilder` to override
|
||||
the default quoted message
|
||||
widget. [#1547](https://github.com/GetStream/stream-chat-flutter/issues/1547)
|
||||
|
||||
```dart
|
||||
StreamMessageWidget(
|
||||
@@ -193,7 +236,8 @@
|
||||
)
|
||||
```
|
||||
|
||||
- Added support for `StreamChannelAvatar.ownSpaceAvatarBuilder`, `StreamChannelAvatar.oneToOneAvatarBuilder` and
|
||||
- Added support
|
||||
for `StreamChannelAvatar.ownSpaceAvatarBuilder`, `StreamChannelAvatar.oneToOneAvatarBuilder` and
|
||||
`StreamChannelAvatar.groupAvatarBuilder` to override the default avatar
|
||||
widget.[#1614](https://github.com/GetStream/stream-chat-flutter/issues/1614)
|
||||
|
||||
@@ -225,10 +269,13 @@
|
||||
|
||||
🐞 Fixed
|
||||
|
||||
- [[#1592]](https://github.com/GetStream/stream-chat-flutter/issues/1592) Fixed broken attachment download on web.
|
||||
- [[#1591]](https://github.com/GetStream/stream-chat-flutter/issues/1591) Fixed `StreamChannelInfoBottomSheet` not
|
||||
- [[#1592]](https://github.com/GetStream/stream-chat-flutter/issues/1592) Fixed broken attachment
|
||||
download on web.
|
||||
- [[#1591]](https://github.com/GetStream/stream-chat-flutter/issues/1591)
|
||||
Fixed `StreamChannelInfoBottomSheet` not
|
||||
rendering member list properly.
|
||||
- [[#1427]](https://github.com/GetStream/stream-chat-flutter/issues/1427) Fixed unable to load asset error for
|
||||
- [[#1427]](https://github.com/GetStream/stream-chat-flutter/issues/1427) Fixed unable to load asset
|
||||
error for
|
||||
`packages/stream_chat_flutter/lib/svgs/video_call_icon.svg`.
|
||||
|
||||
🔄 Changed
|
||||
@@ -241,30 +288,40 @@
|
||||
|
||||
- [[#1546]](https://github.com/GetStream/stream-chat-flutter/issues/1546)
|
||||
Fixed `StreamMessageInputTheme.linkHighlightColor` returning null for default theme.
|
||||
- [[#1548]](https://github.com/GetStream/stream-chat-flutter/issues/1548) Fixed `StreamMessageInput` urlRegex only
|
||||
- [[#1548]](https://github.com/GetStream/stream-chat-flutter/issues/1548) Fixed `StreamMessageInput`
|
||||
urlRegex only
|
||||
matching the lowercase `http(s)|ftp`.
|
||||
- [[#1542]](https://github.com/GetStream/stream-chat-flutter/issues/1542) Handle error thrown in `StreamMessageInput`
|
||||
- [[#1542]](https://github.com/GetStream/stream-chat-flutter/issues/1542) Handle error thrown
|
||||
in `StreamMessageInput`
|
||||
when unable to fetch a link preview.
|
||||
- [[#1540]](https://github.com/GetStream/stream-chat-flutter/issues/1540) Use `CircularProgressIndicator.adaptive`
|
||||
- [[#1540]](https://github.com/GetStream/stream-chat-flutter/issues/1540)
|
||||
Use `CircularProgressIndicator.adaptive`
|
||||
instead of material indicator.
|
||||
- [[#1490]](https://github.com/GetStream/stream-chat-flutter/issues/1490) Fixed `editMessageInputBuilder` property not
|
||||
- [[#1490]](https://github.com/GetStream/stream-chat-flutter/issues/1490)
|
||||
Fixed `editMessageInputBuilder` property not
|
||||
used in `MessageActionsModal.editMessage` option.
|
||||
- [[#1544]](https://github.com/GetStream/stream-chat-flutter/issues/1544) Fixed error thrown when unable to fetch
|
||||
- [[#1544]](https://github.com/GetStream/stream-chat-flutter/issues/1544) Fixed error thrown when
|
||||
unable to fetch
|
||||
image/data in Message link preview.
|
||||
- [[#1482]](https://github.com/GetStream/stream-chat-flutter/issues/1482) Fixed `StreaChannelListTile` not showing
|
||||
- [[#1482]](https://github.com/GetStream/stream-chat-flutter/issues/1482)
|
||||
Fixed `StreaChannelListTile` not showing
|
||||
unread indicator when `currentUser` is not present in the initial member list.
|
||||
- [[#1487]](https://github.com/GetStream/stream-chat-flutter/issues/1487) Use localized title
|
||||
for `WebOrDesktopAttachmentPickerOption` in `StreamMessageInput`.
|
||||
- [[#1250]](https://github.com/GetStream/stream-chat-flutter/issues/1250) Fixed bottomRow widgetSpans getting resized
|
||||
- [[#1250]](https://github.com/GetStream/stream-chat-flutter/issues/1250) Fixed bottomRow
|
||||
widgetSpans getting resized
|
||||
twice when `textScaling` is enabled.
|
||||
- [[#1498]](https://github.com/GetStream/stream-chat-flutter/issues/1498) Fixed `MessageInput` autocomplete not working
|
||||
- [[#1498]](https://github.com/GetStream/stream-chat-flutter/issues/1498) Fixed `MessageInput`
|
||||
autocomplete not working
|
||||
on non-mobile platforms.
|
||||
- [[#1576]](https://github.com/GetStream/stream-chat-flutter/issues/1576) Temporary fix for `StreamMessageListView`
|
||||
- [[#1576]](https://github.com/GetStream/stream-chat-flutter/issues/1576) Temporary fix
|
||||
for `StreamMessageListView`
|
||||
getting broken when loaded at a particular message and a new message is added.
|
||||
|
||||
✅ Added
|
||||
|
||||
- Added support for `StreamMessageThemeData.urlAttachmentTextMaxLine` to specify the `.maxLines` for the url attachment
|
||||
- Added support for `StreamMessageThemeData.urlAttachmentTextMaxLine` to specify the `.maxLines` for
|
||||
the url attachment
|
||||
text. [#1543](https://github.com/GetStream/stream-chat-flutter/issues/1543)
|
||||
|
||||
🔄 Changed
|
||||
@@ -279,24 +336,33 @@
|
||||
|
||||
🐞 Fixed
|
||||
|
||||
- [[#1502]](https://github.com/GetStream/stream-chat-flutter/issues/1502) Fixed `isOnlyEmoji` method Detects Single
|
||||
- [[#1502]](https://github.com/GetStream/stream-chat-flutter/issues/1502) Fixed `isOnlyEmoji` method
|
||||
Detects Single
|
||||
Hangul
|
||||
Consonants as Emoji.
|
||||
- [[#1505]](https://github.com/GetStream/stream-chat-flutter/issues/1505) Fixed Message bubble disappears for Hangul
|
||||
- [[#1505]](https://github.com/GetStream/stream-chat-flutter/issues/1505) Fixed Message bubble
|
||||
disappears for Hangul
|
||||
Consonants.
|
||||
- [[#1476]](https://github.com/GetStream/stream-chat-flutter/issues/1476) Fixed `UserAvatarTransform.userAvatarBuilder`
|
||||
- [[#1476]](https://github.com/GetStream/stream-chat-flutter/issues/1476)
|
||||
Fixed `UserAvatarTransform.userAvatarBuilder`
|
||||
works only for otherUser.
|
||||
- [[#1490]](https://github.com/GetStream/stream-chat-flutter/issues/1490) Fixed `editMessageInputBuilder` property not
|
||||
- [[#1490]](https://github.com/GetStream/stream-chat-flutter/issues/1490)
|
||||
Fixed `editMessageInputBuilder` property not
|
||||
used in message edit widget.
|
||||
- [[#1523]](https://github.com/GetStream/stream-chat-flutter/issues/1523) Fixed `StreamMessageThemeData` not being
|
||||
- [[#1523]](https://github.com/GetStream/stream-chat-flutter/issues/1523)
|
||||
Fixed `StreamMessageThemeData` not being
|
||||
applied correctly.
|
||||
- [[#1525]](https://github.com/GetStream/stream-chat-flutter/issues/1525) Fixed `StreamQuotedMessageWidget` message for
|
||||
- [[#1525]](https://github.com/GetStream/stream-chat-flutter/issues/1525)
|
||||
Fixed `StreamQuotedMessageWidget` message for
|
||||
deleted messages not being shown correctly.
|
||||
- [[#1529]](https://github.com/GetStream/stream-chat-flutter/issues/1529) Fixed `ClipboardData` requires non-nullable
|
||||
- [[#1529]](https://github.com/GetStream/stream-chat-flutter/issues/1529) Fixed `ClipboardData`
|
||||
requires non-nullable
|
||||
string as text on Flutter 3.10.
|
||||
- [[#1533]](https://github.com/GetStream/stream-chat-flutter/issues/1533) Fixed `StreamMessageListView` messages grouped
|
||||
- [[#1533]](https://github.com/GetStream/stream-chat-flutter/issues/1533)
|
||||
Fixed `StreamMessageListView` messages grouped
|
||||
incorrectly w.r.t. timestamp.
|
||||
- [[#1532]](https://github.com/GetStream/stream-chat-flutter/issues/1532) Fixed `StreamMessageWidget` actions dialog
|
||||
- [[#1532]](https://github.com/GetStream/stream-chat-flutter/issues/1532)
|
||||
Fixed `StreamMessageWidget` actions dialog
|
||||
backdrop filter is cut off by safe area.
|
||||
|
||||
✅ Added
|
||||
@@ -344,7 +410,8 @@
|
||||
🔄 Changed
|
||||
|
||||
- Updated `dart` sdk environment range to support `3.0.0`.
|
||||
- Deprecated `MessageTheme.linkBackgroundColor` in favor of `MessageTheme.urlAttachmentBackgroundColor`.
|
||||
- Deprecated `MessageTheme.linkBackgroundColor` in favor
|
||||
of `MessageTheme.urlAttachmentBackgroundColor`.
|
||||
- Updated `stream_chat_flutter_core` dependency
|
||||
to [`6.1.0`](https://pub.dev/packages/stream_chat_flutter_core/changelog).
|
||||
|
||||
@@ -352,18 +419,23 @@
|
||||
|
||||
🐞 Fixed
|
||||
|
||||
- [[#1456]](https://github.com/GetStream/stream-chat-flutter/issues/1456) Fixed logic for showing that a message was
|
||||
- [[#1456]](https://github.com/GetStream/stream-chat-flutter/issues/1456) Fixed logic for showing
|
||||
that a message was
|
||||
read using sending indicator.
|
||||
- [[#1462]](https://github.com/GetStream/stream-chat-flutter/issues/1462) Fixed support for iPad in the share button for
|
||||
- [[#1462]](https://github.com/GetStream/stream-chat-flutter/issues/1462) Fixed support for iPad in
|
||||
the share button for
|
||||
images.
|
||||
- [[#1475]](https://github.com/GetStream/stream-chat-flutter/issues/1475) Fixed typo to fix compilation.
|
||||
- [[#1475]](https://github.com/GetStream/stream-chat-flutter/issues/1475) Fixed typo to fix
|
||||
compilation.
|
||||
|
||||
✅ Added
|
||||
|
||||
- Now it is possible to customize the max lines of the title of a url attachment. Before it was always 1 line.
|
||||
- Now it is possible to customize the max lines of the title of a url attachment. Before it was
|
||||
always 1 line.
|
||||
- Added `attachmentActionsModalBuilder` parameter to `StreamMessageWidget` that allows to
|
||||
customize `AttachmentActionsModal`.
|
||||
- Added `StreamMessageInput.sendMessageKeyPredicate` and `StreamMessageInput.clearQuotedMessageKeyPredicate` to
|
||||
- Added `StreamMessageInput.sendMessageKeyPredicate`
|
||||
and `StreamMessageInput.clearQuotedMessageKeyPredicate` to
|
||||
customize the keys used to send and clear the quoted message.
|
||||
|
||||
🔄 Changed
|
||||
@@ -372,7 +444,8 @@
|
||||
|
||||
🚀 Improved
|
||||
|
||||
- Improved draw of reaction options. [#1455](https://github.com/GetStream/stream-chat-flutter/pull/1455)
|
||||
- Improved draw of reaction
|
||||
options. [#1455](https://github.com/GetStream/stream-chat-flutter/pull/1455)
|
||||
|
||||
## 5.3.0
|
||||
|
||||
@@ -382,7 +455,8 @@
|
||||
|
||||
🐞 Fixed
|
||||
|
||||
- [[#1424]](https://github.com/GetStream/stream-chat-flutter/issues/1424) Fixed a render issue when showing messages
|
||||
- [[#1424]](https://github.com/GetStream/stream-chat-flutter/issues/1424) Fixed a render issue when
|
||||
showing messages
|
||||
starting with 4 whitespaces.
|
||||
- Fixed a bug where the `AttachmentPickerBottomSheet` was not able to identify the mobile browser.
|
||||
- Fixed uploading files on Windows - fixed temp file path.
|
||||
@@ -395,7 +469,8 @@
|
||||
|
||||
✅ Added
|
||||
|
||||
- Added a new `bottomRowBuilderWithDefaultWidget` parameter to `StreamMessageWidget` which contains a third parameter (
|
||||
- Added a new `bottomRowBuilderWithDefaultWidget` parameter to `StreamMessageWidget` which contains
|
||||
a third parameter (
|
||||
default `BottomRow` widget with `copyWith` method available) to allow easier customization.
|
||||
|
||||
🔄 Changed
|
||||
@@ -405,18 +480,23 @@
|
||||
- Updated `connectivity_plus` dependency to `^3.0.2`
|
||||
- Updated `dart_vlc` dependency to `^0.4.0`
|
||||
- Updated `file_picker` dependency to `^5.2.4`
|
||||
- Deprecated `StreamMessageWidget.bottomRowBuilder` in favor of `StreamMessageWidget.bottomRowBuilderWithDefaultWidget`.
|
||||
- Deprecated `StreamMessageWidget.bottomRowBuilder` in favor
|
||||
of `StreamMessageWidget.bottomRowBuilderWithDefaultWidget`.
|
||||
- Deprecated `StreamMessageWidget.deletedBottomRowBuilder` in favor
|
||||
of `StreamMessageWidget.bottomRowBuilderWithDefaultWidget`.
|
||||
- Deprecated `StreamMessageWidget.usernameBuilder` in favor of `StreamMessageWidget.bottomRowBuilderWithDefaultWidget`.
|
||||
- Deprecated `StreamMessageWidget.usernameBuilder` in favor
|
||||
of `StreamMessageWidget.bottomRowBuilderWithDefaultWidget`.
|
||||
|
||||
🐞 Fixed
|
||||
|
||||
- [[#1379]](https://github.com/GetStream/stream-chat-flutter/issues/1379) Fixed "Issues with photo attachments on web",
|
||||
- [[#1379]](https://github.com/GetStream/stream-chat-flutter/issues/1379) Fixed "Issues with photo
|
||||
attachments on web",
|
||||
where the cached image attachment would not render while uploading.
|
||||
- Fix render overflow issue with `MessageSearchListTileTitle`. It now uses `Text.rich` instead of `Row`. Better default
|
||||
- Fix render overflow issue with `MessageSearchListTileTitle`. It now uses `Text.rich` instead
|
||||
of `Row`. Better default
|
||||
behaviour and allows `TextOverflow`.
|
||||
- [[1346]](https://github.com/GetStream/stream-chat-flutter/issues/1346) Fixed a render issue while uploading video on
|
||||
- [[1346]](https://github.com/GetStream/stream-chat-flutter/issues/1346) Fixed a render issue while
|
||||
uploading video on
|
||||
web.
|
||||
- [[#1347]](https://github.com/GetStream/stream-chat-flutter/issues/1347) `onReply` not working
|
||||
in `AttachmentActionsModal` which is used by `StreamImageAttachment` and `StreamImageGroup`.
|
||||
@@ -459,7 +539,8 @@
|
||||
* `textInputAction`
|
||||
* `keyboardType`
|
||||
* `textCapitalization`
|
||||
- Added `showStreamAttachmentPickerModalBottomSheet` to show the attachment picker modal bottom sheet.
|
||||
- Added `showStreamAttachmentPickerModalBottomSheet` to show the attachment picker modal bottom
|
||||
sheet.
|
||||
|
||||
🔄 Changed
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ publish_to: 'none'
|
||||
version: 1.0.0+1
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.0 <4.0.0'
|
||||
flutter: ">=3.7.0"
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
flutter: ">=3.10.0"
|
||||
|
||||
dependencies:
|
||||
collection: ^1.15.0
|
||||
|
||||
@@ -66,7 +66,8 @@ class StreamGroupAvatar extends StatelessWidget {
|
||||
Widget avatar = GestureDetector(
|
||||
onTap: onTap,
|
||||
child: ClipRRect(
|
||||
borderRadius: borderRadius ?? previewTheme?.borderRadius,
|
||||
borderRadius:
|
||||
borderRadius ?? previewTheme?.borderRadius ?? BorderRadius.zero,
|
||||
child: Container(
|
||||
constraints: constraints ?? previewTheme?.constraints,
|
||||
decoration: BoxDecoration(color: colorTheme.accentPrimary),
|
||||
|
||||
@@ -86,7 +86,8 @@ class StreamUserAvatar extends StatelessWidget {
|
||||
|
||||
final backupGradientAvatar = ClipRRect(
|
||||
borderRadius: borderRadius ??
|
||||
streamChatTheme.ownMessageTheme.avatarTheme?.borderRadius,
|
||||
streamChatTheme.ownMessageTheme.avatarTheme?.borderRadius ??
|
||||
BorderRadius.zero,
|
||||
child: streamChatConfig.defaultUserImage(context, user),
|
||||
);
|
||||
|
||||
|
||||
@@ -106,9 +106,10 @@ class _ConnectedTitleState extends StatelessWidget {
|
||||
style: textStyle,
|
||||
);
|
||||
} else {
|
||||
final lastActive = otherMember.user?.lastActive ?? DateTime.now();
|
||||
alternativeWidget = Text(
|
||||
'${context.translations.userLastOnlineText} '
|
||||
'${Jiffy(otherMember.user?.lastActive).fromNow()}',
|
||||
'${Jiffy.parseFromDateTime(lastActive).fromNow()}',
|
||||
style: textStyle,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -349,16 +349,16 @@ class _Date extends StatelessWidget {
|
||||
|
||||
if (lastMessageAt.millisecondsSinceEpoch >=
|
||||
startOfDay.millisecondsSinceEpoch) {
|
||||
stringDate = Jiffy(lastMessageAt.toLocal()).jm;
|
||||
stringDate = Jiffy.parseFromDateTime(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(lastMessageAt.toLocal()).EEEE;
|
||||
stringDate = Jiffy.parseFromDateTime(lastMessageAt.toLocal()).EEEE;
|
||||
} else {
|
||||
stringDate = Jiffy(lastMessageAt.toLocal()).yMd;
|
||||
stringDate = Jiffy.parseFromDateTime(lastMessageAt.toLocal()).yMd;
|
||||
}
|
||||
|
||||
return Text(
|
||||
|
||||
@@ -111,7 +111,8 @@ class StreamChannelAvatar extends StatelessWidget {
|
||||
initialData: channel.image,
|
||||
builder: (context, channelImage) {
|
||||
Widget child = ClipRRect(
|
||||
borderRadius: borderRadius ?? previewTheme?.borderRadius,
|
||||
borderRadius:
|
||||
borderRadius ?? previewTheme?.borderRadius ?? BorderRadius.zero,
|
||||
child: Container(
|
||||
constraints: constraints ?? previewTheme?.constraints,
|
||||
decoration: BoxDecoration(color: colorTheme.accentPrimary),
|
||||
|
||||
@@ -611,13 +611,15 @@ class DefaultTranslations implements Translations {
|
||||
} else if (date == yesterday) {
|
||||
return 'yesterday';
|
||||
} else {
|
||||
return 'on ${Jiffy(date).MMMd}';
|
||||
return 'on ${Jiffy.parseFromDateTime(date).MMMd}';
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
String sentAtText({required DateTime date, required DateTime time}) =>
|
||||
'Sent ${_getDay(date)} at ${Jiffy(time.toLocal()).format('HH:mm')}';
|
||||
String sentAtText({required DateTime date, required DateTime time}) {
|
||||
final atTime = Jiffy.parseFromDateTime(time.toLocal());
|
||||
return 'Sent ${_getDay(date)} at ${atTime.jm}';
|
||||
}
|
||||
|
||||
@override
|
||||
String get todayLabel => 'Today';
|
||||
|
||||
@@ -147,6 +147,7 @@ class StreamMessageInput extends StatefulWidget {
|
||||
_defaultClearQuotedMessageKeyPredicate,
|
||||
this.ogPreviewFilter = _defaultOgPreviewFilter,
|
||||
this.hintGetter = _defaultHintGetter,
|
||||
this.contentInsertionConfiguration,
|
||||
});
|
||||
|
||||
/// The predicate used to send a message on desktop/web
|
||||
@@ -340,6 +341,9 @@ class StreamMessageInput extends StatefulWidget {
|
||||
/// Returns the hint text for the message input.
|
||||
final HintGetter hintGetter;
|
||||
|
||||
/// {@macro flutter.widgets.editableText.contentInsertionConfiguration}
|
||||
final ContentInsertionConfiguration? contentInsertionConfiguration;
|
||||
|
||||
static String? _defaultHintGetter(
|
||||
BuildContext context,
|
||||
HintType type,
|
||||
@@ -905,6 +909,8 @@ class StreamMessageInputState extends State<StreamMessageInput>
|
||||
decoration: _getInputDecoration(context),
|
||||
textCapitalization: widget.textCapitalization,
|
||||
autocorrect: widget.autoCorrect,
|
||||
contentInsertionConfiguration:
|
||||
widget.contentInsertionConfiguration,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -120,6 +120,7 @@ class StreamMessageTextField extends StatefulWidget {
|
||||
this.restorationId,
|
||||
this.scribbleEnabled = true,
|
||||
this.enableIMEPersonalizedLearning = true,
|
||||
this.contentInsertionConfiguration,
|
||||
}) : assert(obscuringCharacter.length == 1, ''),
|
||||
smartDashesType = smartDashesType ??
|
||||
(obscureText ? SmartDashesType.disabled : SmartDashesType.enabled),
|
||||
@@ -526,6 +527,9 @@ class StreamMessageTextField extends StatefulWidget {
|
||||
/// {@macro flutter.services.TextInputConfiguration.enableIMEPersonalizedLearning}
|
||||
final bool enableIMEPersonalizedLearning;
|
||||
|
||||
/// {@macro flutter.widgets.editableText.contentInsertionConfiguration}
|
||||
final ContentInsertionConfiguration? contentInsertionConfiguration;
|
||||
|
||||
@override
|
||||
_StreamMessageTextFieldState createState() => _StreamMessageTextFieldState();
|
||||
|
||||
@@ -622,6 +626,9 @@ class StreamMessageTextField extends StatefulWidget {
|
||||
properties.add(DiagnosticsProperty<bool>(
|
||||
'enableIMEPersonalizedLearning', enableIMEPersonalizedLearning,
|
||||
defaultValue: true));
|
||||
properties.add(DiagnosticsProperty<ContentInsertionConfiguration>(
|
||||
'contentInsertionConfiguration', contentInsertionConfiguration,
|
||||
defaultValue: null));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -727,6 +734,7 @@ class _StreamMessageTextFieldState extends State<StreamMessageTextField>
|
||||
restorationId: widget.restorationId,
|
||||
scribbleEnabled: widget.scribbleEnabled,
|
||||
enableIMEPersonalizedLearning: widget.enableIMEPersonalizedLearning,
|
||||
contentInsertionConfiguration: widget.contentInsertionConfiguration,
|
||||
);
|
||||
|
||||
@override
|
||||
|
||||
@@ -669,14 +669,20 @@ class _StreamMessageListViewState extends State<StreamMessageListView> {
|
||||
final isPartOfThread = message.replyCount! > 0 ||
|
||||
message.showInChannel == true;
|
||||
|
||||
final createdAt = message.createdAt.toLocal();
|
||||
final nextCreatedAt = nextMessage.createdAt.toLocal();
|
||||
if (!Jiffy(createdAt).isSame(nextCreatedAt, Units.DAY)) {
|
||||
final createdAt = Jiffy.parseFromDateTime(
|
||||
message.createdAt.toLocal(),
|
||||
);
|
||||
|
||||
final nextCreatedAt = Jiffy.parseFromDateTime(
|
||||
nextMessage.createdAt.toLocal(),
|
||||
);
|
||||
|
||||
if (!createdAt.isSame(nextCreatedAt, unit: Unit.day)) {
|
||||
separator = _buildDateDivider(nextMessage);
|
||||
} else {
|
||||
final hasTimeDiff = !Jiffy(createdAt).isSame(
|
||||
final hasTimeDiff = !createdAt.isSame(
|
||||
nextCreatedAt,
|
||||
Units.MINUTE,
|
||||
unit: Unit.minute,
|
||||
);
|
||||
|
||||
final isNextUserSame =
|
||||
@@ -1071,10 +1077,12 @@ class _StreamMessageListViewState extends State<StreamMessageListView> {
|
||||
|
||||
var hasTimeDiff = false;
|
||||
if (nextMessage != null) {
|
||||
hasTimeDiff = !Jiffy(message.createdAt.toLocal()).isSame(
|
||||
final createdAt = Jiffy.parseFromDateTime(message.createdAt.toLocal());
|
||||
final nextCreatedAt = Jiffy.parseFromDateTime(
|
||||
nextMessage.createdAt.toLocal(),
|
||||
Units.MINUTE,
|
||||
);
|
||||
|
||||
hasTimeDiff = !createdAt.isSame(nextCreatedAt, unit: Unit.minute);
|
||||
}
|
||||
|
||||
final hasFileAttachment =
|
||||
|
||||
@@ -162,8 +162,7 @@ class BottomRow extends StatelessWidget {
|
||||
msg = context.translations.threadReplyCountText(replyCount);
|
||||
}
|
||||
|
||||
// ignore: prefer_function_declarations_over_variables
|
||||
final _onThreadTap = () async {
|
||||
Future<void> _onThreadTap() async {
|
||||
try {
|
||||
var message = this.message;
|
||||
if (showInChannel) {
|
||||
@@ -172,12 +171,9 @@ class BottomRow extends StatelessWidget {
|
||||
}
|
||||
return onThreadTap!(message);
|
||||
} catch (e, stk) {
|
||||
print(e);
|
||||
print(stk);
|
||||
// ignore: avoid_returning_null_for_void
|
||||
return null;
|
||||
debugPrint('Error while fetching message: $e, $stk');
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
const usernameKey = Key('username');
|
||||
|
||||
@@ -191,7 +187,7 @@ class BottomRow extends StatelessWidget {
|
||||
),
|
||||
if (showTimeStamp)
|
||||
Text(
|
||||
Jiffy(message.createdAt.toLocal()).jm,
|
||||
Jiffy.parseFromDateTime(message.createdAt.toLocal()).jm,
|
||||
style: messageTheme.createdAtStyle,
|
||||
),
|
||||
if (showSendingIndicator)
|
||||
|
||||
@@ -20,17 +20,17 @@ class StreamDateDivider extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final createdAt = Jiffy(dateTime);
|
||||
final now = Jiffy(DateTime.now());
|
||||
final createdAt = Jiffy.parseFromDateTime(dateTime);
|
||||
final now = Jiffy.parseFromDateTime(DateTime.now());
|
||||
|
||||
var dayInfo = createdAt.MMMd;
|
||||
if (createdAt.isSame(now, Units.DAY)) {
|
||||
if (createdAt.isSame(now, unit: Unit.day)) {
|
||||
dayInfo = context.translations.todayLabel;
|
||||
} else if (createdAt.isSame(now.subtract(days: 1), Units.DAY)) {
|
||||
} else if (createdAt.isSame(now.subtract(days: 1), unit: Unit.day)) {
|
||||
dayInfo = context.translations.yesterdayLabel;
|
||||
} else if (createdAt.isAfter(now.subtract(days: 7), Units.DAY)) {
|
||||
} else if (createdAt.isAfter(now.subtract(days: 7), unit: Unit.day)) {
|
||||
dayInfo = createdAt.EEEE;
|
||||
} else if (createdAt.isAfter(now.subtract(years: 1), Units.DAY)) {
|
||||
} else if (createdAt.isAfter(now.subtract(years: 1), unit: Unit.day)) {
|
||||
dayInfo = createdAt.MMMd;
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -287,16 +287,16 @@ class ChannelLastMessageDate extends StatelessWidget {
|
||||
|
||||
if (lastMessageAt.millisecondsSinceEpoch >=
|
||||
startOfDay.millisecondsSinceEpoch) {
|
||||
stringDate = Jiffy(lastMessageAt.toLocal()).jm;
|
||||
stringDate = Jiffy.parseFromDateTime(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(lastMessageAt.toLocal()).EEEE;
|
||||
stringDate = Jiffy.parseFromDateTime(lastMessageAt.toLocal()).EEEE;
|
||||
} else {
|
||||
stringDate = Jiffy(lastMessageAt.toLocal()).yMd;
|
||||
stringDate = Jiffy.parseFromDateTime(lastMessageAt.toLocal()).yMd;
|
||||
}
|
||||
|
||||
return Text(
|
||||
|
||||
+2
-2
@@ -227,9 +227,9 @@ class MessageSearchTileMessageDate extends StatelessWidget {
|
||||
if (now.year != createdAt.year ||
|
||||
now.month != createdAt.month ||
|
||||
now.day != createdAt.day) {
|
||||
stringDate = Jiffy(createdAt.toLocal()).yMd;
|
||||
stringDate = Jiffy.parseFromDateTime(createdAt.toLocal()).yMd;
|
||||
} else {
|
||||
stringDate = Jiffy(createdAt.toLocal()).jm;
|
||||
stringDate = Jiffy.parseFromDateTime(createdAt.toLocal()).jm;
|
||||
}
|
||||
|
||||
return Text(
|
||||
|
||||
+3
-5
@@ -202,10 +202,9 @@ class MediaThumbnailProvider extends ImageProvider<MediaThumbnailProvider> {
|
||||
}
|
||||
|
||||
@override
|
||||
@Deprecated('Will get replaced by loadImage in the next major version.')
|
||||
ImageStreamCompleter loadBuffer(
|
||||
ImageStreamCompleter loadImage(
|
||||
MediaThumbnailProvider key,
|
||||
DecoderBufferCallback decode,
|
||||
ImageDecoderCallback decode,
|
||||
) {
|
||||
return MultiFrameImageStreamCompleter(
|
||||
codec: _loadAsync(key, decode),
|
||||
@@ -220,10 +219,9 @@ class MediaThumbnailProvider extends ImageProvider<MediaThumbnailProvider> {
|
||||
);
|
||||
}
|
||||
|
||||
@Deprecated('Will get replaced by loadImage in the next major version.')
|
||||
Future<ui.Codec> _loadAsync(
|
||||
MediaThumbnailProvider key,
|
||||
DecoderBufferCallback decode,
|
||||
ImageDecoderCallback decode,
|
||||
) async {
|
||||
assert(key == this, '$key is not $this');
|
||||
final bytes = await media.thumbnailDataWithSize(
|
||||
|
||||
+2
-1
@@ -176,11 +176,12 @@ 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(user.lastActive).fromNow()}',
|
||||
'${Jiffy.parseFromDateTime(lastActive).fromNow()}',
|
||||
style: chatTheme.textTheme.footnote.copyWith(
|
||||
color: chatTheme.colorTheme.textHighEmphasis.withOpacity(0.5),
|
||||
),
|
||||
|
||||
@@ -165,9 +165,9 @@ class StreamChatState extends State<StreamChat> {
|
||||
@override
|
||||
void didChangeDependencies() {
|
||||
final currentLocale = Localizations.localeOf(context).toString();
|
||||
final availableLocales = Jiffy.getAllAvailableLocales();
|
||||
final availableLocales = Jiffy.getSupportedLocales();
|
||||
if (availableLocales.contains(currentLocale)) {
|
||||
Jiffy.locale(currentLocale);
|
||||
Jiffy.setLocale(currentLocale);
|
||||
}
|
||||
super.didChangeDependencies();
|
||||
}
|
||||
|
||||
@@ -74,11 +74,12 @@ 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(user.lastActive).fromNow()}',
|
||||
'${Jiffy.parseFromDateTime(lastActive).fromNow()}',
|
||||
style: chatTheme.textTheme.footnote.copyWith(
|
||||
color: chatTheme.colorTheme.textHighEmphasis.withOpacity(0.5),
|
||||
),
|
||||
|
||||
@@ -6,42 +6,42 @@ repository: https://github.com/GetStream/stream-chat-flutter
|
||||
issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues
|
||||
|
||||
environment:
|
||||
sdk: ">=2.19.0 <4.0.0"
|
||||
flutter: ">=3.7.0"
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
flutter: ">=3.10.0"
|
||||
|
||||
dependencies:
|
||||
cached_network_image: ^3.2.3
|
||||
chewie: ^1.7.0
|
||||
collection: ^1.17.0
|
||||
collection: ^1.17.1
|
||||
contextmenu: ^3.0.0
|
||||
dart_vlc: ^0.4.0
|
||||
desktop_drop: ^0.4.1
|
||||
diacritic: ^0.1.4
|
||||
dio: ^5.2.1+1
|
||||
dio: ^5.3.2
|
||||
ezanimation: ^0.6.0
|
||||
file_picker: ^5.3.1
|
||||
file_picker: ^5.3.3
|
||||
file_selector: ^1.0.0
|
||||
flutter:
|
||||
sdk: flutter
|
||||
flutter_markdown: ^0.6.15
|
||||
flutter_markdown: ^0.6.17+1
|
||||
flutter_portal: ^1.1.4
|
||||
flutter_svg: ^2.0.5
|
||||
flutter_svg: ^2.0.7
|
||||
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.15
|
||||
photo_manager: ^2.6.0
|
||||
image_picker: ^1.0.2
|
||||
jiffy: ^6.2.1
|
||||
lottie: ^2.6.0
|
||||
meta: ^1.9.1
|
||||
path_provider: ^2.1.0
|
||||
photo_manager: ^2.7.1
|
||||
photo_view: ^0.14.0
|
||||
rxdart: ^0.27.7
|
||||
share_plus: ^7.0.2
|
||||
share_plus: ^7.1.0
|
||||
shimmer: ^3.0.0
|
||||
stream_chat_flutter_core: ^6.7.0
|
||||
synchronized: ^3.1.0
|
||||
thumblr: ^0.0.4
|
||||
url_launcher: ^6.1.11
|
||||
url_launcher: ^6.1.12
|
||||
video_player: ^2.7.0
|
||||
video_player_macos: ^2.0.1
|
||||
video_thumbnail: ^0.5.3
|
||||
@@ -74,4 +74,4 @@ dev_dependencies:
|
||||
sdk: flutter
|
||||
golden_toolkit: ^0.15.0
|
||||
mocktail: ^1.0.0
|
||||
path: ^1.8.2
|
||||
path: ^1.8.3
|
||||
@@ -1,3 +1,8 @@
|
||||
## Upcoming
|
||||
|
||||
- Updated minimum supported `SDK` version to Flutter 3.10/Dart 3.0
|
||||
- Updated `stream_chat` dependency to [`Upcoming`](https://pub.dev/packages/stream_chat/changelog).
|
||||
|
||||
## 6.7.0
|
||||
|
||||
- Updated `stream_chat` dependency to [`6.7.0`](https://pub.dev/packages/stream_chat/changelog).
|
||||
|
||||
@@ -4,8 +4,8 @@ publish_to: 'none'
|
||||
version: 1.0.0+1
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.0 <4.0.0'
|
||||
flutter: ">=3.7.0"
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
flutter: ">=3.10.0"
|
||||
|
||||
dependencies:
|
||||
cupertino_icons: ^1.0.3
|
||||
|
||||
@@ -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.19.0 <4.0.0"
|
||||
flutter: ">=3.7.0"
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
flutter: ">=3.10.0"
|
||||
|
||||
dependencies:
|
||||
collection: ^1.17.0
|
||||
connectivity_plus: ^4.0.1
|
||||
collection: ^1.17.1
|
||||
connectivity_plus: ^4.0.2
|
||||
flutter:
|
||||
sdk: flutter
|
||||
freezed_annotation: ^2.2.0
|
||||
meta: ^1.8.0
|
||||
freezed_annotation: ^2.4.1
|
||||
meta: ^1.9.1
|
||||
rxdart: ^0.27.7
|
||||
stream_chat: ^6.7.0
|
||||
|
||||
dev_dependencies:
|
||||
build_runner: ^2.3.3
|
||||
build_runner: ^2.4.6
|
||||
fake_async: ^1.3.1
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
freezed: ^2.4.0
|
||||
freezed: ^2.4.1
|
||||
mocktail: ^1.0.0
|
||||
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
## Upcoming
|
||||
|
||||
* Updated minimum supported `SDK` version to Flutter 3.10/Dart 3.0
|
||||
* Updated `stream_chat_flutter` dependency to [`Upcoming`](https://pub.dev/packages/stream_chat_flutter/changelog).
|
||||
|
||||
## 5.8.0
|
||||
|
||||
* Updated `stream_chat_flutter` dependency to [`6.8.0`](https://pub.dev/packages/stream_chat_flutter/changelog).
|
||||
|
||||
@@ -270,13 +270,15 @@ class NnStreamChatLocalizations extends GlobalStreamChatLocalizations {
|
||||
} else if (date == yesterday) {
|
||||
return 'yesterday';
|
||||
} else {
|
||||
return 'on ${Jiffy(date).MMMd}';
|
||||
return 'on ${Jiffy.parseFromDateTime(date).MMMd}';
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
String sentAtText({required DateTime date, required DateTime time}) =>
|
||||
'Sent ${_getDay(date)} at ${Jiffy(time.toLocal()).format('HH:mm')}';
|
||||
String sentAtText({required DateTime date, required DateTime time}) {
|
||||
final atTime = Jiffy.parseFromDateTime(time.toLocal());
|
||||
return 'Sent ${_getDay(date)} at ${atTime.jm}';
|
||||
}
|
||||
|
||||
@override
|
||||
String get todayLabel => 'Today';
|
||||
|
||||
@@ -5,8 +5,8 @@ publish_to: 'none'
|
||||
version: 1.0.0+1
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.0 <4.0.0'
|
||||
flutter: ">=3.7.0"
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
flutter: ">=3.10.0"
|
||||
|
||||
dependencies:
|
||||
cupertino_icons: ^1.0.3
|
||||
|
||||
@@ -249,13 +249,15 @@ class StreamChatLocalizationsCa extends GlobalStreamChatLocalizations {
|
||||
} else if (date == yesterday) {
|
||||
return 'ahir';
|
||||
} else {
|
||||
return 'el ${Jiffy(date).MMMd}';
|
||||
return 'el ${Jiffy.parseFromDateTime(date).MMMd}';
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
String sentAtText({required DateTime date, required DateTime time}) =>
|
||||
'''Enviat el ${_getDay(date)} a les ${Jiffy(time.toLocal()).format('HH:mm')}''';
|
||||
String sentAtText({required DateTime date, required DateTime time}) {
|
||||
final atTime = Jiffy.parseFromDateTime(time.toLocal());
|
||||
return 'Enviat el ${_getDay(date)} a les ${atTime.jm}';
|
||||
}
|
||||
|
||||
@override
|
||||
String get todayLabel => 'Avui';
|
||||
|
||||
@@ -239,13 +239,15 @@ class StreamChatLocalizationsDe extends GlobalStreamChatLocalizations {
|
||||
} else if (date == yesterday) {
|
||||
return 'Gestern';
|
||||
} else {
|
||||
return 'am ${Jiffy(date).MMMd}';
|
||||
return 'am ${Jiffy.parseFromDateTime(date).MMMd}';
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
String sentAtText({required DateTime date, required DateTime time}) =>
|
||||
'Gesendet ${_getDay(date)} am ${Jiffy(time.toLocal()).format('HH:mm')}';
|
||||
String sentAtText({required DateTime date, required DateTime time}) {
|
||||
final atTime = Jiffy.parseFromDateTime(time.toLocal());
|
||||
return 'Gesendet ${_getDay(date)} am ${atTime.jm}';
|
||||
}
|
||||
|
||||
@override
|
||||
String get todayLabel => 'Heute';
|
||||
|
||||
@@ -246,13 +246,15 @@ class StreamChatLocalizationsEn extends GlobalStreamChatLocalizations {
|
||||
} else if (date == yesterday) {
|
||||
return 'yesterday';
|
||||
} else {
|
||||
return 'on ${Jiffy(date).MMMd}';
|
||||
return 'on ${Jiffy.parseFromDateTime(date).MMMd}';
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
String sentAtText({required DateTime date, required DateTime time}) =>
|
||||
'Sent ${_getDay(date)} at ${Jiffy(time.toLocal()).format('HH:mm')}';
|
||||
String sentAtText({required DateTime date, required DateTime time}) {
|
||||
final atTime = Jiffy.parseFromDateTime(time.toLocal());
|
||||
return 'Sent ${_getDay(date)} at ${atTime.jm}';
|
||||
}
|
||||
|
||||
@override
|
||||
String get todayLabel => 'Today';
|
||||
|
||||
@@ -250,13 +250,15 @@ class StreamChatLocalizationsEs extends GlobalStreamChatLocalizations {
|
||||
} else if (date == yesterday) {
|
||||
return 'ayer';
|
||||
} else {
|
||||
return 'el ${Jiffy(date).MMMd}';
|
||||
return 'el ${Jiffy.parseFromDateTime(date).MMMd}';
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
String sentAtText({required DateTime date, required DateTime time}) =>
|
||||
'''Enviado el ${_getDay(date)} a las ${Jiffy(time.toLocal()).format('HH:mm')}''';
|
||||
String sentAtText({required DateTime date, required DateTime time}) {
|
||||
final atTime = Jiffy.parseFromDateTime(time.toLocal());
|
||||
return 'Enviado el ${_getDay(date)} a las ${atTime.jm}';
|
||||
}
|
||||
|
||||
@override
|
||||
String get todayLabel => 'Hoy';
|
||||
|
||||
@@ -249,13 +249,15 @@ class StreamChatLocalizationsFr extends GlobalStreamChatLocalizations {
|
||||
} else if (date == yesterday) {
|
||||
return 'hier';
|
||||
} else {
|
||||
return 'le ${Jiffy(date).MMMd}';
|
||||
return 'le ${Jiffy.parseFromDateTime(date).MMMd}';
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
String sentAtText({required DateTime date, required DateTime time}) =>
|
||||
'Envoyé ${_getDay(date)} à ${Jiffy(time.toLocal()).format('HH:mm')}';
|
||||
String sentAtText({required DateTime date, required DateTime time}) {
|
||||
final atTime = Jiffy.parseFromDateTime(time.toLocal());
|
||||
return 'Envoyé ${_getDay(date)} à ${atTime.jm}';
|
||||
}
|
||||
|
||||
@override
|
||||
String get todayLabel => "Aujourd'hui";
|
||||
|
||||
@@ -243,13 +243,15 @@ class StreamChatLocalizationsHi extends GlobalStreamChatLocalizations {
|
||||
} else if (date == yesterday) {
|
||||
return 'कल';
|
||||
} else {
|
||||
return '${Jiffy(date).MMMd} को';
|
||||
return '${Jiffy.parseFromDateTime(date).MMMd} को';
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
String sentAtText({required DateTime date, required DateTime time}) =>
|
||||
'${_getDay(date)} ${Jiffy(time.toLocal()).format('HH:mm')} बजे भेजा गया';
|
||||
String sentAtText({required DateTime date, required DateTime time}) {
|
||||
final atTime = Jiffy.parseFromDateTime(time.toLocal());
|
||||
return '${_getDay(date)} ${atTime.jm} बजे भेजा गया';
|
||||
}
|
||||
|
||||
@override
|
||||
String get todayLabel => 'आज';
|
||||
|
||||
@@ -252,13 +252,15 @@ Il file è troppo grande per essere caricato. Il limite è di $limitInMB MB.''';
|
||||
} else if (date == yesterday) {
|
||||
return 'ieri';
|
||||
} else {
|
||||
return 'il ${Jiffy(date).MMMd}';
|
||||
return 'il ${Jiffy.parseFromDateTime(date).MMMd}';
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
String sentAtText({required DateTime date, required DateTime time}) =>
|
||||
"Inviato ${_getDay(date)} alle ${Jiffy(time.toLocal()).format('HH:mm')}";
|
||||
String sentAtText({required DateTime date, required DateTime time}) {
|
||||
final atTime = Jiffy.parseFromDateTime(time.toLocal());
|
||||
return 'Inviato ${_getDay(date)} alle ${atTime.jm}';
|
||||
}
|
||||
|
||||
@override
|
||||
String get todayLabel => 'Oggi';
|
||||
|
||||
@@ -236,13 +236,15 @@ class StreamChatLocalizationsJa extends GlobalStreamChatLocalizations {
|
||||
} else if (date == yesterday) {
|
||||
return '昨日';
|
||||
} else {
|
||||
return '${Jiffy(date).MMMd}に';
|
||||
return '${Jiffy.parseFromDateTime(date).MMMd}に';
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
String sentAtText({required DateTime date, required DateTime time}) =>
|
||||
'${_getDay(date)}の${Jiffy(time.toLocal()).format('HH:mm')}に送信しました ';
|
||||
String sentAtText({required DateTime date, required DateTime time}) {
|
||||
final atTime = Jiffy.parseFromDateTime(time.toLocal());
|
||||
return '${_getDay(date)}の${atTime.jm}に送信しました ';
|
||||
}
|
||||
|
||||
@override
|
||||
String get todayLabel => '今日';
|
||||
|
||||
@@ -235,13 +235,15 @@ class StreamChatLocalizationsKo extends GlobalStreamChatLocalizations {
|
||||
} else if (date == yesterday) {
|
||||
return '어제';
|
||||
} else {
|
||||
return '${Jiffy(date).MMMd}에';
|
||||
return '${Jiffy.parseFromDateTime(date).MMMd}에';
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
String sentAtText({required DateTime date, required DateTime time}) =>
|
||||
'${_getDay(date)} ${Jiffy(time.toLocal()).format('HH:mm')}에 보냈습니다';
|
||||
String sentAtText({required DateTime date, required DateTime time}) {
|
||||
final atTime = Jiffy.parseFromDateTime(time.toLocal());
|
||||
return '${_getDay(date)} ${atTime.jm}에 보냈습니다';
|
||||
}
|
||||
|
||||
@override
|
||||
String get todayLabel => '오늘';
|
||||
|
||||
@@ -242,13 +242,15 @@ class StreamChatLocalizationsNo extends GlobalStreamChatLocalizations {
|
||||
} else if (date == yesterday) {
|
||||
return 'i går';
|
||||
} else {
|
||||
return 'på ${Jiffy(date).MMMd}';
|
||||
return 'på ${Jiffy.parseFromDateTime(date).MMMd}';
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
String sentAtText({required DateTime date, required DateTime time}) =>
|
||||
'Sent ${_getDay(date)} kl. ${Jiffy(time.toLocal()).format('HH:mm')}';
|
||||
String sentAtText({required DateTime date, required DateTime time}) {
|
||||
final atTime = Jiffy.parseFromDateTime(time.toLocal());
|
||||
return 'Sent ${_getDay(date)} kl. ${atTime.jm}';
|
||||
}
|
||||
|
||||
@override
|
||||
String get todayLabel => 'I dag';
|
||||
|
||||
@@ -244,13 +244,15 @@ class StreamChatLocalizationsPt extends GlobalStreamChatLocalizations {
|
||||
} else if (date == yesterday) {
|
||||
return 'Ontem';
|
||||
} else {
|
||||
return 'o ${Jiffy(date).MMMd}';
|
||||
return 'o ${Jiffy.parseFromDateTime(date).MMMd}';
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
String sentAtText({required DateTime date, required DateTime time}) =>
|
||||
'''Enviado ${_getDay(date)} às ${Jiffy(time.toLocal()).format('HH:mm')}''';
|
||||
String sentAtText({required DateTime date, required DateTime time}) {
|
||||
final atTime = Jiffy.parseFromDateTime(time.toLocal());
|
||||
return 'Enviado ${_getDay(date)} às ${atTime.jm}';
|
||||
}
|
||||
|
||||
@override
|
||||
String get todayLabel => 'Hoje';
|
||||
|
||||
@@ -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.19.0 <4.0.0"
|
||||
flutter: ">=3.7.0"
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
flutter: ">=3.10.0"
|
||||
|
||||
dependencies:
|
||||
flutter:
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
## Upcoming
|
||||
|
||||
- Updated minimum supported `SDK` version to Flutter 3.10/Dart 3.0
|
||||
- Updated `stream_chat` dependency to [`Upcoming`](https://pub.dev/packages/stream_chat/changelog).
|
||||
|
||||
## 6.7.0
|
||||
|
||||
- [[#1683]](https://github.com/GetStream/stream-chat-flutter/issues/1683) Fixed SqliteException no such
|
||||
|
||||
@@ -4,8 +4,8 @@ publish_to: 'none'
|
||||
version: 1.0.0+1
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.0 <4.0.0'
|
||||
flutter: ">=3.7.0"
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
flutter: ">=3.10.0"
|
||||
|
||||
dependencies:
|
||||
cupertino_icons: ^1.0.3
|
||||
|
||||
@@ -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.19.0 <4.0.0"
|
||||
flutter: ">=3.7.0"
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
flutter: ">=3.10.0"
|
||||
|
||||
dependencies:
|
||||
drift: ^2.8.0
|
||||
drift: ^2.11.0
|
||||
flutter:
|
||||
sdk: flutter
|
||||
logging: ^1.2.0
|
||||
meta: ^1.8.0
|
||||
path: ^1.8.2
|
||||
path_provider: ^2.0.15
|
||||
meta: ^1.9.1
|
||||
path: ^1.8.3
|
||||
path_provider: ^2.1.0
|
||||
sqlite3_flutter_libs: ^0.5.15
|
||||
stream_chat: ^6.7.0
|
||||
|
||||
dev_dependencies:
|
||||
build_runner: ^2.3.3
|
||||
drift_dev: ^2.8.3
|
||||
build_runner: ^2.4.6
|
||||
drift_dev: ^2.11.0
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
mocktail: ^1.0.0
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
name: stream_chat_flutter_workspace
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.0 <4.0.0'
|
||||
sdk: '>=3.0.0 <4.0.0'
|
||||
|
||||
dev_dependencies:
|
||||
melos: ^3.1.0
|
||||
|
||||
Reference in New Issue
Block a user