Merge branch 'develop' into docs/versioning-policy

This commit is contained in:
Salvatore Giordano
2021-10-04 13:38:23 +02:00
32 changed files with 52 additions and 39 deletions
@@ -2,7 +2,7 @@ name: stream_flutter_workflow
env: env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true'
flutter_version: "2.5.0" flutter_version: "2.5.1"
on: on:
pull_request: pull_request:
+1
View File
@@ -7,6 +7,7 @@
🐞 Fixed 🐞 Fixed
- [[#710]](https://github.com/GetStream/stream-chat-flutter/issues/710) Fixed JWT requiring using `String` as id. - [[#710]](https://github.com/GetStream/stream-chat-flutter/issues/710) Fixed JWT requiring using `String` as id.
- Fixed expired CDN attachment links not updating correctly.
## 3.0.0 ## 3.0.0
@@ -1497,7 +1497,7 @@ class ChannelClientState {
} }
} }
void _checkExpiredAttachmentMessages(ChannelState channelState) { void _checkExpiredAttachmentMessages(ChannelState channelState) async {
final expiredAttachmentMessagesId = channelState.messages final expiredAttachmentMessagesId = channelState.messages
.where((m) => .where((m) =>
!_updatedMessagesIds.contains(m.id) && !_updatedMessagesIds.contains(m.id) &&
@@ -1508,20 +1508,24 @@ class ChannelClientState {
return false; return false;
} }
final uri = Uri.parse(url); final uri = Uri.parse(url);
if (uri.host != 'stream-io-cdn.com' || if (!uri.host.endsWith('stream-io-cdn.com') ||
uri.queryParameters['Expires'] == null) { uri.queryParameters['Expires'] == null) {
return false; return false;
} }
final expiration = final secondsFromEpoch =
DateTime.parse(uri.queryParameters['Expires']!); int.parse(uri.queryParameters['Expires']!);
final expiration = DateTime.fromMillisecondsSinceEpoch(
secondsFromEpoch * 1000);
return expiration.isBefore(DateTime.now()); return expiration.isBefore(DateTime.now());
}) == }) ==
true) true)
.map((e) => e.id) .map((e) => e.id)
.toList(); .toList();
if (expiredAttachmentMessagesId.isNotEmpty == true) { if (expiredAttachmentMessagesId.isNotEmpty == true) {
_channel.getMessagesById(expiredAttachmentMessagesId); await _channel._initializedCompleter.future;
_updatedMessagesIds.addAll(expiredAttachmentMessagesId); _updatedMessagesIds.addAll(expiredAttachmentMessagesId);
_channel.getMessagesById(expiredAttachmentMessagesId);
} }
} }
+3 -1
View File
@@ -30,4 +30,6 @@ dev_dependencies:
freezed: ^0.14.1+3 freezed: ^0.14.1+3
json_serializable: ^4.1.0 json_serializable: ^4.1.0
mocktail: ^0.1.1 mocktail: ^0.1.1
test: ^1.17.7 # Remove fixed version once the below issue is fixed
# https://github.com/flutter/flutter/issues/91059
test: 1.17.12
@@ -1,5 +1,10 @@
## Upcoming ## Upcoming
🐞 Fixed
-[[#687]](https://github.com/GetStream/stream-chat-flutter/issues/687): Fix Users losing their place in the conversation after replying in threads.
- Fixed floating date stream subscription causing "Bad state: stream has already been listened.” error.
✅ Added ✅ Added
- Added `MessageInput.customOverlays` property to add custom overlays to the message input. - Added `MessageInput.customOverlays` property to add custom overlays to the message input.
@@ -293,7 +293,6 @@ class _MessageListViewState extends State<MessageListView> {
void Function(Message)? _onThreadTap; void Function(Message)? _onThreadTap;
bool _showScrollToBottom = false; bool _showScrollToBottom = false;
late final ItemPositionsListener _itemPositionListener; late final ItemPositionsListener _itemPositionListener;
late final Stream<Iterable<ItemPosition>> _itemPositionStream;
int? _messageListLength; int? _messageListLength;
StreamChannelState? streamChannel; StreamChannelState? streamChannel;
late StreamChatThemeData _streamTheme; late StreamChatThemeData _streamTheme;
@@ -665,7 +664,8 @@ class _MessageListViewState extends State<MessageListView> {
right: 0, right: 0,
child: BetterStreamBuilder<Iterable<ItemPosition>>( child: BetterStreamBuilder<Iterable<ItemPosition>>(
initialData: _itemPositionListener.itemPositions.value, initialData: _itemPositionListener.itemPositions.value,
stream: _itemPositionStream, stream: _valueListenableToStreamAdapter(
_itemPositionListener.itemPositions),
comparator: (a, b) { comparator: (a, b) {
if (a == null || b == null) { if (a == null || b == null) {
return false; return false;
@@ -1194,8 +1194,6 @@ class _MessageListViewState extends State<MessageListView> {
_scrollController = widget.scrollController ?? ItemScrollController(); _scrollController = widget.scrollController ?? ItemScrollController();
_itemPositionListener = _itemPositionListener =
widget.itemPositionListener ?? ItemPositionsListener.create(); widget.itemPositionListener ?? ItemPositionsListener.create();
_itemPositionStream =
_valueListenableToStreamAdapter(_itemPositionListener.itemPositions);
_getOnThreadTap(); _getOnThreadTap();
super.initState(); super.initState();
@@ -1227,8 +1225,9 @@ class _MessageListViewState extends State<MessageListView> {
_bottomPaginationActive = false; _bottomPaginationActive = false;
_topPaginationActive = false; _topPaginationActive = false;
} }
if (event.message!.user!.id == if (event.message?.parentId == widget.parentMessage?.id &&
streamChannel!.channel.client.state.currentUser!.id) { event.message!.user!.id ==
streamChannel!.channel.client.state.currentUser!.id) {
WidgetsBinding.instance!.addPostFrameCallback((_) { WidgetsBinding.instance!.addPostFrameCallback((_) {
_scrollController?.jumpTo( _scrollController?.jumpTo(
index: 0, index: 0,
@@ -22,7 +22,8 @@ dependencies:
dev_dependencies: dev_dependencies:
build_runner: ^2.0.1 build_runner: ^2.0.1
flutter_test:
sdk: flutter
mocktail: ^0.1.1 mocktail: ^0.1.1
moor_generator: ^4.2.1 moor_generator: ^4.2.1
pedantic: ^1.11.0 pedantic: ^1.11.0
test: ^1.17.7
@@ -1,7 +1,7 @@
import 'dart:convert'; import 'dart:convert';
import 'package:flutter_test/flutter_test.dart';
import 'package:stream_chat_persistence/src/converter/list_converter.dart'; import 'package:stream_chat_persistence/src/converter/list_converter.dart';
import 'package:test/test.dart';
void main() { void main() {
group('mapToDart', () { group('mapToDart', () {
@@ -1,7 +1,7 @@
import 'dart:convert'; import 'dart:convert';
import 'package:flutter_test/flutter_test.dart';
import 'package:stream_chat_persistence/src/converter/map_converter.dart'; import 'package:stream_chat_persistence/src/converter/map_converter.dart';
import 'package:test/test.dart';
void main() { void main() {
group('mapToDart', () { group('mapToDart', () {
@@ -1,6 +1,6 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'package:stream_chat_persistence/src/converter/message_sending_status_converter.dart'; import 'package:stream_chat_persistence/src/converter/message_sending_status_converter.dart';
import 'package:test/test.dart';
void main() { void main() {
group('mapToDart', () { group('mapToDart', () {
@@ -1,7 +1,7 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'package:stream_chat_persistence/src/dao/channel_dao.dart'; import 'package:stream_chat_persistence/src/dao/channel_dao.dart';
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart'; import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
import 'package:test/test.dart';
import '../../stream_chat_persistence_client_test.dart'; import '../../stream_chat_persistence_client_test.dart';
@@ -1,7 +1,7 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'package:stream_chat_persistence/src/dao/channel_query_dao.dart'; import 'package:stream_chat_persistence/src/dao/channel_query_dao.dart';
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart'; import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
import 'package:test/test.dart';
import '../../stream_chat_persistence_client_test.dart'; import '../../stream_chat_persistence_client_test.dart';
import '../utils/date_matcher.dart'; import '../utils/date_matcher.dart';
@@ -1,7 +1,7 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'package:stream_chat_persistence/src/dao/connection_event_dao.dart'; import 'package:stream_chat_persistence/src/dao/connection_event_dao.dart';
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart'; import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
import 'package:test/test.dart';
import '../../stream_chat_persistence_client_test.dart'; import '../../stream_chat_persistence_client_test.dart';
import '../utils/date_matcher.dart'; import '../utils/date_matcher.dart';
@@ -1,9 +1,9 @@
import 'dart:math' as math; import 'dart:math' as math;
import 'package:flutter_test/flutter_test.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'package:stream_chat_persistence/src/dao/dao.dart'; import 'package:stream_chat_persistence/src/dao/dao.dart';
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart'; import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
import 'package:test/test.dart';
import '../../stream_chat_persistence_client_test.dart'; import '../../stream_chat_persistence_client_test.dart';
import '../utils/date_matcher.dart'; import '../utils/date_matcher.dart';
@@ -1,9 +1,9 @@
import 'dart:math' as math; import 'dart:math' as math;
import 'package:flutter_test/flutter_test.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'package:stream_chat_persistence/src/dao/dao.dart'; import 'package:stream_chat_persistence/src/dao/dao.dart';
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart'; import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
import 'package:test/test.dart';
import '../../stream_chat_persistence_client_test.dart'; import '../../stream_chat_persistence_client_test.dart';
@@ -1,9 +1,9 @@
import 'dart:math' as math; import 'dart:math' as math;
import 'package:flutter_test/flutter_test.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'package:stream_chat_persistence/src/dao/dao.dart'; import 'package:stream_chat_persistence/src/dao/dao.dart';
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart'; import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
import 'package:test/test.dart';
import '../../stream_chat_persistence_client_test.dart'; import '../../stream_chat_persistence_client_test.dart';
@@ -1,9 +1,9 @@
import 'dart:math' as math; import 'dart:math' as math;
import 'package:flutter_test/flutter_test.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'package:stream_chat_persistence/src/dao/pinned_message_reaction_dao.dart'; import 'package:stream_chat_persistence/src/dao/pinned_message_reaction_dao.dart';
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart'; import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
import 'package:test/test.dart';
import '../../stream_chat_persistence_client_test.dart'; import '../../stream_chat_persistence_client_test.dart';
@@ -1,9 +1,9 @@
import 'dart:math' as math; import 'dart:math' as math;
import 'package:flutter_test/flutter_test.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'package:stream_chat_persistence/src/dao/reaction_dao.dart'; import 'package:stream_chat_persistence/src/dao/reaction_dao.dart';
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart'; import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
import 'package:test/test.dart';
import '../../stream_chat_persistence_client_test.dart'; import '../../stream_chat_persistence_client_test.dart';
@@ -1,7 +1,7 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'package:stream_chat_persistence/src/dao/dao.dart'; import 'package:stream_chat_persistence/src/dao/dao.dart';
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart'; import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
import 'package:test/test.dart';
import '../../stream_chat_persistence_client_test.dart'; import '../../stream_chat_persistence_client_test.dart';
import '../utils/date_matcher.dart'; import '../utils/date_matcher.dart';
@@ -1,9 +1,9 @@
import 'dart:math' as math; import 'dart:math' as math;
import 'package:flutter_test/flutter_test.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'package:stream_chat_persistence/src/dao/dao.dart'; import 'package:stream_chat_persistence/src/dao/dao.dart';
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart'; import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
import 'package:test/test.dart';
import '../../stream_chat_persistence_client_test.dart'; import '../../stream_chat_persistence_client_test.dart';
@@ -1,8 +1,8 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:moor/ffi.dart'; import 'package:moor/ffi.dart';
import 'package:moor/isolate.dart'; import 'package:moor/isolate.dart';
import 'package:moor/moor.dart' hide isNotNull; import 'package:moor/moor.dart' hide isNotNull;
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart'; import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
import 'package:test/test.dart';
DatabaseConnection _backgroundConnection() => DatabaseConnection _backgroundConnection() =>
DatabaseConnection.fromExecutor(VmDatabase.memory()); DatabaseConnection.fromExecutor(VmDatabase.memory());
@@ -1,9 +1,9 @@
import 'dart:math' as math; import 'dart:math' as math;
import 'package:flutter_test/flutter_test.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart'; import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
import 'package:stream_chat_persistence/src/mapper/channel_mapper.dart'; import 'package:stream_chat_persistence/src/mapper/channel_mapper.dart';
import 'package:test/test.dart';
import '../utils/date_matcher.dart'; import '../utils/date_matcher.dart';
@@ -1,7 +1,7 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart'; import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
import 'package:stream_chat_persistence/src/mapper/event_mapper.dart'; import 'package:stream_chat_persistence/src/mapper/event_mapper.dart';
import 'package:test/test.dart';
import '../utils/date_matcher.dart'; import '../utils/date_matcher.dart';
@@ -1,9 +1,9 @@
import 'dart:math' as math; import 'dart:math' as math;
import 'package:flutter_test/flutter_test.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart'; import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
import 'package:stream_chat_persistence/src/mapper/member_mapper.dart'; import 'package:stream_chat_persistence/src/mapper/member_mapper.dart';
import 'package:test/test.dart';
import '../utils/date_matcher.dart'; import '../utils/date_matcher.dart';
@@ -1,10 +1,10 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:math' as math; import 'dart:math' as math;
import 'package:flutter_test/flutter_test.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart'; import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
import 'package:stream_chat_persistence/src/mapper/message_mapper.dart'; import 'package:stream_chat_persistence/src/mapper/message_mapper.dart';
import 'package:test/test.dart';
import '../utils/date_matcher.dart'; import '../utils/date_matcher.dart';
@@ -1,10 +1,10 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:math' as math; import 'dart:math' as math;
import 'package:flutter_test/flutter_test.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart'; import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
import 'package:stream_chat_persistence/src/mapper/pinned_message_mapper.dart'; import 'package:stream_chat_persistence/src/mapper/pinned_message_mapper.dart';
import 'package:test/test.dart';
import '../utils/date_matcher.dart'; import '../utils/date_matcher.dart';
@@ -1,7 +1,7 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart'; import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
import 'package:stream_chat_persistence/src/mapper/pinned_message_reaction_mapper.dart'; import 'package:stream_chat_persistence/src/mapper/pinned_message_reaction_mapper.dart';
import 'package:test/test.dart';
import '../utils/date_matcher.dart'; import '../utils/date_matcher.dart';
@@ -1,7 +1,7 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart'; import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
import 'package:stream_chat_persistence/src/mapper/reaction_mapper.dart'; import 'package:stream_chat_persistence/src/mapper/reaction_mapper.dart';
import 'package:test/test.dart';
import '../utils/date_matcher.dart'; import '../utils/date_matcher.dart';
@@ -1,7 +1,7 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart'; import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
import 'package:stream_chat_persistence/src/mapper/read_mapper.dart'; import 'package:stream_chat_persistence/src/mapper/read_mapper.dart';
import 'package:test/test.dart';
import '../utils/date_matcher.dart'; import '../utils/date_matcher.dart';
@@ -1,9 +1,9 @@
import 'dart:math' as math; import 'dart:math' as math;
import 'package:flutter_test/flutter_test.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart'; import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
import 'package:stream_chat_persistence/src/mapper/user_mapper.dart'; import 'package:stream_chat_persistence/src/mapper/user_mapper.dart';
import 'package:test/test.dart';
import '../utils/date_matcher.dart'; import '../utils/date_matcher.dart';
@@ -1,4 +1,4 @@
import 'package:test/test.dart'; import 'package:flutter_test/flutter_test.dart';
Matcher isSameDateAs(DateTime targetDate) => Matcher isSameDateAs(DateTime targetDate) =>
_IsSameDateAs(targetDate: targetDate); _IsSameDateAs(targetDate: targetDate);
@@ -1,9 +1,10 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:mocktail/mocktail.dart'; import 'package:mocktail/mocktail.dart';
import 'package:moor/ffi.dart'; import 'package:moor/ffi.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'package:stream_chat_persistence/src/db/moor_chat_database.dart'; import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
import 'package:stream_chat_persistence/src/stream_chat_persistence_client.dart'; import 'package:stream_chat_persistence/src/stream_chat_persistence_client.dart';
import 'package:test/test.dart';
import 'mock_chat_database.dart'; import 'mock_chat_database.dart';
import 'src/utils/date_matcher.dart'; import 'src/utils/date_matcher.dart';