diff --git a/melos b/melos new file mode 100644 index 00000000..e69de29b diff --git a/packages/stream_chat/CHANGELOG.md b/packages/stream_chat/CHANGELOG.md index 7e172a23..655491cf 100644 --- a/packages/stream_chat/CHANGELOG.md +++ b/packages/stream_chat/CHANGELOG.md @@ -1,5 +1,9 @@ ## Upcoming +🔄 Changed + +- `client.location` is now deprecated in favor of the new [edge server](https://getstream.io/blog/chat-edge-infrastructure) and will be removed in v4.0.0. + ✅ Added - Added `client.enrichUrl` endpoint for enriching URLs with metadata. diff --git a/packages/stream_chat/lib/src/client/client.dart b/packages/stream_chat/lib/src/client/client.dart index 141bad48..080a1923 100644 --- a/packages/stream_chat/lib/src/client/client.dart +++ b/packages/stream_chat/lib/src/client/client.dart @@ -66,8 +66,11 @@ class StreamChatClient { this.logLevel = Level.WARNING, LogHandlerFunction? logHandlerFunction, RetryPolicy? retryPolicy, - Location? location, - @Deprecated('Use location to change baseUrl instead') String? baseURL, + @Deprecated(''' + Location is now deprecated in favor of the new edge server. Will be removed in v4.0.0. + Read more here: https://getstream.io/blog/chat-edge-infrastructure + ''') Location? location, + String? baseURL, Duration connectTimeout = const Duration(seconds: 6), Duration receiveTimeout = const Duration(seconds: 6), StreamChatApi? chatApi, @@ -79,7 +82,6 @@ class StreamChatClient { final options = StreamHttpClientOptions( baseUrl: baseURL, - location: location, connectTimeout: connectTimeout, receiveTimeout: receiveTimeout, headers: {'X-Stream-Client': defaultUserAgent}, diff --git a/packages/stream_chat/lib/src/core/http/stream_http_client.dart b/packages/stream_chat/lib/src/core/http/stream_http_client.dart index 429eb52f..d977b010 100644 --- a/packages/stream_chat/lib/src/core/http/stream_http_client.dart +++ b/packages/stream_chat/lib/src/core/http/stream_http_client.dart @@ -11,7 +11,6 @@ import 'package:stream_chat/src/core/http/interceptor/connection_id_interceptor. import 'package:stream_chat/src/core/http/interceptor/logging_interceptor.dart'; import 'package:stream_chat/src/core/http/stream_chat_dio_error.dart'; import 'package:stream_chat/src/core/http/token_manager.dart'; -import 'package:stream_chat/src/location.dart'; part 'stream_http_client_options.dart'; diff --git a/packages/stream_chat/lib/src/core/http/stream_http_client_options.dart b/packages/stream_chat/lib/src/core/http/stream_http_client_options.dart index 01cdb12e..d68e073f 100644 --- a/packages/stream_chat/lib/src/core/http/stream_http_client_options.dart +++ b/packages/stream_chat/lib/src/core/http/stream_http_client_options.dart @@ -1,32 +1,20 @@ part of 'stream_http_client.dart'; -const _defaultBaseURL = 'https://chat-us-east-1.stream-io-api.com'; +const _defaultBaseURL = 'https://chat.stream-io-api.com'; /// Client options to modify [StreamHttpClient] class StreamHttpClientOptions { /// Instantiates a new [StreamHttpClientOptions] const StreamHttpClientOptions({ String? baseUrl, - this.location, this.connectTimeout = const Duration(seconds: 6), this.receiveTimeout = const Duration(seconds: 6), this.queryParameters = const {}, this.headers = const {}, - }) : _baseUrl = baseUrl ?? _defaultBaseURL; - - final String _baseUrl; + }) : baseUrl = baseUrl ?? _defaultBaseURL; /// base url to use with client. - String get baseUrl { - if (location == null) return _baseUrl; - const serviceName = 'chat'; - final locationName = location!.name; - const baseDomainName = 'stream-io-api.com'; - return 'https://$serviceName-proxy-$locationName.$baseDomainName'; - } - - /// data center to use with client - final Location? location; + final String baseUrl; /// connect timeout, default to 6s final Duration connectTimeout; diff --git a/packages/stream_chat/lib/src/core/models/event.dart b/packages/stream_chat/lib/src/core/models/event.dart index 8dc08a8d..1801ceae 100644 --- a/packages/stream_chat/lib/src/core/models/event.dart +++ b/packages/stream_chat/lib/src/core/models/event.dart @@ -1,6 +1,4 @@ import 'package:json_annotation/json_annotation.dart'; -import 'package:stream_chat/src/core/models/channel_model.dart'; -import 'package:stream_chat/src/core/models/message.dart'; import 'package:stream_chat/src/core/util/serializer.dart'; import 'package:stream_chat/stream_chat.dart'; diff --git a/packages/stream_chat/lib/src/core/models/own_user.dart b/packages/stream_chat/lib/src/core/models/own_user.dart index 243f170c..9077431b 100644 --- a/packages/stream_chat/lib/src/core/models/own_user.dart +++ b/packages/stream_chat/lib/src/core/models/own_user.dart @@ -1,7 +1,4 @@ import 'package:json_annotation/json_annotation.dart'; -import 'package:stream_chat/src/core/models/device.dart'; -import 'package:stream_chat/src/core/models/mute.dart'; -import 'package:stream_chat/src/core/models/user.dart'; import 'package:stream_chat/src/core/util/serializer.dart'; import 'package:stream_chat/stream_chat.dart'; @@ -89,9 +86,9 @@ class OwnUser extends User { OwnUser( id: id ?? this.id, role: role ?? this.role, - /* if null, it will be retrieved from extraData['name']*/ + // if null, it will be retrieved from extraData['name'] name: name, - /* if null, it will be retrieved from extraData['image']*/ + // if null, it will be retrieved from extraData['image'] image: image, banned: banned ?? this.banned, createdAt: createdAt ?? this.createdAt, @@ -139,7 +136,7 @@ class OwnUser extends User { @JsonKey(includeIfNull: false) final List mutes; - /// List of users muted by the user. + /// List of channels muted by the user. @JsonKey(includeIfNull: false) final List channelMutes; diff --git a/packages/stream_chat/lib/src/core/models/user.dart b/packages/stream_chat/lib/src/core/models/user.dart index 7aa7c51c..c6f62b6b 100644 --- a/packages/stream_chat/lib/src/core/models/user.dart +++ b/packages/stream_chat/lib/src/core/models/user.dart @@ -45,7 +45,7 @@ class User extends Equatable { this.language, }) : createdAt = createdAt ?? DateTime.now(), updatedAt = updatedAt ?? DateTime.now(), - /*For backwards compatibility, set 'name', 'image' in [extraData].*/ + // For backwards compatibility, set 'name', 'image' in [extraData]. extraData = { ...extraData, if (name != null) 'name': name, @@ -164,9 +164,9 @@ class User extends Equatable { User( id: id ?? this.id, role: role ?? this.role, - /* if null, it will be retrieved from extraData['name']*/ + // if null, it will be retrieved from extraData['name'] name: name, - /* if null, it will be retrieved from extraData['image']*/ + // if null, it will be retrieved from extraData['image'] image: image, createdAt: createdAt ?? this.createdAt, updatedAt: updatedAt ?? this.updatedAt, diff --git a/packages/stream_chat/test/src/core/http/stream_http_client_options_test.dart b/packages/stream_chat/test/src/core/http/stream_http_client_options_test.dart index 02cfc07a..1ed0e5ab 100644 --- a/packages/stream_chat/test/src/core/http/stream_http_client_options_test.dart +++ b/packages/stream_chat/test/src/core/http/stream_http_client_options_test.dart @@ -1,12 +1,10 @@ import 'package:stream_chat/src/core/http/stream_http_client.dart'; -import 'package:stream_chat/src/location.dart'; import 'package:test/test.dart'; void main() { test('should return the all default set params', () { const options = StreamHttpClientOptions(); - expect(options.location, isNull); - expect(options.baseUrl, 'https://chat-us-east-1.stream-io-api.com'); + expect(options.baseUrl, 'https://chat.stream-io-api.com'); expect(options.connectTimeout, const Duration(seconds: 6)); expect(options.receiveTimeout, const Duration(seconds: 6)); expect(options.queryParameters, const {}); @@ -21,39 +19,10 @@ void main() { headers: {'test': 'test'}, queryParameters: {'123': '123'}, ); - expect(options.location, isNull); expect(options.baseUrl, 'base-url'); expect(options.connectTimeout, const Duration(seconds: 3)); expect(options.receiveTimeout, const Duration(seconds: 3)); expect(options.headers, {'test': 'test'}); expect(options.queryParameters, {'123': '123'}); }); - - group('should create baseUrl according to provided location', () { - test('us-east', () { - const options = StreamHttpClientOptions(location: Location.usEast); - expect(options.location, isNotNull); - expect(options.baseUrl, 'https://chat-proxy-us-east.stream-io-api.com'); - }); - test('eu-west', () { - const options = StreamHttpClientOptions(location: Location.euWest); - expect(options.location, isNotNull); - expect(options.baseUrl, 'https://chat-proxy-dublin.stream-io-api.com'); - }); - test('mumbai', () { - const options = StreamHttpClientOptions(location: Location.mumbai); - expect(options.location, isNotNull); - expect(options.baseUrl, 'https://chat-proxy-mumbai.stream-io-api.com'); - }); - test('sydney', () { - const options = StreamHttpClientOptions(location: Location.sydney); - expect(options.location, isNotNull); - expect(options.baseUrl, 'https://chat-proxy-sydney.stream-io-api.com'); - }); - test('singapore', () { - const options = StreamHttpClientOptions(location: Location.singapore); - expect(options.location, isNotNull); - expect(options.baseUrl, 'https://chat-proxy-singapore.stream-io-api.com'); - }); - }); } diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index 130e1b8a..67a45ddc 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -7,8 +7,9 @@ 🐞 Fixed -- SVG rendering fixes -- Use file extension instead of mimeType for downloading files +- SVG rendering fixes. +- Use file extension instead of mimeType for downloading files. +- [[#860]](https://github.com/GetStream/stream-chat-flutter/issues/860) CastError while compressing Videos. ✅ Added @@ -32,7 +33,7 @@ 🐞 Fixed -- [[#766]]`AttachmentActionsModal` now has customisation options for actions. +- [[#766]](https://github.com/GetStream/stream-chat-flutter/issues/766) `AttachmentActionsModal` now has customisation options for actions. - Fixed `MessageWidget` null errors associated with `channel.memberCount`. - Fixed adding attachments on web. - [[#767]](https://github.com/GetStream/stream-chat-flutter/issues/767): Fix `MessageInput` focus behaviour when sending messages. diff --git a/packages/stream_chat_flutter/lib/src/extension.dart b/packages/stream_chat_flutter/lib/src/extension.dart index 754ca8bf..0feaf185 100644 --- a/packages/stream_chat_flutter/lib/src/extension.dart +++ b/packages/stream_chat_flutter/lib/src/extension.dart @@ -1,4 +1,3 @@ -import 'package:characters/characters.dart'; import 'package:diacritic/diacritic.dart'; import 'package:file_picker/file_picker.dart'; import 'package:flutter/foundation.dart'; diff --git a/packages/stream_chat_flutter_core/CHANGELOG.md b/packages/stream_chat_flutter_core/CHANGELOG.md index 2e89b6e7..fbf1a4ec 100644 --- a/packages/stream_chat_flutter_core/CHANGELOG.md +++ b/packages/stream_chat_flutter_core/CHANGELOG.md @@ -1,9 +1,14 @@ -# Upcoming +## Upcoming ✅ Added - Added `MessageInputController` to hold `Message` related data. +🐞 Fixed + +- Do not move a channel to top if the new message is from a thread. +- [[#848]](https://github.com/GetStream/stream-chat-flutter/issues/848) Fixed "Bad state: Cannot add new events after calling close" by replacing all `.add` methods with a new `.safeAdd`. + ## 3.3.1 - Updated `stream_chat` dependency to [`3.3.1`](https://pub.dev/packages/stream_chat/changelog). diff --git a/packages/stream_chat_flutter_core/example/lib/main.dart b/packages/stream_chat_flutter_core/example/lib/main.dart index 4d3b2f55..8c081082 100644 --- a/packages/stream_chat_flutter_core/example/lib/main.dart +++ b/packages/stream_chat_flutter_core/example/lib/main.dart @@ -88,7 +88,7 @@ class HomeScreen extends StatelessWidget { [ StreamChatCore.of(context).currentUser!.id, ], - ) + ), ]), emptyBuilder: (BuildContext context) => const Center( child: Text('Looks like you are not in any channels'), diff --git a/packages/stream_chat_flutter_core/lib/src/channels_bloc.dart b/packages/stream_chat_flutter_core/lib/src/channels_bloc.dart index 6514d66b..fa19a90f 100644 --- a/packages/stream_chat_flutter_core/lib/src/channels_bloc.dart +++ b/packages/stream_chat_flutter_core/lib/src/channels_bloc.dart @@ -5,6 +5,7 @@ import 'package:rxdart/rxdart.dart'; import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat_flutter_core/src/channel_list_core.dart'; import 'package:stream_chat_flutter_core/src/stream_chat_core.dart'; +import 'package:stream_chat_flutter_core/src/stream_controller_extension.dart'; /// Widget dedicated to the management of a channel list with pagination /// [ChannelsBloc] is used together with [ChannelListCore] to manage a list of @@ -115,7 +116,7 @@ class ChannelsBlocState extends State } if (_channelsController.hasValue) { - _queryChannelsLoadingController.add(true); + _queryChannelsLoadingController.safeAdd(true); } try { @@ -134,14 +135,14 @@ class ChannelsBlocState extends State )) { newChannels = channels; if (clear) { - _channelsController.add(channels); + _channelsController.safeAdd(channels); } else { final temp = oldChannels + channels; - _channelsController.add(temp); + _channelsController.safeAdd(temp); } if (_channelsController.hasValue && _queryChannelsLoadingController.value) { - _queryChannelsLoadingController.sink.add(false); + _queryChannelsLoadingController.safeAdd(false); } } if (newChannels.isEmpty || newChannels.length < paginationParams.limit) { @@ -149,11 +150,11 @@ class ChannelsBlocState extends State } } catch (e, stk) { // reset loading controller - _queryChannelsLoadingController.sink.add(false); + _queryChannelsLoadingController.safeAdd(false); if (_channelsController.hasValue) { - _queryChannelsLoadingController.addError(e, stk); + _queryChannelsLoadingController.safeAddError(e, stk); } else { - _channelsController.addError(e, stk); + _channelsController.safeAddError(e, stk); } } } @@ -173,6 +174,9 @@ class ChannelsBlocState extends State EventType.messageNew, ) .listen((e) { + if (e.message?.parentId != null && e.message?.showInChannel != true) { + return; + } final newChannels = List.from(channels ?? []); final index = newChannels.indexWhere((c) => c.cid == e.cid); if (index != -1) { @@ -196,7 +200,7 @@ class ChannelsBlocState extends State if (widget.channelsComparator != null) { newChannels.sort(widget.channelsComparator); } - _channelsController.add(newChannels); + _channelsController.safeAdd(newChannels); })); } @@ -208,7 +212,7 @@ class ChannelsBlocState extends State if (channelIndex > -1) { final channel = newChannels.removeAt(channelIndex); _hiddenChannels.add(channel); - _channelsController.add(newChannels); + _channelsController.safeAdd(newChannels); } })) ..add(client @@ -218,7 +222,7 @@ class ChannelsBlocState extends State ) .listen((e) { final channel = e.channel; - _channelsController.add(List.from( + _channelsController.safeAdd(List.from( (channels ?? [])..removeWhere((c) => c.cid == channel?.cid), )); })); diff --git a/packages/stream_chat_flutter_core/lib/src/message_search_bloc.dart b/packages/stream_chat_flutter_core/lib/src/message_search_bloc.dart index e247a1cf..96a761c1 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_search_bloc.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_search_bloc.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:rxdart/rxdart.dart'; import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat_flutter_core/src/stream_chat_core.dart'; +import 'package:stream_chat_flutter_core/src/stream_controller_extension.dart'; /// [MessageSearchBloc] is used to manage a list of messages with pagination. /// This class can be used to load messages, perform queries, etc. @@ -95,7 +96,7 @@ class MessageSearchBlocState extends State } if (_messageResponses.hasValue) { - _queryMessagesLoadingController.add(true); + _queryMessagesLoadingController.safeAdd(true); } try { final oldMessages = List.from(messageResponses ?? []); @@ -120,24 +121,24 @@ class MessageSearchBlocState extends State final newMessages = response.results; if (clear) { - _messageResponses.add(newMessages); + _messageResponses.safeAdd(newMessages); } else { final temp = oldMessages + newMessages; - _messageResponses.add(temp); + _messageResponses.safeAdd(temp); } if (_messageResponses.hasValue && _queryMessagesLoadingController.value) { - _queryMessagesLoadingController.add(false); + _queryMessagesLoadingController.safeAdd(false); } if (newMessages.isEmpty || newMessages.length < pagination.limit) { _paginationEnded = true; } } catch (e, stk) { // reset loading controller - _queryMessagesLoadingController.add(false); + _queryMessagesLoadingController.safeAdd(false); if (_messageResponses.hasValue) { - _queryMessagesLoadingController.addError(e, stk); + _queryMessagesLoadingController.safeAddError(e, stk); } else { - _messageResponses.addError(e, stk); + _messageResponses.safeAddError(e, stk); } } } diff --git a/packages/stream_chat_flutter_core/lib/src/stream_channel.dart b/packages/stream_chat_flutter_core/lib/src/stream_channel.dart index 633c3137..bcfb613e 100644 --- a/packages/stream_chat_flutter_core/lib/src/stream_channel.dart +++ b/packages/stream_chat_flutter_core/lib/src/stream_channel.dart @@ -1,10 +1,10 @@ import 'dart:async'; import 'package:collection/collection.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:rxdart/rxdart.dart'; import 'package:stream_chat/stream_chat.dart'; +import 'package:stream_chat_flutter_core/src/stream_controller_extension.dart'; /// Specifies query direction for pagination enum QueryDirection { @@ -92,10 +92,10 @@ class StreamChannelState extends State { channel.state == null) { return; } - _queryTopMessagesController.add(true); + _queryTopMessagesController.safeAdd(true); if (channel.state!.messages.isEmpty) { - return _queryTopMessagesController.add(false); + return _queryTopMessagesController.safeAdd(false); } final oldestMessage = channel.state!.messages.first; @@ -109,9 +109,9 @@ class StreamChannelState extends State { if (state.messages.isEmpty || state.messages.length < limit) { _topPaginationEnded = true; } - _queryTopMessagesController.add(false); + _queryTopMessagesController.safeAdd(false); } catch (e, stk) { - _queryTopMessagesController.addError(e, stk); + _queryTopMessagesController.safeAddError(e, stk); } } @@ -123,10 +123,10 @@ class StreamChannelState extends State { _queryBottomMessagesController.value || channel.state == null || channel.state!.isUpToDate) return; - _queryBottomMessagesController.add(true); + _queryBottomMessagesController.safeAdd(true); if (channel.state!.messages.isEmpty) { - return _queryBottomMessagesController.add(false); + return _queryBottomMessagesController.safeAdd(false); } final recentMessage = channel.state!.messages.last; @@ -140,9 +140,9 @@ class StreamChannelState extends State { if (state.messages.isEmpty || state.messages.length < limit) { _bottomPaginationEnded = true; } - _queryBottomMessagesController.add(false); + _queryBottomMessagesController.safeAdd(false); } catch (e, stk) { - _queryBottomMessagesController.addError(e, stk); + _queryBottomMessagesController.safeAddError(e, stk); } } @@ -166,7 +166,7 @@ class StreamChannelState extends State { if (_topPaginationEnded || _queryTopMessagesController.value || channel.state == null) return; - _queryTopMessagesController.add(true); + _queryTopMessagesController.safeAdd(true); Message? message; if (channel.state!.threads.containsKey(parentId)) { @@ -188,9 +188,9 @@ class StreamChannelState extends State { if (response.messages.isEmpty || response.messages.length < limit) { _topPaginationEnded = true; } - _queryTopMessagesController.add(false); + _queryTopMessagesController.safeAdd(false); } catch (e, stk) { - _queryTopMessagesController.addError(e, stk); + _queryTopMessagesController.safeAddError(e, stk); } } diff --git a/packages/stream_chat_flutter_core/lib/src/stream_controller_extension.dart b/packages/stream_chat_flutter_core/lib/src/stream_controller_extension.dart new file mode 100644 index 00000000..3720b752 --- /dev/null +++ b/packages/stream_chat_flutter_core/lib/src/stream_controller_extension.dart @@ -0,0 +1,18 @@ +import 'dart:async'; + +/// Extension on [StreamController] to safely add events and errors. +extension StreamControllerX on StreamController { + /// Safely adds the event to the controller, + /// Returns early if the controller is closed. + void safeAdd(T event) { + if (isClosed) return; + add(event); + } + + /// Safely adds the error to the controller, + /// Returns early if the controller is closed. + void safeAddError(Object error, [StackTrace? stackTrace]) { + if (isClosed) return; + addError(error, stackTrace); + } +} diff --git a/packages/stream_chat_flutter_core/lib/src/users_bloc.dart b/packages/stream_chat_flutter_core/lib/src/users_bloc.dart index fc791cd8..e0a09116 100644 --- a/packages/stream_chat_flutter_core/lib/src/users_bloc.dart +++ b/packages/stream_chat_flutter_core/lib/src/users_bloc.dart @@ -1,7 +1,6 @@ -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:rxdart/rxdart.dart'; -import 'package:stream_chat/stream_chat.dart'; +import 'package:stream_chat_flutter_core/src/stream_controller_extension.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// Widget dedicated to the management of a users list with pagination. @@ -82,7 +81,7 @@ class UsersBlocState extends State } if (_usersController.hasValue) { - _queryUsersLoadingController.add(true); + _queryUsersLoadingController.safeAdd(true); } try { @@ -97,24 +96,24 @@ class UsersBlocState extends State final newUsers = usersResponse.users; if (clear) { - _usersController.add(usersResponse.users); + _usersController.safeAdd(usersResponse.users); } else { final temp = oldUsers + usersResponse.users; - _usersController.add(temp); + _usersController.safeAdd(temp); } if (_usersController.hasValue && _queryUsersLoadingController.value) { - _queryUsersLoadingController.add(false); + _queryUsersLoadingController.safeAdd(false); } if (newUsers.isEmpty || newUsers.length < pagination.limit) { _paginationEnded = true; } } catch (e, stk) { // reset loading controller - _queryUsersLoadingController.add(false); + _queryUsersLoadingController.safeAdd(false); if (_usersController.hasValue) { - _queryUsersLoadingController.addError(e, stk); + _queryUsersLoadingController.safeAddError(e, stk); } else { - _usersController.addError(e, stk); + _usersController.safeAddError(e, stk); } } } diff --git a/packages/stream_chat_localizations/CHANGELOG.md b/packages/stream_chat_localizations/CHANGELOG.md index c1c469bf..b1f010dd 100644 --- a/packages/stream_chat_localizations/CHANGELOG.md +++ b/packages/stream_chat_localizations/CHANGELOG.md @@ -1,3 +1,9 @@ +## 2.1.0 + +🔄 Changed + +* Some of the `Japanese` translations have been updated/changed for better understanding. + ## 2.0.0 - Updated `stream_chat_flutter` dependency to [`3.0.0`](https://pub.dev/packages/stream_chat_flutter/changelog). 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 1659f637..e1eea3a4 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 @@ -38,7 +38,7 @@ class StreamChatLocalizationsJa extends GlobalStreamChatLocalizations { String get threadReplyLabel => 'スレッド返信'; @override - String get onlyVisibleToYouText => '自分しか見れません'; + String get onlyVisibleToYouText => '自分にのみ見えます'; @override String threadReplyCountText(int count) => '$countつのスレッド返信'; @@ -48,7 +48,7 @@ class StreamChatLocalizationsJa extends GlobalStreamChatLocalizations { required int remaining, required int total, }) => - '$remaining/${total}mbのアップロード中 。。。'; + '$remaining/${total}mbのアップロード中…'; @override String pinnedByUserText({ @@ -85,7 +85,7 @@ class StreamChatLocalizationsJa extends GlobalStreamChatLocalizations { String get messageReactionsLabel => 'メッセージのリアクション'; @override - String get emptyChatMessagesText => 'チャットがありませんが。。。'; + String get emptyChatMessagesText => 'まだメッセージはありません…'; @override String threadSeparatorText(int replyCount) => '$replyCount件の返信'; @@ -97,7 +97,7 @@ class StreamChatLocalizationsJa extends GlobalStreamChatLocalizations { String get disconnectedLabel => '接続切れ'; @override - String get reconnectingLabel => '再接続中。。。'; + String get reconnectingLabel => '再接続中…'; @override String get alsoSendAsDirectMessageLabel => 'ダイレクトメッセージでも送信'; @@ -118,7 +118,7 @@ class StreamChatLocalizationsJa extends GlobalStreamChatLocalizations { String fileTooLargeAfterCompressionError(double limitInMB) => 'ファイルのサイズが大きすぎてアップロードできません。' 'ファイルサイズの制限は${limitInMB}MBです。' - '圧縮してみましたが、十分ではありませんでした。'; + '圧縮を試しましたがサイズをオーバーしました'; @override String fileTooLargeError(double limitInMB) => @@ -146,7 +146,7 @@ class StreamChatLocalizationsJa extends GlobalStreamChatLocalizations { String get videoFromCameraLabel => 'カメラからの動画'; @override - String get okLabel => 'よし'; + String get okLabel => 'OK'; @override String get somethingWentWrongError => 'エラーが発生しました'; @@ -183,7 +183,7 @@ class StreamChatLocalizationsJa extends GlobalStreamChatLocalizations { String get deleteLabel => '削除'; @override - String get deleteMessageLabel => 'メッセージを削除する '; + String get deleteMessageLabel => 'メッセージを削除する'; @override String get deleteMessageQuestion => 'このメッセージ' @@ -198,7 +198,7 @@ class StreamChatLocalizationsJa extends GlobalStreamChatLocalizations { @override String togglePinUnpinText({required bool pinned}) { if (pinned) return '会話のピンを外す'; - return '会話にピンする'; + return '会話をピンする'; } @override @@ -249,7 +249,7 @@ class StreamChatLocalizationsJa extends GlobalStreamChatLocalizations { String get yesterdayLabel => '昨日'; @override - String get channelIsMutedText => 'チャンネルが無音されています'; + String get channelIsMutedText => 'チャンネルがミュートされています'; @override String get noTitleText => 'タイトル無し'; @@ -258,7 +258,7 @@ class StreamChatLocalizationsJa extends GlobalStreamChatLocalizations { String get letsStartChattingLabel => 'チャットを始めよう!'; @override - String get sendingFirstMessageLabel => '友人に最初のメッセージを送りましょうか?'; + String get sendingFirstMessageLabel => '最初のメッセージを送ってみましょう'; @override String get startAChatLabel => 'チャットを開始する'; @@ -279,7 +279,7 @@ class StreamChatLocalizationsJa extends GlobalStreamChatLocalizations { String get searchingForNetworkText => 'ネットワークを検索中'; @override - String get offlineLabel => 'オフライン。。。'; + String get offlineLabel => 'オフライン…'; @override String get tryAgainLabel => '再試行する'; @@ -294,16 +294,16 @@ class StreamChatLocalizationsJa extends GlobalStreamChatLocalizations { String get viewInfoLabel => '情報を見る'; @override - String get leaveGroupLabel => 'グループを離れる'; + String get leaveGroupLabel => 'グループから退出する'; @override - String get leaveLabel => '離れる'; + String get leaveLabel => '退出する'; @override - String get leaveConversationLabel => '会話を離れる'; + String get leaveConversationLabel => '会話から退出する'; @override - String get leaveConversationQuestion => '本当に会話を離れますか?'; + String get leaveConversationQuestion => '本当に会話から退出しますか?'; @override String get showInChatLabel => 'チャットで表示'; @@ -318,7 +318,7 @@ class StreamChatLocalizationsJa extends GlobalStreamChatLocalizations { String get uploadErrorLabel => 'アップロードエラー'; @override - String get giphyLabel => 'ギフィー'; + String get giphyLabel => 'GIPHY'; @override String get shuffleLabel => 'ミックス'; diff --git a/packages/stream_chat_persistence/CHANGELOG.md b/packages/stream_chat_persistence/CHANGELOG.md index f8a2434f..74e460c7 100644 --- a/packages/stream_chat_persistence/CHANGELOG.md +++ b/packages/stream_chat_persistence/CHANGELOG.md @@ -1,3 +1,7 @@ +## Upcoming + +- Bump `drift` to `1.3.0`. + ## 3.0.0 - Updated `stream_chat` dependency to [`3.0.0`](https://pub.dev/packages/stream_chat/changelog). diff --git a/packages/stream_chat_persistence/example/lib/main.dart b/packages/stream_chat_persistence/example/lib/main.dart index 551a3ae9..d420b7f5 100644 --- a/packages/stream_chat_persistence/example/lib/main.dart +++ b/packages/stream_chat_persistence/example/lib/main.dart @@ -245,7 +245,7 @@ class _MessageViewState extends State { ), ], ), - ) + ), ], ); } diff --git a/packages/stream_chat_persistence/lib/src/db/drift_chat_database.g.dart b/packages/stream_chat_persistence/lib/src/db/drift_chat_database.g.dart index bd735b8b..d0565973 100644 --- a/packages/stream_chat_persistence/lib/src/db/drift_chat_database.g.dart +++ b/packages/stream_chat_persistence/lib/src/db/drift_chat_database.g.dart @@ -394,66 +394,78 @@ class $ChannelsTable extends Channels final String? _alias; $ChannelsTable(this._db, [this._alias]); final VerificationMeta _idMeta = const VerificationMeta('id'); + @override late final GeneratedColumn id = GeneratedColumn( 'id', aliasedName, false, - typeName: 'TEXT', requiredDuringInsert: true); + type: const StringType(), requiredDuringInsert: true); final VerificationMeta _typeMeta = const VerificationMeta('type'); + @override late final GeneratedColumn type = GeneratedColumn( 'type', aliasedName, false, - typeName: 'TEXT', requiredDuringInsert: true); + type: const StringType(), requiredDuringInsert: true); final VerificationMeta _cidMeta = const VerificationMeta('cid'); + @override late final GeneratedColumn cid = GeneratedColumn( 'cid', aliasedName, false, - typeName: 'TEXT', requiredDuringInsert: true); + type: const StringType(), requiredDuringInsert: true); final VerificationMeta _configMeta = const VerificationMeta('config'); + @override late final GeneratedColumnWithTypeConverter, String?> config = GeneratedColumn('config', aliasedName, false, - typeName: 'TEXT', requiredDuringInsert: true) + type: const StringType(), requiredDuringInsert: true) .withConverter>($ChannelsTable.$converter0); final VerificationMeta _frozenMeta = const VerificationMeta('frozen'); + @override late final GeneratedColumn frozen = GeneratedColumn( 'frozen', aliasedName, false, - typeName: 'INTEGER', + type: const BoolType(), requiredDuringInsert: false, defaultConstraints: 'CHECK (frozen IN (0, 1))', defaultValue: const Constant(false)); final VerificationMeta _lastMessageAtMeta = const VerificationMeta('lastMessageAt'); + @override late final GeneratedColumn lastMessageAt = GeneratedColumn('last_message_at', aliasedName, true, - typeName: 'INTEGER', requiredDuringInsert: false); + type: const IntType(), requiredDuringInsert: false); final VerificationMeta _createdAtMeta = const VerificationMeta('createdAt'); + @override late final GeneratedColumn createdAt = GeneratedColumn( 'created_at', aliasedName, false, - typeName: 'INTEGER', + type: const IntType(), requiredDuringInsert: false, defaultValue: currentDateAndTime); final VerificationMeta _updatedAtMeta = const VerificationMeta('updatedAt'); + @override late final GeneratedColumn updatedAt = GeneratedColumn( 'updated_at', aliasedName, false, - typeName: 'INTEGER', + type: const IntType(), requiredDuringInsert: false, defaultValue: currentDateAndTime); final VerificationMeta _deletedAtMeta = const VerificationMeta('deletedAt'); + @override late final GeneratedColumn deletedAt = GeneratedColumn( 'deleted_at', aliasedName, true, - typeName: 'INTEGER', requiredDuringInsert: false); + type: const IntType(), requiredDuringInsert: false); final VerificationMeta _memberCountMeta = const VerificationMeta('memberCount'); + @override late final GeneratedColumn memberCount = GeneratedColumn( 'member_count', aliasedName, false, - typeName: 'INTEGER', + type: const IntType(), requiredDuringInsert: false, defaultValue: const Constant(0)); final VerificationMeta _createdByIdMeta = const VerificationMeta('createdById'); + @override late final GeneratedColumn createdById = GeneratedColumn( 'created_by_id', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false); + type: const StringType(), requiredDuringInsert: false); final VerificationMeta _extraDataMeta = const VerificationMeta('extraData'); + @override late final GeneratedColumnWithTypeConverter, String?> extraData = GeneratedColumn('extra_data', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false) + type: const StringType(), requiredDuringInsert: false) .withConverter>($ChannelsTable.$converter1); @override List get $columns => [ @@ -1329,140 +1341,165 @@ class $MessagesTable extends Messages final String? _alias; $MessagesTable(this._db, [this._alias]); final VerificationMeta _idMeta = const VerificationMeta('id'); + @override late final GeneratedColumn id = GeneratedColumn( 'id', aliasedName, false, - typeName: 'TEXT', requiredDuringInsert: true); + type: const StringType(), requiredDuringInsert: true); final VerificationMeta _messageTextMeta = const VerificationMeta('messageText'); + @override late final GeneratedColumn messageText = GeneratedColumn( 'message_text', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false); + type: const StringType(), requiredDuringInsert: false); final VerificationMeta _attachmentsMeta = const VerificationMeta('attachments'); + @override late final GeneratedColumnWithTypeConverter, String?> attachments = GeneratedColumn('attachments', aliasedName, false, - typeName: 'TEXT', requiredDuringInsert: true) + type: const StringType(), requiredDuringInsert: true) .withConverter>($MessagesTable.$converter0); final VerificationMeta _statusMeta = const VerificationMeta('status'); + @override late final GeneratedColumnWithTypeConverter status = GeneratedColumn('status', aliasedName, false, - typeName: 'INTEGER', + type: const IntType(), requiredDuringInsert: false, defaultValue: const Constant(1)) .withConverter($MessagesTable.$converter1); final VerificationMeta _typeMeta = const VerificationMeta('type'); + @override late final GeneratedColumn type = GeneratedColumn( 'type', aliasedName, false, - typeName: 'TEXT', + type: const StringType(), requiredDuringInsert: false, defaultValue: const Constant('regular')); final VerificationMeta _mentionedUsersMeta = const VerificationMeta('mentionedUsers'); + @override late final GeneratedColumnWithTypeConverter, String?> mentionedUsers = GeneratedColumn( 'mentioned_users', aliasedName, false, - typeName: 'TEXT', requiredDuringInsert: true) + type: const StringType(), requiredDuringInsert: true) .withConverter>($MessagesTable.$converter2); final VerificationMeta _reactionCountsMeta = const VerificationMeta('reactionCounts'); + @override late final GeneratedColumnWithTypeConverter, String?> reactionCounts = GeneratedColumn( 'reaction_counts', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false) + type: const StringType(), requiredDuringInsert: false) .withConverter>($MessagesTable.$converter3); final VerificationMeta _reactionScoresMeta = const VerificationMeta('reactionScores'); + @override late final GeneratedColumnWithTypeConverter, String?> reactionScores = GeneratedColumn( 'reaction_scores', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false) + type: const StringType(), requiredDuringInsert: false) .withConverter>($MessagesTable.$converter4); final VerificationMeta _parentIdMeta = const VerificationMeta('parentId'); + @override late final GeneratedColumn parentId = GeneratedColumn( 'parent_id', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false); + type: const StringType(), requiredDuringInsert: false); final VerificationMeta _quotedMessageIdMeta = const VerificationMeta('quotedMessageId'); + @override late final GeneratedColumn quotedMessageId = GeneratedColumn('quoted_message_id', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false); + type: const StringType(), requiredDuringInsert: false); final VerificationMeta _replyCountMeta = const VerificationMeta('replyCount'); + @override late final GeneratedColumn replyCount = GeneratedColumn( 'reply_count', aliasedName, true, - typeName: 'INTEGER', requiredDuringInsert: false); + type: const IntType(), requiredDuringInsert: false); final VerificationMeta _showInChannelMeta = const VerificationMeta('showInChannel'); + @override late final GeneratedColumn showInChannel = GeneratedColumn( 'show_in_channel', aliasedName, true, - typeName: 'INTEGER', + type: const BoolType(), requiredDuringInsert: false, defaultConstraints: 'CHECK (show_in_channel IN (0, 1))'); final VerificationMeta _shadowedMeta = const VerificationMeta('shadowed'); + @override late final GeneratedColumn shadowed = GeneratedColumn( 'shadowed', aliasedName, false, - typeName: 'INTEGER', + type: const BoolType(), requiredDuringInsert: false, defaultConstraints: 'CHECK (shadowed IN (0, 1))', defaultValue: const Constant(false)); final VerificationMeta _commandMeta = const VerificationMeta('command'); + @override late final GeneratedColumn command = GeneratedColumn( 'command', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false); + type: const StringType(), requiredDuringInsert: false); final VerificationMeta _createdAtMeta = const VerificationMeta('createdAt'); + @override late final GeneratedColumn createdAt = GeneratedColumn( 'created_at', aliasedName, false, - typeName: 'INTEGER', + type: const IntType(), requiredDuringInsert: false, defaultValue: currentDateAndTime); final VerificationMeta _updatedAtMeta = const VerificationMeta('updatedAt'); + @override late final GeneratedColumn updatedAt = GeneratedColumn( 'updated_at', aliasedName, false, - typeName: 'INTEGER', + type: const IntType(), requiredDuringInsert: false, defaultValue: currentDateAndTime); final VerificationMeta _deletedAtMeta = const VerificationMeta('deletedAt'); + @override late final GeneratedColumn deletedAt = GeneratedColumn( 'deleted_at', aliasedName, true, - typeName: 'INTEGER', requiredDuringInsert: false); + type: const IntType(), requiredDuringInsert: false); final VerificationMeta _userIdMeta = const VerificationMeta('userId'); + @override late final GeneratedColumn userId = GeneratedColumn( 'user_id', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false); + type: const StringType(), requiredDuringInsert: false); final VerificationMeta _pinnedMeta = const VerificationMeta('pinned'); + @override late final GeneratedColumn pinned = GeneratedColumn( 'pinned', aliasedName, false, - typeName: 'INTEGER', + type: const BoolType(), requiredDuringInsert: false, defaultConstraints: 'CHECK (pinned IN (0, 1))', defaultValue: const Constant(false)); final VerificationMeta _pinnedAtMeta = const VerificationMeta('pinnedAt'); + @override late final GeneratedColumn pinnedAt = GeneratedColumn( 'pinned_at', aliasedName, true, - typeName: 'INTEGER', requiredDuringInsert: false); + type: const IntType(), requiredDuringInsert: false); final VerificationMeta _pinExpiresMeta = const VerificationMeta('pinExpires'); + @override late final GeneratedColumn pinExpires = GeneratedColumn( 'pin_expires', aliasedName, true, - typeName: 'INTEGER', requiredDuringInsert: false); + type: const IntType(), requiredDuringInsert: false); final VerificationMeta _pinnedByUserIdMeta = const VerificationMeta('pinnedByUserId'); + @override late final GeneratedColumn pinnedByUserId = GeneratedColumn( 'pinned_by_user_id', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false); + type: const StringType(), requiredDuringInsert: false); final VerificationMeta _channelCidMeta = const VerificationMeta('channelCid'); + @override late final GeneratedColumn channelCid = GeneratedColumn( 'channel_cid', aliasedName, false, - typeName: 'TEXT', + type: const StringType(), requiredDuringInsert: true, $customConstraints: 'REFERENCES channels(cid) ON DELETE CASCADE'); final VerificationMeta _i18nMeta = const VerificationMeta('i18n'); + @override late final GeneratedColumnWithTypeConverter, String?> i18n = GeneratedColumn('i18n', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false) + type: const StringType(), requiredDuringInsert: false) .withConverter>($MessagesTable.$converter5); final VerificationMeta _extraDataMeta = const VerificationMeta('extraData'); + @override late final GeneratedColumnWithTypeConverter, String?> extraData = GeneratedColumn('extra_data', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false) + type: const StringType(), requiredDuringInsert: false) .withConverter>($MessagesTable.$converter6); @override List get $columns => [ @@ -2409,141 +2446,166 @@ class $PinnedMessagesTable extends PinnedMessages final String? _alias; $PinnedMessagesTable(this._db, [this._alias]); final VerificationMeta _idMeta = const VerificationMeta('id'); + @override late final GeneratedColumn id = GeneratedColumn( 'id', aliasedName, false, - typeName: 'TEXT', requiredDuringInsert: true); + type: const StringType(), requiredDuringInsert: true); final VerificationMeta _messageTextMeta = const VerificationMeta('messageText'); + @override late final GeneratedColumn messageText = GeneratedColumn( 'message_text', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false); + type: const StringType(), requiredDuringInsert: false); final VerificationMeta _attachmentsMeta = const VerificationMeta('attachments'); + @override late final GeneratedColumnWithTypeConverter, String?> attachments = GeneratedColumn('attachments', aliasedName, false, - typeName: 'TEXT', requiredDuringInsert: true) + type: const StringType(), requiredDuringInsert: true) .withConverter>($PinnedMessagesTable.$converter0); final VerificationMeta _statusMeta = const VerificationMeta('status'); + @override late final GeneratedColumnWithTypeConverter status = GeneratedColumn('status', aliasedName, false, - typeName: 'INTEGER', + type: const IntType(), requiredDuringInsert: false, defaultValue: const Constant(1)) .withConverter( $PinnedMessagesTable.$converter1); final VerificationMeta _typeMeta = const VerificationMeta('type'); + @override late final GeneratedColumn type = GeneratedColumn( 'type', aliasedName, false, - typeName: 'TEXT', + type: const StringType(), requiredDuringInsert: false, defaultValue: const Constant('regular')); final VerificationMeta _mentionedUsersMeta = const VerificationMeta('mentionedUsers'); + @override late final GeneratedColumnWithTypeConverter, String?> mentionedUsers = GeneratedColumn( 'mentioned_users', aliasedName, false, - typeName: 'TEXT', requiredDuringInsert: true) + type: const StringType(), requiredDuringInsert: true) .withConverter>($PinnedMessagesTable.$converter2); final VerificationMeta _reactionCountsMeta = const VerificationMeta('reactionCounts'); + @override late final GeneratedColumnWithTypeConverter, String?> reactionCounts = GeneratedColumn( 'reaction_counts', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false) + type: const StringType(), requiredDuringInsert: false) .withConverter>($PinnedMessagesTable.$converter3); final VerificationMeta _reactionScoresMeta = const VerificationMeta('reactionScores'); + @override late final GeneratedColumnWithTypeConverter, String?> reactionScores = GeneratedColumn( 'reaction_scores', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false) + type: const StringType(), requiredDuringInsert: false) .withConverter>($PinnedMessagesTable.$converter4); final VerificationMeta _parentIdMeta = const VerificationMeta('parentId'); + @override late final GeneratedColumn parentId = GeneratedColumn( 'parent_id', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false); + type: const StringType(), requiredDuringInsert: false); final VerificationMeta _quotedMessageIdMeta = const VerificationMeta('quotedMessageId'); + @override late final GeneratedColumn quotedMessageId = GeneratedColumn('quoted_message_id', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false); + type: const StringType(), requiredDuringInsert: false); final VerificationMeta _replyCountMeta = const VerificationMeta('replyCount'); + @override late final GeneratedColumn replyCount = GeneratedColumn( 'reply_count', aliasedName, true, - typeName: 'INTEGER', requiredDuringInsert: false); + type: const IntType(), requiredDuringInsert: false); final VerificationMeta _showInChannelMeta = const VerificationMeta('showInChannel'); + @override late final GeneratedColumn showInChannel = GeneratedColumn( 'show_in_channel', aliasedName, true, - typeName: 'INTEGER', + type: const BoolType(), requiredDuringInsert: false, defaultConstraints: 'CHECK (show_in_channel IN (0, 1))'); final VerificationMeta _shadowedMeta = const VerificationMeta('shadowed'); + @override late final GeneratedColumn shadowed = GeneratedColumn( 'shadowed', aliasedName, false, - typeName: 'INTEGER', + type: const BoolType(), requiredDuringInsert: false, defaultConstraints: 'CHECK (shadowed IN (0, 1))', defaultValue: const Constant(false)); final VerificationMeta _commandMeta = const VerificationMeta('command'); + @override late final GeneratedColumn command = GeneratedColumn( 'command', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false); + type: const StringType(), requiredDuringInsert: false); final VerificationMeta _createdAtMeta = const VerificationMeta('createdAt'); + @override late final GeneratedColumn createdAt = GeneratedColumn( 'created_at', aliasedName, false, - typeName: 'INTEGER', + type: const IntType(), requiredDuringInsert: false, defaultValue: currentDateAndTime); final VerificationMeta _updatedAtMeta = const VerificationMeta('updatedAt'); + @override late final GeneratedColumn updatedAt = GeneratedColumn( 'updated_at', aliasedName, false, - typeName: 'INTEGER', + type: const IntType(), requiredDuringInsert: false, defaultValue: currentDateAndTime); final VerificationMeta _deletedAtMeta = const VerificationMeta('deletedAt'); + @override late final GeneratedColumn deletedAt = GeneratedColumn( 'deleted_at', aliasedName, true, - typeName: 'INTEGER', requiredDuringInsert: false); + type: const IntType(), requiredDuringInsert: false); final VerificationMeta _userIdMeta = const VerificationMeta('userId'); + @override late final GeneratedColumn userId = GeneratedColumn( 'user_id', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false); + type: const StringType(), requiredDuringInsert: false); final VerificationMeta _pinnedMeta = const VerificationMeta('pinned'); + @override late final GeneratedColumn pinned = GeneratedColumn( 'pinned', aliasedName, false, - typeName: 'INTEGER', + type: const BoolType(), requiredDuringInsert: false, defaultConstraints: 'CHECK (pinned IN (0, 1))', defaultValue: const Constant(false)); final VerificationMeta _pinnedAtMeta = const VerificationMeta('pinnedAt'); + @override late final GeneratedColumn pinnedAt = GeneratedColumn( 'pinned_at', aliasedName, true, - typeName: 'INTEGER', requiredDuringInsert: false); + type: const IntType(), requiredDuringInsert: false); final VerificationMeta _pinExpiresMeta = const VerificationMeta('pinExpires'); + @override late final GeneratedColumn pinExpires = GeneratedColumn( 'pin_expires', aliasedName, true, - typeName: 'INTEGER', requiredDuringInsert: false); + type: const IntType(), requiredDuringInsert: false); final VerificationMeta _pinnedByUserIdMeta = const VerificationMeta('pinnedByUserId'); + @override late final GeneratedColumn pinnedByUserId = GeneratedColumn( 'pinned_by_user_id', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false); + type: const StringType(), requiredDuringInsert: false); final VerificationMeta _channelCidMeta = const VerificationMeta('channelCid'); + @override late final GeneratedColumn channelCid = GeneratedColumn( 'channel_cid', aliasedName, false, - typeName: 'TEXT', + type: const StringType(), requiredDuringInsert: true, $customConstraints: 'REFERENCES channels(cid) ON DELETE CASCADE'); final VerificationMeta _i18nMeta = const VerificationMeta('i18n'); + @override late final GeneratedColumnWithTypeConverter, String?> i18n = GeneratedColumn('i18n', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false) + type: const StringType(), requiredDuringInsert: false) .withConverter>($PinnedMessagesTable.$converter5); final VerificationMeta _extraDataMeta = const VerificationMeta('extraData'); + @override late final GeneratedColumnWithTypeConverter, String?> extraData = GeneratedColumn('extra_data', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false) + type: const StringType(), requiredDuringInsert: false) .withConverter>( $PinnedMessagesTable.$converter6); @override @@ -2947,35 +3009,41 @@ class $PinnedMessageReactionsTable extends PinnedMessageReactions final String? _alias; $PinnedMessageReactionsTable(this._db, [this._alias]); final VerificationMeta _userIdMeta = const VerificationMeta('userId'); + @override late final GeneratedColumn userId = GeneratedColumn( 'user_id', aliasedName, false, - typeName: 'TEXT', requiredDuringInsert: true); + type: const StringType(), requiredDuringInsert: true); final VerificationMeta _messageIdMeta = const VerificationMeta('messageId'); + @override late final GeneratedColumn messageId = GeneratedColumn( 'message_id', aliasedName, false, - typeName: 'TEXT', + type: const StringType(), requiredDuringInsert: true, $customConstraints: 'REFERENCES pinned_messages(id) ON DELETE CASCADE'); final VerificationMeta _typeMeta = const VerificationMeta('type'); + @override late final GeneratedColumn type = GeneratedColumn( 'type', aliasedName, false, - typeName: 'TEXT', requiredDuringInsert: true); + type: const StringType(), requiredDuringInsert: true); final VerificationMeta _createdAtMeta = const VerificationMeta('createdAt'); + @override late final GeneratedColumn createdAt = GeneratedColumn( 'created_at', aliasedName, false, - typeName: 'INTEGER', + type: const IntType(), requiredDuringInsert: false, defaultValue: currentDateAndTime); final VerificationMeta _scoreMeta = const VerificationMeta('score'); + @override late final GeneratedColumn score = GeneratedColumn( 'score', aliasedName, false, - typeName: 'INTEGER', + type: const IntType(), requiredDuringInsert: false, defaultValue: const Constant(0)); final VerificationMeta _extraDataMeta = const VerificationMeta('extraData'); + @override late final GeneratedColumnWithTypeConverter, String?> extraData = GeneratedColumn('extra_data', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false) + type: const StringType(), requiredDuringInsert: false) .withConverter>( $PinnedMessageReactionsTable.$converter0); @override @@ -3270,35 +3338,41 @@ class $ReactionsTable extends Reactions final String? _alias; $ReactionsTable(this._db, [this._alias]); final VerificationMeta _userIdMeta = const VerificationMeta('userId'); + @override late final GeneratedColumn userId = GeneratedColumn( 'user_id', aliasedName, false, - typeName: 'TEXT', requiredDuringInsert: true); + type: const StringType(), requiredDuringInsert: true); final VerificationMeta _messageIdMeta = const VerificationMeta('messageId'); + @override late final GeneratedColumn messageId = GeneratedColumn( 'message_id', aliasedName, false, - typeName: 'TEXT', + type: const StringType(), requiredDuringInsert: true, $customConstraints: 'REFERENCES messages(id) ON DELETE CASCADE'); final VerificationMeta _typeMeta = const VerificationMeta('type'); + @override late final GeneratedColumn type = GeneratedColumn( 'type', aliasedName, false, - typeName: 'TEXT', requiredDuringInsert: true); + type: const StringType(), requiredDuringInsert: true); final VerificationMeta _createdAtMeta = const VerificationMeta('createdAt'); + @override late final GeneratedColumn createdAt = GeneratedColumn( 'created_at', aliasedName, false, - typeName: 'INTEGER', + type: const IntType(), requiredDuringInsert: false, defaultValue: currentDateAndTime); final VerificationMeta _scoreMeta = const VerificationMeta('score'); + @override late final GeneratedColumn score = GeneratedColumn( 'score', aliasedName, false, - typeName: 'INTEGER', + type: const IntType(), requiredDuringInsert: false, defaultValue: const Constant(0)); final VerificationMeta _extraDataMeta = const VerificationMeta('extraData'); + @override late final GeneratedColumnWithTypeConverter, String?> extraData = GeneratedColumn('extra_data', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false) + type: const StringType(), requiredDuringInsert: false) .withConverter>($ReactionsTable.$converter0); @override List get $columns => @@ -3666,51 +3740,60 @@ class $UsersTable extends Users with TableInfo<$UsersTable, UserEntity> { final String? _alias; $UsersTable(this._db, [this._alias]); final VerificationMeta _idMeta = const VerificationMeta('id'); + @override late final GeneratedColumn id = GeneratedColumn( 'id', aliasedName, false, - typeName: 'TEXT', requiredDuringInsert: true); + type: const StringType(), requiredDuringInsert: true); final VerificationMeta _roleMeta = const VerificationMeta('role'); + @override late final GeneratedColumn role = GeneratedColumn( 'role', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false); + type: const StringType(), requiredDuringInsert: false); final VerificationMeta _languageMeta = const VerificationMeta('language'); + @override late final GeneratedColumn language = GeneratedColumn( 'language', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false); + type: const StringType(), requiredDuringInsert: false); final VerificationMeta _createdAtMeta = const VerificationMeta('createdAt'); + @override late final GeneratedColumn createdAt = GeneratedColumn( 'created_at', aliasedName, false, - typeName: 'INTEGER', + type: const IntType(), requiredDuringInsert: false, defaultValue: currentDateAndTime); final VerificationMeta _updatedAtMeta = const VerificationMeta('updatedAt'); + @override late final GeneratedColumn updatedAt = GeneratedColumn( 'updated_at', aliasedName, false, - typeName: 'INTEGER', + type: const IntType(), requiredDuringInsert: false, defaultValue: currentDateAndTime); final VerificationMeta _lastActiveMeta = const VerificationMeta('lastActive'); + @override late final GeneratedColumn lastActive = GeneratedColumn( 'last_active', aliasedName, true, - typeName: 'INTEGER', requiredDuringInsert: false); + type: const IntType(), requiredDuringInsert: false); final VerificationMeta _onlineMeta = const VerificationMeta('online'); + @override late final GeneratedColumn online = GeneratedColumn( 'online', aliasedName, false, - typeName: 'INTEGER', + type: const BoolType(), requiredDuringInsert: false, defaultConstraints: 'CHECK (online IN (0, 1))', defaultValue: const Constant(false)); final VerificationMeta _bannedMeta = const VerificationMeta('banned'); + @override late final GeneratedColumn banned = GeneratedColumn( 'banned', aliasedName, false, - typeName: 'INTEGER', + type: const BoolType(), requiredDuringInsert: false, defaultConstraints: 'CHECK (banned IN (0, 1))', defaultValue: const Constant(false)); final VerificationMeta _extraDataMeta = const VerificationMeta('extraData'); + @override late final GeneratedColumnWithTypeConverter, String?> extraData = GeneratedColumn('extra_data', aliasedName, false, - typeName: 'TEXT', requiredDuringInsert: true) + type: const StringType(), requiredDuringInsert: true) .withConverter>($UsersTable.$converter0); @override List get $columns => [ @@ -4156,69 +4239,80 @@ class $MembersTable extends Members final String? _alias; $MembersTable(this._db, [this._alias]); final VerificationMeta _userIdMeta = const VerificationMeta('userId'); + @override late final GeneratedColumn userId = GeneratedColumn( 'user_id', aliasedName, false, - typeName: 'TEXT', requiredDuringInsert: true); + type: const StringType(), requiredDuringInsert: true); final VerificationMeta _channelCidMeta = const VerificationMeta('channelCid'); + @override late final GeneratedColumn channelCid = GeneratedColumn( 'channel_cid', aliasedName, false, - typeName: 'TEXT', + type: const StringType(), requiredDuringInsert: true, $customConstraints: 'REFERENCES channels(cid) ON DELETE CASCADE'); final VerificationMeta _roleMeta = const VerificationMeta('role'); + @override late final GeneratedColumn role = GeneratedColumn( 'role', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false); + type: const StringType(), requiredDuringInsert: false); final VerificationMeta _inviteAcceptedAtMeta = const VerificationMeta('inviteAcceptedAt'); + @override late final GeneratedColumn inviteAcceptedAt = GeneratedColumn('invite_accepted_at', aliasedName, true, - typeName: 'INTEGER', requiredDuringInsert: false); + type: const IntType(), requiredDuringInsert: false); final VerificationMeta _inviteRejectedAtMeta = const VerificationMeta('inviteRejectedAt'); + @override late final GeneratedColumn inviteRejectedAt = GeneratedColumn('invite_rejected_at', aliasedName, true, - typeName: 'INTEGER', requiredDuringInsert: false); + type: const IntType(), requiredDuringInsert: false); final VerificationMeta _invitedMeta = const VerificationMeta('invited'); + @override late final GeneratedColumn invited = GeneratedColumn( 'invited', aliasedName, false, - typeName: 'INTEGER', + type: const BoolType(), requiredDuringInsert: false, defaultConstraints: 'CHECK (invited IN (0, 1))', defaultValue: const Constant(false)); final VerificationMeta _bannedMeta = const VerificationMeta('banned'); + @override late final GeneratedColumn banned = GeneratedColumn( 'banned', aliasedName, false, - typeName: 'INTEGER', + type: const BoolType(), requiredDuringInsert: false, defaultConstraints: 'CHECK (banned IN (0, 1))', defaultValue: const Constant(false)); final VerificationMeta _shadowBannedMeta = const VerificationMeta('shadowBanned'); + @override late final GeneratedColumn shadowBanned = GeneratedColumn( 'shadow_banned', aliasedName, false, - typeName: 'INTEGER', + type: const BoolType(), requiredDuringInsert: false, defaultConstraints: 'CHECK (shadow_banned IN (0, 1))', defaultValue: const Constant(false)); final VerificationMeta _isModeratorMeta = const VerificationMeta('isModerator'); + @override late final GeneratedColumn isModerator = GeneratedColumn( 'is_moderator', aliasedName, false, - typeName: 'INTEGER', + type: const BoolType(), requiredDuringInsert: false, defaultConstraints: 'CHECK (is_moderator IN (0, 1))', defaultValue: const Constant(false)); final VerificationMeta _createdAtMeta = const VerificationMeta('createdAt'); + @override late final GeneratedColumn createdAt = GeneratedColumn( 'created_at', aliasedName, false, - typeName: 'INTEGER', + type: const IntType(), requiredDuringInsert: false, defaultValue: currentDateAndTime); final VerificationMeta _updatedAtMeta = const VerificationMeta('updatedAt'); + @override late final GeneratedColumn updatedAt = GeneratedColumn( 'updated_at', aliasedName, false, - typeName: 'INTEGER', + type: const IntType(), requiredDuringInsert: false, defaultValue: currentDateAndTime); @override @@ -4495,24 +4589,28 @@ class $ReadsTable extends Reads with TableInfo<$ReadsTable, ReadEntity> { final String? _alias; $ReadsTable(this._db, [this._alias]); final VerificationMeta _lastReadMeta = const VerificationMeta('lastRead'); + @override late final GeneratedColumn lastRead = GeneratedColumn( 'last_read', aliasedName, false, - typeName: 'INTEGER', requiredDuringInsert: true); + type: const IntType(), requiredDuringInsert: true); final VerificationMeta _userIdMeta = const VerificationMeta('userId'); + @override late final GeneratedColumn userId = GeneratedColumn( 'user_id', aliasedName, false, - typeName: 'TEXT', requiredDuringInsert: true); + type: const StringType(), requiredDuringInsert: true); final VerificationMeta _channelCidMeta = const VerificationMeta('channelCid'); + @override late final GeneratedColumn channelCid = GeneratedColumn( 'channel_cid', aliasedName, false, - typeName: 'TEXT', + type: const StringType(), requiredDuringInsert: true, $customConstraints: 'REFERENCES channels(cid) ON DELETE CASCADE'); final VerificationMeta _unreadMessagesMeta = const VerificationMeta('unreadMessages'); + @override late final GeneratedColumn unreadMessages = GeneratedColumn( 'unread_messages', aliasedName, false, - typeName: 'INTEGER', + type: const IntType(), requiredDuringInsert: false, defaultValue: const Constant(0)); @override @@ -4695,13 +4793,15 @@ class $ChannelQueriesTable extends ChannelQueries final String? _alias; $ChannelQueriesTable(this._db, [this._alias]); final VerificationMeta _queryHashMeta = const VerificationMeta('queryHash'); + @override late final GeneratedColumn queryHash = GeneratedColumn( 'query_hash', aliasedName, false, - typeName: 'TEXT', requiredDuringInsert: true); + type: const StringType(), requiredDuringInsert: true); final VerificationMeta _channelCidMeta = const VerificationMeta('channelCid'); + @override late final GeneratedColumn channelCid = GeneratedColumn( 'channel_cid', aliasedName, false, - typeName: 'TEXT', requiredDuringInsert: true); + type: const StringType(), requiredDuringInsert: true); @override List get $columns => [queryHash, channelCid]; @override @@ -5009,38 +5109,45 @@ class $ConnectionEventsTable extends ConnectionEvents final String? _alias; $ConnectionEventsTable(this._db, [this._alias]); final VerificationMeta _idMeta = const VerificationMeta('id'); + @override late final GeneratedColumn id = GeneratedColumn( 'id', aliasedName, false, - typeName: 'INTEGER', requiredDuringInsert: false); + type: const IntType(), requiredDuringInsert: false); final VerificationMeta _typeMeta = const VerificationMeta('type'); + @override late final GeneratedColumn type = GeneratedColumn( 'type', aliasedName, false, - typeName: 'TEXT', requiredDuringInsert: true); + type: const StringType(), requiredDuringInsert: true); final VerificationMeta _ownUserMeta = const VerificationMeta('ownUser'); + @override late final GeneratedColumnWithTypeConverter, String?> ownUser = GeneratedColumn('own_user', aliasedName, true, - typeName: 'TEXT', requiredDuringInsert: false) + type: const StringType(), requiredDuringInsert: false) .withConverter>( $ConnectionEventsTable.$converter0); final VerificationMeta _totalUnreadCountMeta = const VerificationMeta('totalUnreadCount'); + @override late final GeneratedColumn totalUnreadCount = GeneratedColumn( 'total_unread_count', aliasedName, true, - typeName: 'INTEGER', requiredDuringInsert: false); + type: const IntType(), requiredDuringInsert: false); final VerificationMeta _unreadChannelsMeta = const VerificationMeta('unreadChannels'); + @override late final GeneratedColumn unreadChannels = GeneratedColumn( 'unread_channels', aliasedName, true, - typeName: 'INTEGER', requiredDuringInsert: false); + type: const IntType(), requiredDuringInsert: false); final VerificationMeta _lastEventAtMeta = const VerificationMeta('lastEventAt'); + @override late final GeneratedColumn lastEventAt = GeneratedColumn('last_event_at', aliasedName, true, - typeName: 'INTEGER', requiredDuringInsert: false); + type: const IntType(), requiredDuringInsert: false); final VerificationMeta _lastSyncAtMeta = const VerificationMeta('lastSyncAt'); + @override late final GeneratedColumn lastSyncAt = GeneratedColumn( 'last_sync_at', aliasedName, true, - typeName: 'INTEGER', requiredDuringInsert: false); + type: const IntType(), requiredDuringInsert: false); @override List get $columns => [ id, diff --git a/packages/stream_chat_persistence/pubspec.yaml b/packages/stream_chat_persistence/pubspec.yaml index 3bf970d3..a66eef54 100644 --- a/packages/stream_chat_persistence/pubspec.yaml +++ b/packages/stream_chat_persistence/pubspec.yaml @@ -10,7 +10,7 @@ environment: flutter: ">=1.17.0" dependencies: - drift: ^1.0.0 + drift: 1.3.0 flutter: sdk: flutter logging: ^1.0.1 @@ -24,7 +24,7 @@ dependencies: dev_dependencies: build_runner: ^2.0.1 dart_code_metrics: ^4.4.0 - drift_dev: ^1.0.0 + drift_dev: 1.3.0 flutter_test: sdk: flutter mocktail: ^0.2.0