diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 0faad799..3bb5a923 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -52,6 +52,8 @@ Stream's Flutter code is kept in a single mono-repository consisting of multiple
`stream_chat_persistence` - This package provides a persistence client for fetching and saving chat data locally. Stream Chat Persistence uses Moor as a disk cache.
+`stream_chat_localizations` - This package provides a set of localizations for the SDK.
+
### Local Setup
Congratulations! 🎉. You've successfully cloned our repo, and you are ready to make your first contribution. Before you can start making code changes, there are a few things to configure.
diff --git a/README.md b/README.md
index 6758b189..62358d57 100644
--- a/README.md
+++ b/README.md
@@ -17,7 +17,7 @@ This repository contains code for our [Dart](https://dart.dev/) and [Flutter](ht
Stream allows developers to rapidly deploy scalable feeds and chat messaging with an industry leading 99.999% uptime SLA guarantee.
## Sample apps and demos
-Our team maintains a dedicated repository for fully-fledged sample applications and demos. Consider checking out [GetStream/flutter-samples](https://github.com/GetStream/flutter-samples) to learn more or get started by looking at our latest [Stream Chat demo](https://github.com/GetStream/flutter-samples/tree/main/stream_chat_v1).
+Our team maintains a dedicated repository for fully-fledged sample applications and demos. Consider checking out [GetStream/flutter-samples](https://github.com/GetStream/flutter-samples) to learn more or get started by looking at our latest [Stream Chat demo](https://github.com/GetStream/flutter-samples/tree/main/packages/stream_chat_v1).
## Free for Makers
diff --git a/docusaurus/docs/Flutter/basics/introduction.mdx b/docusaurus/docs/Flutter/basics/introduction.mdx
index 756bd33f..99170774 100644
--- a/docusaurus/docs/Flutter/basics/introduction.mdx
+++ b/docusaurus/docs/Flutter/basics/introduction.mdx
@@ -8,13 +8,14 @@ Exploring The Basics Of Stream Chat

-Stream Chat is a service that helps you easily build a full chat experience in your Flutter (and more) apps.
+Stream Chat is a service that helps you easily build a full chat experience in your Flutter apps.
+We also support a variety of other SDKs.
This section of the documentation focuses on our Flutter SDK which helps you easily
-ship high quality messaging experiences in apps and programs built with the [Flutter toolkit made
-by Google](https://flutter.dev).
+ship high quality messaging experiences in apps and programs built with the [Flutter toolkit
+made by Google](https://flutter.dev).
-The Stream Chat Flutter SDK comprises of four different packages to choose from ranging from ones
+The Stream Chat Flutter SDK comprises five different packages to choose from, ranging from ones
giving you complete control to ones that give you a rich out-of-the-box chat experience.
The packages that make up the Stream Chat SDK are:
@@ -30,28 +31,28 @@ reusable and customisable UI components.
saving chat data locally.
5. Localizations (stream_chat_localizations): provides a set of localizations for the SDK.
-We recommend building prototypes using the full UI package since it contains UI widgets already
-integrated with Stream's API. [stream_chat_flutter](https://pub.dev/packages/stream_chat_flutter)
-is the fastest way to get up and running using Stream chat in your app.
+We recommend building prototypes using the full UI package, [stream_chat_flutter](https://pub.dev/packages/stream_chat_flutter),
+since it contains UI widgets already integrated with Stream's API. It is the fastest way to get up
+and running using Stream chat in your app.
The Flutter SDK enables you to build any type of chat or messaging experience for Android, iOS, Web
and Desktop.
If you're building a very custom UI and would prefer a more lean package,
-our [core package](https://pub.dev/packages/stream_chat_flutter) will be suited to this use case. Core allows you to build custom,
-expressive UIs while retaining the benefits of our full Flutter SDK.
-APIs for accessing and controlling users, sending messages, etc are seamlessly integrated into
-this package and accessible via providers and builders.
+[stream_chat_flutter_core](https://pub.dev/packages/stream_chat_flutter_core) will be suited to this
+use case. Core allows you to build custom, expressive UIs while retaining the benefits of our full
+Flutter SDK. APIs for accessing and controlling users, sending messages, and so forth are seamlessly integrated
+into this package and accessible via providers and builders.
Before going into the docs, let's take a small detour to look at how the elements of Stream Chat are structured.
### Basic Structure
-There are two core elements in chat, Users and Channels.
+There are two core elements in chat, Users and Channels.
Channels are groups of one or more users that can message each other.
In an app, you need to have a user connected to query channels.
-There is no specific distinction between a chat between two people and a group chat,
+There is no specific distinction between a chat with only two people and a group chat,
but there is a way to create a unique chat between a certain number of people by creating a distinct channel.

@@ -68,7 +69,7 @@ While this is a simplistic overview of the service, the Flutter SDK handles the
Before reading the docs, consider trying our [online API tour](https://getstream.io/chat/get_started/),
it is a nice way to learn how the API works.
-It's in-browser so Javascript-based but the ideas are pretty much the same as Dart.
+It's in-browser so you'll need to use Javascript but the core conceps are pretty much the same as Dart.
You may also like to look at the [Flutter tutorial](https://getstream.io/chat/flutter/tutorial/)
which focuses on using the UI package to get Stream Chat integrated into a Flutter app.
diff --git a/docusaurus/docs/Flutter/guides/adding_localization.mdx b/docusaurus/docs/Flutter/guides/adding_localization.mdx
index 8ecc0cce..4ad5eede 100644
--- a/docusaurus/docs/Flutter/guides/adding_localization.mdx
+++ b/docusaurus/docs/Flutter/guides/adding_localization.mdx
@@ -26,7 +26,8 @@ At the moment we support the following languages:
- [Italian](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_it.dart)
- [French](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_fr.dart)
- [Spanish](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_es.dart)
-
+- [Japanese](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ja.dart)
+- [Korean](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ko.dart)
More languages will be added in the future. Feel free to [contribute](https://github.com/GetStream/stream-chat-flutter/blob/master/CONTRIBUTING.md) to add more languages.
### Add dependency
@@ -64,6 +65,8 @@ class MyApp extends StatelessWidget {
Locale('fr'),
Locale('it'),
Locale('es'),
+ Locale('ja'),
+ Locale('ko'),
],
// Add GlobalStreamChatLocalizations.delegates
localizationsDelegates: GlobalStreamChatLocalizations.delegates,
@@ -133,6 +136,8 @@ Here is an example of how that would look like:
Locale('fr'),
Locale('it'),
Locale('es'),
+ Locale('ja'),
+ Locale('ko'),
],
// locales are the locales of the device
// supportedLocales are the app supported locales
@@ -175,6 +180,8 @@ Example:
nb
fr
it
- es
+ es
+ ja
+ ko
```
diff --git a/packages/stream_chat/lib/src/client/channel.dart b/packages/stream_chat/lib/src/client/channel.dart
index 3190dc1b..22738794 100644
--- a/packages/stream_chat/lib/src/client/channel.dart
+++ b/packages/stream_chat/lib/src/client/channel.dart
@@ -153,9 +153,9 @@ class Channel {
true;
/// Returns true if the channel is muted, as a stream.
- Stream? get isMutedStream => _client.state.currentUserStream
+ Stream get isMutedStream => _client.state.currentUserStream
.map((event) =>
- event!.channelMutes.any((element) => element.channel.cid == cid) ==
+ event?.channelMutes.any((element) => element.channel.cid == cid) ==
true)
.distinct();
@@ -168,37 +168,37 @@ class Channel {
/// Channel configuration.
ChannelConfig? get config {
_checkInitialized();
- return state?._channelState.channel?.config;
+ return state!._channelState.channel?.config;
}
/// Channel configuration as a stream.
- Stream? get configStream {
+ Stream get configStream {
_checkInitialized();
- return state?.channelStateStream.map((cs) => cs.channel?.config);
+ return state!.channelStateStream.map((cs) => cs.channel?.config);
}
/// Channel user creator.
User? get createdBy {
_checkInitialized();
- return state?._channelState.channel?.createdBy;
+ return state!._channelState.channel?.createdBy;
}
/// Channel user creator as a stream.
- Stream? get createdByStream {
+ Stream get createdByStream {
_checkInitialized();
- return state?.channelStateStream.map((cs) => cs.channel?.createdBy);
+ return state!.channelStateStream.map((cs) => cs.channel?.createdBy);
}
/// Channel frozen status.
- bool? get frozen {
+ bool get frozen {
_checkInitialized();
- return state?._channelState.channel?.frozen;
+ return state!._channelState.channel?.frozen == true;
}
/// Channel frozen status as a stream.
- Stream? get frozenStream {
+ Stream get frozenStream {
_checkInitialized();
- return state?.channelStateStream.map((cs) => cs.channel?.frozen);
+ return state!.channelStateStream.map((cs) => cs.channel?.frozen == true);
}
/// Cooldown count
@@ -219,69 +219,61 @@ class Channel {
/// Channel creation date.
DateTime? get createdAt {
_checkInitialized();
- return state?._channelState.channel?.createdAt;
+ return state!._channelState.channel?.createdAt;
}
/// Channel creation date as a stream.
- Stream? get createdAtStream {
+ Stream get createdAtStream {
_checkInitialized();
- return state?.channelStateStream.map((cs) => cs.channel?.createdAt);
+ return state!.channelStateStream.map((cs) => cs.channel?.createdAt);
}
/// Channel last message date.
DateTime? get lastMessageAt {
_checkInitialized();
-
- return state?._channelState.channel?.lastMessageAt;
+ return state!._channelState.channel?.lastMessageAt;
}
/// Channel last message date as a stream.
- Stream? get lastMessageAtStream {
+ Stream get lastMessageAtStream {
_checkInitialized();
-
- return state?.channelStateStream.map((cs) => cs.channel?.lastMessageAt);
+ return state!.channelStateStream.map((cs) => cs.channel?.lastMessageAt);
}
/// Channel updated date.
DateTime? get updatedAt {
_checkInitialized();
-
- return state?._channelState.channel?.updatedAt;
+ return state!._channelState.channel?.updatedAt;
}
/// Channel updated date as a stream.
- Stream? get updatedAtStream {
+ Stream get updatedAtStream {
_checkInitialized();
-
- return state?.channelStateStream.map((cs) => cs.channel?.updatedAt);
+ return state!.channelStateStream.map((cs) => cs.channel?.updatedAt);
}
/// Channel deletion date.
DateTime? get deletedAt {
_checkInitialized();
-
- return state?._channelState.channel?.deletedAt;
+ return state!._channelState.channel?.deletedAt;
}
/// Channel deletion date as a stream.
- Stream? get deletedAtStream {
+ Stream get deletedAtStream {
_checkInitialized();
-
- return state?.channelStateStream.map((cs) => cs.channel?.deletedAt);
+ return state!.channelStateStream.map((cs) => cs.channel?.deletedAt);
}
/// Channel member count.
int? get memberCount {
_checkInitialized();
-
- return state?._channelState.channel?.memberCount;
+ return state!._channelState.channel?.memberCount;
}
/// Channel member count as a stream.
- Stream? get memberCountStream {
+ Stream get memberCountStream {
_checkInitialized();
-
- return state?.channelStateStream.map((cs) => cs.channel?.memberCount);
+ return state!.channelStateStream.map((cs) => cs.channel?.memberCount);
}
/// Channel id.
@@ -296,7 +288,7 @@ class Channel {
/// Channel team.
String? get team {
_checkInitialized();
- return state?._channelState.channel?.team;
+ return state!._channelState.channel?.team;
}
/// Channel extra data.
@@ -309,7 +301,7 @@ class Channel {
}
/// Channel extra data as a stream.
- Stream