Merge pull request #1010 from GetStream/release/3.5.1
chore(llc,core,ui): update pubspec and changelogs
This commit is contained in:
@@ -1,3 +1,9 @@
|
|||||||
|
## 3.5.1
|
||||||
|
|
||||||
|
🐞 Fixed
|
||||||
|
- `channel.unreadCount` was being set as using global unread count on a very specific case.
|
||||||
|
- The reconnection logic for the WebSocket connection is now more robust.
|
||||||
|
|
||||||
## 3.5.0
|
## 3.5.0
|
||||||
|
|
||||||
✅ Added
|
✅ Added
|
||||||
|
|||||||
@@ -1902,7 +1902,6 @@ class ChannelClientState {
|
|||||||
readList.add(Read(
|
readList.add(Read(
|
||||||
user: event.user!,
|
user: event.user!,
|
||||||
lastRead: event.createdAt,
|
lastRead: event.createdAt,
|
||||||
unreadMessages: event.totalUnreadCount ?? 0,
|
|
||||||
));
|
));
|
||||||
_channelState = _channelState.copyWith(read: readList);
|
_channelState = _channelState.copyWith(read: readList);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -190,8 +190,12 @@ class WebSocket with TimerHelper {
|
|||||||
_connectionStatus = ConnectionStatus.connecting;
|
_connectionStatus = ConnectionStatus.connecting;
|
||||||
connectionCompleter = Completer<Event>();
|
connectionCompleter = Completer<Event>();
|
||||||
|
|
||||||
final uri = await _buildUri();
|
try {
|
||||||
_initWebSocketChannel(uri);
|
final uri = await _buildUri();
|
||||||
|
_initWebSocketChannel(uri);
|
||||||
|
} catch (e, stk) {
|
||||||
|
_onConnectionError(e, stk);
|
||||||
|
}
|
||||||
|
|
||||||
return connectionCompleter!.future;
|
return connectionCompleter!.future;
|
||||||
}
|
}
|
||||||
@@ -216,7 +220,11 @@ class WebSocket with TimerHelper {
|
|||||||
Duration(milliseconds: delay),
|
Duration(milliseconds: delay),
|
||||||
() async {
|
() async {
|
||||||
final uri = await _buildUri(refreshToken: refreshToken);
|
final uri = await _buildUri(refreshToken: refreshToken);
|
||||||
_initWebSocketChannel(uri);
|
try {
|
||||||
|
_initWebSocketChannel(uri);
|
||||||
|
} catch (e, stk) {
|
||||||
|
_onConnectionError(e, stk);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,4 +3,4 @@ import 'package:stream_chat/src/client/client.dart';
|
|||||||
/// Current package version
|
/// Current package version
|
||||||
/// Used in [StreamChatClient] to build the `x-stream-client` header
|
/// Used in [StreamChatClient] to build the `x-stream-client` header
|
||||||
// ignore: constant_identifier_names
|
// ignore: constant_identifier_names
|
||||||
const PACKAGE_VERSION = '3.5.0';
|
const PACKAGE_VERSION = '3.5.1';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
name: stream_chat
|
name: stream_chat
|
||||||
homepage: https://getstream.io/
|
homepage: https://getstream.io/
|
||||||
description: The official Dart client for Stream Chat, a service for building chat applications.
|
description: The official Dart client for Stream Chat, a service for building chat applications.
|
||||||
version: 3.5.0
|
version: 3.5.1
|
||||||
repository: https://github.com/GetStream/stream-chat-flutter
|
repository: https://github.com/GetStream/stream-chat-flutter
|
||||||
issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues
|
issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues
|
||||||
|
|
||||||
@@ -30,5 +30,5 @@ dev_dependencies:
|
|||||||
dart_code_metrics: ^4.4.0
|
dart_code_metrics: ^4.4.0
|
||||||
freezed: ^1.0.0
|
freezed: ^1.0.0
|
||||||
json_serializable: ^6.0.1
|
json_serializable: ^6.0.1
|
||||||
mocktail: ^0.2.0
|
mocktail: ^0.3.0
|
||||||
test: ^1.17.12
|
test: ^1.17.12
|
||||||
@@ -1,3 +1,10 @@
|
|||||||
|
## 3.5.1
|
||||||
|
|
||||||
|
🐞 Fixed
|
||||||
|
|
||||||
|
- Mentions overlay now doesn't overflow when there is not enough height available
|
||||||
|
- Updated `stream_chat_flutter_core` dependency to [`3.5.1`](https://pub.dev/packages/stream_chat_flutter_core/changelog).
|
||||||
|
|
||||||
## 3.5.0
|
## 3.5.0
|
||||||
|
|
||||||
🐞 Fixed
|
🐞 Fixed
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ apply plugin: 'kotlin-android'
|
|||||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 30
|
compileSdkVersion 31
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main.java.srcDirs += 'src/main/kotlin'
|
main.java.srcDirs += 'src/main/kotlin'
|
||||||
@@ -41,7 +41,7 @@ android {
|
|||||||
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
||||||
applicationId "com.example.example"
|
applicationId "com.example.example"
|
||||||
minSdkVersion 21
|
minSdkVersion 21
|
||||||
targetSdkVersion 30
|
targetSdkVersion 31
|
||||||
versionCode flutterVersionCode.toInteger()
|
versionCode flutterVersionCode.toInteger()
|
||||||
versionName flutterVersionName
|
versionName flutterVersionName
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
android:theme="@style/LaunchTheme"
|
android:theme="@style/LaunchTheme"
|
||||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
||||||
android:hardwareAccelerated="true"
|
android:hardwareAccelerated="true"
|
||||||
|
android:exported="true"
|
||||||
android:windowSoftInputMode="adjustResize">
|
android:windowSoftInputMode="adjustResize">
|
||||||
<!-- Specifies an Android theme to apply to this Activity as soon as
|
<!-- Specifies an Android theme to apply to this Activity as soon as
|
||||||
the Android process has started. This theme is visible to the user
|
the Android process has started. This theme is visible to the user
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
buildscript {
|
buildscript {
|
||||||
ext.kotlin_version = '1.5.20'
|
ext.kotlin_version = '1.6.0'
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
jcenter()
|
jcenter()
|
||||||
|
|||||||
@@ -27,9 +27,12 @@ dependencies:
|
|||||||
cupertino_icons: ^1.0.3
|
cupertino_icons: ^1.0.3
|
||||||
flutter:
|
flutter:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
stream_chat_flutter: ^2.2.1
|
stream_chat_flutter:
|
||||||
stream_chat_localizations: ^1.1.0
|
path: ../
|
||||||
stream_chat_persistence: ^2.2.0
|
stream_chat_localizations:
|
||||||
|
path: ../../stream_chat_localizations
|
||||||
|
stream_chat_persistence:
|
||||||
|
path: ../../stream_chat_persistence
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
|||||||
@@ -158,7 +158,10 @@ class _MediaListViewState extends State<MediaListView> {
|
|||||||
))
|
))
|
||||||
.firstOrNull;
|
.firstOrNull;
|
||||||
|
|
||||||
final media = await assetList?.getAssetListPaged(_currentPage, 50);
|
final media = await assetList?.getAssetListPaged(
|
||||||
|
page: _currentPage,
|
||||||
|
size: 50,
|
||||||
|
);
|
||||||
|
|
||||||
if (media?.isNotEmpty == true) {
|
if (media?.isNotEmpty == true) {
|
||||||
setState(() {
|
setState(() {
|
||||||
@@ -197,7 +200,7 @@ class MediaThumbnailProvider extends ImageProvider<MediaThumbnailProvider> {
|
|||||||
DecoderCallback decode,
|
DecoderCallback decode,
|
||||||
) async {
|
) async {
|
||||||
assert(key == this, 'Checks MediaThumbnailProvider');
|
assert(key == this, 'Checks MediaThumbnailProvider');
|
||||||
final bytes = await media.thumbData;
|
final bytes = await media.thumbnailData;
|
||||||
|
|
||||||
return decode(bytes!);
|
return decode(bytes!);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -344,6 +344,7 @@ class MessageInputState extends State<MessageInput> {
|
|||||||
|
|
||||||
final _imagePicker = ImagePicker();
|
final _imagePicker = ImagePicker();
|
||||||
late final _focusNode = widget.focusNode ?? FocusNode();
|
late final _focusNode = widget.focusNode ?? FocusNode();
|
||||||
|
late final _isInternalFocusNode = widget.focusNode == null;
|
||||||
bool _inputEnabled = true;
|
bool _inputEnabled = true;
|
||||||
bool _commandEnabled = false;
|
bool _commandEnabled = false;
|
||||||
bool _showCommandsOverlay = false;
|
bool _showCommandsOverlay = false;
|
||||||
@@ -1191,30 +1192,36 @@ class MessageInputState extends State<MessageInput> {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return UserMentionsOverlay(
|
return LayoutBuilder(
|
||||||
query: query,
|
builder: (context, snapshot) => UserMentionsOverlay(
|
||||||
mentionAllAppUsers: widget.mentionAllAppUsers,
|
query: query,
|
||||||
client: StreamChat.of(context).client,
|
mentionAllAppUsers: widget.mentionAllAppUsers,
|
||||||
channel: channel,
|
client: StreamChat.of(context).client,
|
||||||
size: Size(renderObject.size.width - 16, 400),
|
channel: channel,
|
||||||
mentionsTileBuilder: tileBuilder,
|
size: Size(
|
||||||
onMentionUserTap: (user) {
|
renderObject.size.width - 16,
|
||||||
_mentionedUsers.add(user);
|
min(400, (snapshot.maxHeight - renderObject.size.height - 16).abs()),
|
||||||
splits[splits.length - 1] = user.name;
|
),
|
||||||
final rejoin = splits.join('@');
|
mentionsTileBuilder: tileBuilder,
|
||||||
|
onMentionUserTap: (user) {
|
||||||
|
_mentionedUsers.add(user);
|
||||||
|
splits[splits.length - 1] = user.name;
|
||||||
|
final rejoin = splits.join('@');
|
||||||
|
|
||||||
textEditingController.value = TextEditingValue(
|
textEditingController.value = TextEditingValue(
|
||||||
text: rejoin +
|
text: rejoin +
|
||||||
textEditingController.text.substring(
|
textEditingController.text.substring(
|
||||||
textEditingController.selection.start,
|
textEditingController.selection.start,
|
||||||
),
|
),
|
||||||
selection: TextSelection.collapsed(
|
selection: TextSelection.collapsed(
|
||||||
offset: rejoin.length,
|
offset: rejoin.length,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
_onChangedDebounced.cancel();
|
_onChangedDebounced.cancel();
|
||||||
setState(() => _showMentionsOverlay = false);
|
|
||||||
},
|
setState(() => _showMentionsOverlay = false);
|
||||||
|
},
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1925,6 +1932,7 @@ class MessageInputState extends State<MessageInput> {
|
|||||||
void dispose() {
|
void dispose() {
|
||||||
textEditingController.dispose();
|
textEditingController.dispose();
|
||||||
_focusNode.removeListener(_focusNodeListener);
|
_focusNode.removeListener(_focusNodeListener);
|
||||||
|
if (_isInternalFocusNode) _focusNode.dispose();
|
||||||
_stopSlowMode();
|
_stopSlowMode();
|
||||||
_onChangedDebounced.cancel();
|
_onChangedDebounced.cancel();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
@@ -1970,12 +1978,12 @@ class _PickerWidget extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _PickerWidgetState extends State<_PickerWidget> {
|
class _PickerWidgetState extends State<_PickerWidget> {
|
||||||
Future<bool>? requestPermission;
|
Future<PermissionState>? requestPermission;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
requestPermission = PhotoManager.requestPermission();
|
requestPermission = PhotoManager.requestPermissionExtend();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -1983,14 +1991,15 @@ class _PickerWidgetState extends State<_PickerWidget> {
|
|||||||
if (widget.filePickerIndex != 0) {
|
if (widget.filePickerIndex != 0) {
|
||||||
return const Offstage();
|
return const Offstage();
|
||||||
}
|
}
|
||||||
return FutureBuilder<bool>(
|
return FutureBuilder<PermissionState>(
|
||||||
future: requestPermission,
|
future: requestPermission,
|
||||||
builder: (context, snapshot) {
|
builder: (context, snapshot) {
|
||||||
if (!snapshot.hasData) {
|
if (!snapshot.hasData) {
|
||||||
return const Offstage();
|
return const Offstage();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (snapshot.data!) {
|
if ([PermissionState.authorized, PermissionState.limited]
|
||||||
|
.contains(snapshot.data)) {
|
||||||
if (widget.containsFile) {
|
if (widget.containsFile) {
|
||||||
return GestureDetector(
|
return GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
name: stream_chat_flutter
|
name: stream_chat_flutter
|
||||||
homepage: https://github.com/GetStream/stream-chat-flutter
|
homepage: https://github.com/GetStream/stream-chat-flutter
|
||||||
description: Stream Chat official Flutter SDK. Build your own chat experience using Dart and Flutter.
|
description: Stream Chat official Flutter SDK. Build your own chat experience using Dart and Flutter.
|
||||||
version: 3.5.0
|
version: 3.5.1
|
||||||
repository: https://github.com/GetStream/stream-chat-flutter
|
repository: https://github.com/GetStream/stream-chat-flutter
|
||||||
issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues
|
issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues
|
||||||
|
|
||||||
@@ -31,12 +31,12 @@ dependencies:
|
|||||||
lottie: ^1.0.1
|
lottie: ^1.0.1
|
||||||
meta: ^1.3.0
|
meta: ^1.3.0
|
||||||
path_provider: ^2.0.1
|
path_provider: ^2.0.1
|
||||||
photo_manager: ^1.2.6+1
|
photo_manager: ^2.0.1
|
||||||
photo_view: ^0.13.0
|
photo_view: ^0.13.0
|
||||||
rxdart: ^0.27.0
|
rxdart: ^0.27.0
|
||||||
share_plus: ^3.0.4
|
share_plus: ^4.0.1
|
||||||
shimmer: ^2.0.0
|
shimmer: ^2.0.0
|
||||||
stream_chat_flutter_core: ^3.5.0
|
stream_chat_flutter_core: ^3.5.1
|
||||||
substring_highlight: ^1.0.26
|
substring_highlight: ^1.0.26
|
||||||
synchronized: ^3.0.0
|
synchronized: ^3.0.0
|
||||||
url_launcher: ^6.0.3
|
url_launcher: ^6.0.3
|
||||||
@@ -58,5 +58,5 @@ dev_dependencies:
|
|||||||
flutter_test:
|
flutter_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
golden_toolkit: ^0.13.0
|
golden_toolkit: ^0.13.0
|
||||||
mocktail: ^0.2.0
|
mocktail: ^0.3.0
|
||||||
path: ^1.8.0
|
path: ^1.8.0
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
## 3.5.1
|
||||||
|
|
||||||
|
- Updated `stream_chat` dependency to [`3.5.1`](https://pub.dev/packages/stream_chat/changelog).
|
||||||
|
|
||||||
## 3.5.0
|
## 3.5.0
|
||||||
|
|
||||||
- Updated `stream_chat` dependency to [`3.5.0`](https://pub.dev/packages/stream_chat/changelog).
|
- Updated `stream_chat` dependency to [`3.5.0`](https://pub.dev/packages/stream_chat/changelog).
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
name: stream_chat_flutter_core
|
name: stream_chat_flutter_core
|
||||||
homepage: https://github.com/GetStream/stream-chat-flutter
|
homepage: https://github.com/GetStream/stream-chat-flutter
|
||||||
description: Stream Chat official Flutter SDK Core. Build your own chat experience using Dart and Flutter.
|
description: Stream Chat official Flutter SDK Core. Build your own chat experience using Dart and Flutter.
|
||||||
version: 3.5.0
|
version: 3.5.1
|
||||||
repository: https://github.com/GetStream/stream-chat-flutter
|
repository: https://github.com/GetStream/stream-chat-flutter
|
||||||
issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues
|
issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues
|
||||||
|
|
||||||
@@ -16,12 +16,12 @@ dependencies:
|
|||||||
sdk: flutter
|
sdk: flutter
|
||||||
meta: ^1.3.0
|
meta: ^1.3.0
|
||||||
rxdart: ^0.27.0
|
rxdart: ^0.27.0
|
||||||
stream_chat: ^3.5.0
|
stream_chat: ^3.5.1
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
dart_code_metrics: ^4.4.0
|
dart_code_metrics: ^4.4.0
|
||||||
fake_async: ^1.2.0
|
fake_async: ^1.2.0
|
||||||
flutter_test:
|
flutter_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
mocktail: ^0.2.0
|
mocktail: ^0.3.0
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user