From 073924d9b02ec4f6f949b86e18a70fcf1e68f9ab Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 11 Apr 2022 10:22:07 +0200 Subject: [PATCH 01/13] doc(repo): add push v2 guide --- ..._page-2fbd5bbfb70c5623bd37ff7d6c41bf4d.png | Bin 0 -> 159029 bytes ...oggle-5aeabfcbdc24cb8f1fea7d41d0e845fc.png | Bin 0 -> 110625 bytes .../guides/adding_push_notifications.mdx | 6 +- .../guides/adding_push_notifications_v2.mdx | 301 ++++++++++++++++++ 4 files changed, 306 insertions(+), 1 deletion(-) create mode 100644 docusaurus/docs/Flutter/assets/chat_overview_page-2fbd5bbfb70c5623bd37ff7d6c41bf4d.png create mode 100644 docusaurus/docs/Flutter/assets/firebase_notifications_toggle-5aeabfcbdc24cb8f1fea7d41d0e845fc.png create mode 100644 docusaurus/docs/Flutter/guides/adding_push_notifications_v2.mdx diff --git a/docusaurus/docs/Flutter/assets/chat_overview_page-2fbd5bbfb70c5623bd37ff7d6c41bf4d.png b/docusaurus/docs/Flutter/assets/chat_overview_page-2fbd5bbfb70c5623bd37ff7d6c41bf4d.png new file mode 100644 index 0000000000000000000000000000000000000000..9e92437dbfa8c3cd3d485debff0d56584f03f69c GIT binary patch literal 159029 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
C|uq8~6N~dxnOF0O)He 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 z z4Zi$m0{=qr-^2Ak6WG8O{xg9MjPt)Jut7NZFADtH`G0ra{|`~%v1iyn(KG~I*3-Ve zt`m6v@UE%hs6!i={z@bwC_rMl!=_M)3%vTkygxX1BEHNhWpjTl6Aqy%H=(t+PGaxB zed_;omtW<0d^@&{U&rCcYg z29tha1oW~mte}?X>QdCr7N#ABsE7S%~U_6wU6|NUmQ*im51Us^BXgJ_hdd-vj7S0=^N6)L567pC( zNLy=$>lm$Ey2LB`h8QG-vHk$nN&r|L$7|`bp;IPyASLd27~5zaQyt02>v6W>mtM_I z_w@3-mfs)*0_y6M1ZP#c{WC8+sce+XQANeQqZJY>;Erw(Fx;%7J|VgEn4WT=cK=zR z-19%Y1!8uhTm`MMhlggQ6eS9W8j%~nz^|M{C|1@lh-^@sp1w2SC(Ax-r-%J~;2<6u zHrpx&E6AQRaMdFuye_o9;iB~JIEJ~p_58F07gr2FW;o+RmN-3(fVpgCry*(tFD;Bp(ZWhIwU` z75F+ffv0tb)3GDHv|lb0n8Ch?*Ee+_u=zNLitQ?V@p6LKw9~LFVzRf+9iu=67N#2- zPk9-K`Y!T_Raw?Se0q(j$)&-i@q3F(Wlf?c%R5cIeNPjHhgz$0hh4c6l2IJUNtieP zvGn<=y4eq&nOk)SX#Zk`Q~`P3wT!5;ph-@?z&sbORJEMGiw8NV92n4s5=8QD-Bwi6 zf;p2iWac={XWGYBAQQ7K7#`^z(O_Lju7tB9laQ|qUpQ~6`?9!;7ioj~(=2^WZ$71H zM#>jnDL!}?QHpnTa@MAd|dg{bhJ0w9uBVQ0(mZ!T8Qv`kwb+ zY}!%Og>)Ngdgca!74SJWOsPlI>b=4g>X_L*SW-_aUC$TsOj>A_RnrI7YB#B2MIffI z=7OBZXJtq_Z~ERi%PBE4Wh4%ObW@*i*g7p}z=GDWR$wwvMh$&EVD5Qpo_ZMT7GQS+ z>f;{`#iU&9Pm`K*?9`k(RkYty=Z$ac>gL1-%gG#wL9Kx8fzC0t%+ukO+T6r;-5W*X zz{*UV!xbzGuIIcy^t^;7E%3}X(y{yUViCQU1{h=9HXcOi(*)9VMn^3hb3a5H}gd~%} zg?q>D7G*u&qxRC2R0k}%LnXIn(u+MfZ~Cdk5pxGM(qC_Orp@Vqx5@@1YX#~DI|+NH zUJecp&$o3DJ@ZdajKTn3dQ7mRo{9@$8tZm+ zOgo!E&4@LlK%2PcCr~DOith*T=jn5t*ElOb(xZ^G)cotWbN^zT(h!0{hTxMQI4ink ztwN6GU&jL5FgV-x+qKHug9e8QeX5q&M0S{Sh QXn>D~s*Xz5!Q=k_2aidZAOHXW literal 0 HcmV?d00001 diff --git a/docusaurus/docs/Flutter/assets/firebase_notifications_toggle-5aeabfcbdc24cb8f1fea7d41d0e845fc.png b/docusaurus/docs/Flutter/assets/firebase_notifications_toggle-5aeabfcbdc24cb8f1fea7d41d0e845fc.png new file mode 100644 index 0000000000000000000000000000000000000000..c5670d0dc221995088c24a1f69879aa81ecd171a GIT binary patch literal 110625 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 CAqOS^ literal 0 HcmV?d00001 diff --git a/docusaurus/docs/Flutter/guides/adding_push_notifications.mdx b/docusaurus/docs/Flutter/guides/adding_push_notifications.mdx index c90f6814..328ba546 100644 --- a/docusaurus/docs/Flutter/guides/adding_push_notifications.mdx +++ b/docusaurus/docs/Flutter/guides/adding_push_notifications.mdx @@ -1,11 +1,15 @@ --- id: adding_push_notifications sidebar_position: 1 -title: Adding Push Notifications +title: Adding Push Notifications (V1 legacy) --- Adding Push Notifications To Your Application +:::note +Version 1 (legacy) of push notifications won't be removed immediately but there won't be any new features. That's why new applications are highly recommended to use version 2 from the beginning to leverage upcoming new features. +::: + ### Introduction Push notifications are a core part of the experience for a messaging app. Users often need to be notified diff --git a/docusaurus/docs/Flutter/guides/adding_push_notifications_v2.mdx b/docusaurus/docs/Flutter/guides/adding_push_notifications_v2.mdx new file mode 100644 index 00000000..fd5d2d59 --- /dev/null +++ b/docusaurus/docs/Flutter/guides/adding_push_notifications_v2.mdx @@ -0,0 +1,301 @@ +--- +id: adding_push_notifications_v2 +sidebar_position: 1 +title: Adding Push Notifications (V2) +--- + +Adding Push Notifications To Your Application + +### Introduction + +Push notifications are a core part of the experience for a messaging app. Users often need to be notified +of new messages and old notifications sometimes need to be updated silently. + +This guide details how to add push notifications to your app. + +You can read more about Stream’s [push delivery logic](https://getstream.io/chat/docs/flutter-dart/push_introduction/?language=dart#push-delivery-rules). + +### Setup FCM + +To integrate push notifications in your Flutter app, you need to use the package [firebase_messaging](https://pub.dev/packages/firebase_messaging). + + +Follow the [Firebase documentation](https://firebase.flutter.dev/docs/messaging/overview/) to set up the plugin for Android and iOS. + + +Once that's done, FCM should be able to send push notifications to your devices. + +### Integration With Stream + +#### Step 1 - Get the Firebase Credentials + +These credentials are the [private key file](https://firebase.google.com/docs/admin/setup#:~:text=To%20generate%20a%20private%20key%20file%20for%20your%20service%20account%3A) for your service account, in firebase console. + +To generate a private key file for your service account, in the Firebase console: + +- Open Settings > Service Accounts. + +- Click **Generate New Private Key**, then confirm by clicking **Generate Key**. + +- Securely store the JSON file containing the key. + +This JSON file contains the credentials which needs to be uploaded to Stream’s server as explained in next step. + +#### Step 2 - Upload the Firebase Credentials to Stream + +You can upload your Firebase credentials using either the dashboard or the app settings API (available only in backend SDKs). + +##### Using the Stream Dashboard + +1. Go to the **Chat Overview** page on Stream Dashboard + +![](../assets/chat_overview_page-2fbd5bbfb70c5623bd37ff7d6c41bf4d.png) + +2. Enable **Firebase Notification** toggle on **Chat Overview** + +![](firebase_notifications_toggle-5aeabfcbdc24cb8f1fea7d41d0e845fc.png) + +3. Enter your Firebase Credentials and press "Save". + +##### Using the API + +You can also enable Firebase notifications and upload the Firebase credentials using one of our server SDKs. + +For example, using the JavaScript SDK: + +```js +const client = StreamChat.getInstance('api_key', 'api_secret'); +client.updateAppSettings({ + push_config: { + version: 'v2' + }, + firebase_config: { + credentials_json: fs.readFileSync( + './firebase-credentials.json', + 'utf-8', + ), + }); +``` +### Registering a Device With Stream Backend + +Once you configure a Firebase server key and set it up on Stream dashboard then a device that is supposed to receive push notifications needs to be registered on the Stream backend. This is usually done by listening for Firebase device token updates and passing them to the backend as follows: + +```dart +firebaseMessaging.onTokenRefresh.listen((token) { + client.addDevice(token, PushProvider.firebase); +}); +``` + +### Receiving Notifications + +Push notifications behave a bit differently depending on whether you are using iOS or Android. +See [here](https://firebase.flutter.dev/docs/messaging/usage#message-types) to understand the difference between **notification** and **data** payloads. + +#### iOS + +On iOS we send both a **notification** and a **data** payload. +This means you don't need to do anything special to get the notification to show up. However, you might want to handle the data payload to perform some logic when the user taps on the notification. + +To update the template, you can use a backend SDK. +For example, using the javascript SDK: + +```js +const client = StreamChat.getInstance(‘api_key’, ‘api_secret’); +const apn_template = `{ + "aps": { + "alert": { + "title": "New message from {{ sender.name }}", + "body": "{{ truncate message.text 2000 }}" + }, + "mutable-content": 1, + "category": "stream.chat" + }, + "stream": { + "sender": "stream.chat", + "type": "message.new", + "version": "v2", + "id": "{{ message.id }}", + "cid": "{{ channel.cid }}" + } +}`; + +client.updateAppSettings({ + firebase_config: { + apn_template, + }); +``` + +#### Android +On Android we send only a **data** payload. This gives you more flexibility and lets you decide what to do with the notification. + +For example, you can listen and generate a notification from them. + +To generate a notification when a **data-only** message is received and the app is in background: + +```dart +Future onBackgroundMessage(RemoteMessage message) async { + final chatClient = StreamChatClient(apiKey); + + chatClient.connectUser( + User(id: userId), + userToken, + connectWebSocket: false, + ); + + handleNotification(message, chatClient); +} + +void handleNotification( + RemoteMessage message, + StreamChatClient chatClient, +) async { + + final data = message.data; + + if (data['type'] == 'message.new') { + final flutterLocalNotificationsPlugin = await setupLocalNotifications(); + final messageId = data['id']; + final response = await chatClient.getMessage(messageId); + + flutterLocalNotificationsPlugin.show( + 1, + 'New message from ${response.message.user.name} in ${response.channel.name}', + response.message.text, + NotificationDetails( + android: AndroidNotificationDetails( + 'new_message', + 'New message notifications channel', + )), + ); + } +} + +FirebaseMessaging.onBackgroundMessage(onBackgroundMessage); +``` + +In the above example, you get the message details using the `getMessage` method and then you use the [flutter_local_notifications](https://pub.dev/packages/flutter_local_notifications) package to show the actual notification. + +##### Using a Template on Android + +It's still possible to add a **notification** payload to Android notifications. +You can do so by adding a template using a backend SDK. +For example, using the javascript SDK: + +```js +const client = StreamChat.getInstance(‘api_key’, ‘api_secret’); +const notification_template = ` +{ + "title": "{{ sender.name }} @ {{ channel.name }}", + "body": "{{ message.text }}", + "click_action": "OPEN_ACTIVITY_1", + "sound": "default" +}`; + +client.updateAppSettings({ + firebase_config: { + notification_template, + }); +``` + +### Possible Issues + +Make sure to read the [general push notification docs](https://getstream.io/chat/docs/flutter-dart/push_introduction/?language=dart) in order to avoid known gotchas that may make your relationship with notifications difficult 😢. + +### Testing if Push Notifications are Setup Correctly + +If you're not sure whether you've set up push notifications correctly, for example, you don't always receive them, or they don’t work reliably, then you can follow these steps to make sure your config is correct and working: +1. Clone our repo for push testing: `git clone git@github.com:GetStream/chat-push-test.git` +2. `cd flutter` +3. In that folder run `flutter pub get` +4. Input your api key and secret in `lib/main.dart` +5. Change the bundle identifier/application ID and development team/user so you can run the app on your physical device.**Do not** run on an iOS simulator, as it will not work. Testing on an Android emulator is fine. +6. Add your `google-services.json/GoogleService-Info.plist` +7. Run the app +8. Accept push notification permission (iOS only) +9. Tap on `Device ID` and copy it +11. After configuring [stream-cli](https://github.com/GetStream/stream-cli), run the following command using your user ID: +```shell +stream chat:push:test -u +``` + +You should get a test push notification 🥳 + + +### Foreground Notifications + +Sometimes you may want to show a notification when the app is in the foreground. +For example, when you're in a channel and you receive a new message from someone in another channel. + +For this scenario, you can also use the `flutter_local_notifications` package to show a notification. + +You need to listen for new events using `FirebaseMessaging.onMessage.listen()` and handle them accordingly: + +```dart +FirebaseMessaging.onMessage.listen((message) async { + handleNotification( + message, + chatClient, + ); +}); +``` + +:::note +You should also check that the channel of the message is different than the channel in the foreground. +How you do this depends on your app infrastructure and how you handle navigation. +Take a look at the [Stream Chat v1 sample app](https://github.com/GetStream/flutter-samples/blob/main/packages/stream_chat_v1/lib/home_page.dart#L11) to see how we're doing it over there. +::: + +### Saving Notification Messages to the Offline Storage (Only Android) + +When the app is closed you may want to save received messages when you receive them via a notification so that later on when you open the app they're already there. + +To do this you need to integrate the package [stream_chat_persistence](https://pub.dev/packages/stream_chat_persistence) in our app that exports a persistence client, see [here](https://pub.dev/packages/stream_chat_persistence#usage) how to set it up. + +Then calling `FirebaseMessaging.onBackgroundMessage(...)` you need to use a TOP-LEVEL or STATIC function to handle background messages; here is an example: + +```dart +Future onBackgroundMessage(RemoteMessage message) async { + final chatClient = StreamChatClient(apiKey); + final persistenceClient = StreamChatPersistenceClient(); + + await persistenceClient.connect(userId); + + chatClient.connectUser( + User(id: userId), + userToken, + connectWebSocket: false, + ); + + handleNotification(message, chatClient); +} + +void handleNotification( + RemoteMessage message, + StreamChatClient chatClient, +) async { + final data = message.data; + if (data['type'] == 'message.new') { + final flutterLocalNotificationsPlugin = await setupLocalNotifications(); + final messageId = data['id']; + final cid = data['cid']; + final response = await chatClient.getMessage(messageId); + await persistenceClient.updateMessages(cid, [response.message]); + + persistenceClient.disconnect(); + + flutterLocalNotificationsPlugin.show( + 1, + 'New message from ${response.message.user.name} in ${response.channel.name}', + response.message.text, + NotificationDetails( + android: AndroidNotificationDetails( + 'new_message', + 'New message notifications channel', + )), + ); + } +} + +FirebaseMessaging.onBackgroundMessage(onBackgroundMessage); +``` + From 9c32e6b9bc94d23840f0194b79806c16f851c10b Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 11 Apr 2022 10:33:23 +0200 Subject: [PATCH 02/13] fix documentation --- docusaurus/docs/Flutter/guides/adding_push_notifications_v2.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docusaurus/docs/Flutter/guides/adding_push_notifications_v2.mdx b/docusaurus/docs/Flutter/guides/adding_push_notifications_v2.mdx index fd5d2d59..285c2205 100644 --- a/docusaurus/docs/Flutter/guides/adding_push_notifications_v2.mdx +++ b/docusaurus/docs/Flutter/guides/adding_push_notifications_v2.mdx @@ -53,7 +53,7 @@ You can upload your Firebase credentials using either the dashboard or the app s 2. Enable **Firebase Notification** toggle on **Chat Overview** -![](firebase_notifications_toggle-5aeabfcbdc24cb8f1fea7d41d0e845fc.png) +![](../assets/firebase_notifications_toggle-5aeabfcbdc24cb8f1fea7d41d0e845fc.png) 3. Enter your Firebase Credentials and press "Save". From cf45a076d15cf46815a683bea23bfc9d3d367976 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 9 May 2022 12:55:59 +0200 Subject: [PATCH 03/13] fix(doc): userListController doc --- .../stream_chat_flutter_core/stream_user_list_controller.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_user_list_controller.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_user_list_controller.mdx index 0bee29ed..dc701e31 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_user_list_controller.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_user_list_controller.mdx @@ -52,7 +52,7 @@ You can use a [`PagedValueListenableBuilder`](./paged_value_listenable_builder.m ```dart @override Widget build(BuildContext context) => Scaffold( - body: PagedValueListenableBuilder( + body: PagedValueListenableBuilder( valueListenable: userListController, builder: (context, value, child) { return value.when( From 3571c24c3d7f7a1793acf92cf53ca4a3e45de305 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Thu, 12 May 2022 08:22:46 +0200 Subject: [PATCH 04/13] chore(repo): update flutter --- .github/workflows/dart_code_metrics.yaml | 2 +- .github/workflows/stream_flutter_workflow.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dart_code_metrics.yaml b/.github/workflows/dart_code_metrics.yaml index 12c3a3d4..a4296e8b 100644 --- a/.github/workflows/dart_code_metrics.yaml +++ b/.github/workflows/dart_code_metrics.yaml @@ -1,7 +1,7 @@ name: Dart Code Metrics env: - flutter_version: "2.10.5" + flutter_version: "3.0.0" folders: "lib, test" melos_version: "2.1.0" diff --git a/.github/workflows/stream_flutter_workflow.yml b/.github/workflows/stream_flutter_workflow.yml index 1b2263ce..81039fd1 100644 --- a/.github/workflows/stream_flutter_workflow.yml +++ b/.github/workflows/stream_flutter_workflow.yml @@ -2,7 +2,7 @@ name: stream_flutter_workflow env: ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' - flutter_version: "2.10.5" + flutter_version: "3.0.0" melos_version: "2.1.0" on: From 1ccd879a2f149f68fcfc9792ba5934b50a7917cd Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 20 May 2022 15:07:05 +0200 Subject: [PATCH 05/13] chore(repo): remove previous no response config --- .github/no-response.yml | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 .github/no-response.yml diff --git a/.github/no-response.yml b/.github/no-response.yml deleted file mode 100644 index e834903c..00000000 --- a/.github/no-response.yml +++ /dev/null @@ -1,15 +0,0 @@ -# Configuration for probot-no-response - https://github.com/probot/no-response - -# Number of days of inactivity before an issue is closed for lack of response. -daysUntilClose: 7 - -# Label requiring a response. -responseRequiredLabel: "waiting for customer response" - -# Comment to post when closing an Issue for lack of response. Set to `false` to disable -closeComment: > - Without additional information, we are unfortunately not sure how to - resolve this issue. We are therefore reluctantly going to close this - bug for now. Please don't hesitate to comment on the bug if you have - any more information for us; we will reopen it right away! - Thanks for your contribution. \ No newline at end of file From f34fe2be295f10c573b6599728866b6c4dc5aa48 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 20 May 2022 15:06:50 +0200 Subject: [PATCH 06/13] chore(repo): add no-response action --- .github/workflows/no-response.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/workflows/no-response.yml diff --git a/.github/workflows/no-response.yml b/.github/workflows/no-response.yml new file mode 100644 index 00000000..21af2831 --- /dev/null +++ b/.github/workflows/no-response.yml @@ -0,0 +1,27 @@ +name: No Response + +# Both `issue_comment` and `scheduled` event types are required for this Action +# to work properly. +on: + issue_comment: + types: [created] + schedule: + # Schedule for five minutes after the hour, every hour + - cron: '5 * * * *' + +jobs: + noResponse: + runs-on: ubuntu-latest + steps: + - uses: lee-dohm/no-response@v0.5.0 + with: + token: ${{ github.token }} + daysUntilClose: 7 + closeComment: > + Without additional information, we are unfortunately not sure how to + resolve this issue. We are therefore reluctantly going to close this + bug for now. Please don't hesitate to comment on the bug if you have + any more information for us; we will reopen it right away! + Thanks for your contribution. + responseRequiredLabel: "waiting for customer response" + \ No newline at end of file From f2291e6d099db3b52d9f1324c59130305693d18a Mon Sep 17 00:00:00 2001 From: Gordon Hayes Date: Wed, 1 Jun 2022 16:37:40 +0200 Subject: [PATCH 07/13] docs: update firebase token generation guide --- .../firebase_cloud_secrets_management.jpg | Bin 0 -> 48320 bytes .../firebase_stream_chat_extension_usage.jpg | Bin 0 -> 83742 bytes ...install_stream_chat_firebase_extension.jpg | Bin 0 -> 40472 bytes .../assets/stream_chat_app_access_keys.jpg | Bin 0 -> 8919 bytes ...tream_firebase_extension_configuration.jpg | Bin 0 -> 49231 bytes ...er_token_generation_with_firebase_auth.mdx | 543 +++++++++--------- 6 files changed, 262 insertions(+), 281 deletions(-) create mode 100644 docusaurus/docs/Flutter/assets/firebase_cloud_secrets_management.jpg create mode 100644 docusaurus/docs/Flutter/assets/firebase_stream_chat_extension_usage.jpg create mode 100644 docusaurus/docs/Flutter/assets/install_stream_chat_firebase_extension.jpg create mode 100644 docusaurus/docs/Flutter/assets/stream_chat_app_access_keys.jpg create mode 100644 docusaurus/docs/Flutter/assets/stream_firebase_extension_configuration.jpg diff --git a/docusaurus/docs/Flutter/assets/firebase_cloud_secrets_management.jpg b/docusaurus/docs/Flutter/assets/firebase_cloud_secrets_management.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4f131df4ccd1ae63a03cbb50c9dd2359114754f1 GIT binary patch literal 48320 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 ZgyTvXZWOTJ&9NERBm($wW&U^Re*p-8Flqn* literal 0 HcmV?d00001 diff --git a/docusaurus/docs/Flutter/assets/firebase_stream_chat_extension_usage.jpg b/docusaurus/docs/Flutter/assets/firebase_stream_chat_extension_usage.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7374a67f8a225c7811d98dfebd23d214b996f84a GIT binary patch literal 83742 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%0AaOYoXwIibKm5|l*g+Lv1a2{$X^#| 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 z

fp6#-g~=C~=m#dD2(8(43|Rys#UmMwOGVN?X^-+~W^pSWG$21cb2lNByX|<62+6)|LY4Az@~K%|H*w99>S( zsbS?X{ej(LZ|JZZwm$}Hemsd-gcjBXX*`morO8r8zIG5- z4Ww8C(6$u)IqR;GS}fL0`xo@VWyd&xNaFgoND~qlRip1QFr+rzV8l~cYPw>U0ReY* zK}Tad;X{ovb$(&!g!6l9MaoW?mkMJYys>~#Km&8k#EnJmWt(&i{L-j*73TO&a`rO>@rjS>*+Icz5 zgHJEkvtKs+uR`(gQkn;zUSwrsG`x3nr_Dw<@NeC${tfsCy7yNz08-e6i-?G<2t3&t zim0d(opSZzkaNu_Dq>;Fn7A+JCg4f*EBJ_)-)ha#8un2XbW>wS&v|YrjbQS;nO8tD zmuAOwNH0&<8s*c=Z%d=8MVXPNpNDWM`M6Ax*<5c)d90~)t88FJUC{8v+nU`Y+gg<) zi8oj*HQ^JI*oX}srd^1`{ou7IAk9BwfBUkmqGq|<^)W<|Z+{*;TudR8f_p_n60?A7 ztBM3s7do)MI?NWXwkSX@49G4T{82kq8SxU3u@AWVkrD@ZfDe!$^M;+XTG-_IZ2^|FJX} ziaJR=1Y}P9zmthRHcDZ@)yoNN7&}}3)uSo8_TU0{~AqUCK-iKAVR9;83 zGED}Ns+1Z&#oLey^Wq%j7(TB>j$=U(gSMw8o`^C+XTYBTwC4LbF-8<(b% ztM}IOK`b4<`ndWoX?B9J^AmINxQf;+YSXlY{CxLQ#M=gBez&>`&3mhl8p~D45oOiY z<{EP|Sn26sni4@UYgw|&>Ue|u4a!#V=0U2IdTaa@vZIGH3D$XX-MN19x?ZJ?Smc5T z41F#%k|WRIlFm;5k{X}Vc@71{>RIZQ*SDTpNX;$X;Z}Hp zg`F1n?)eOH>5@%_=M{W=xrm-O?>gbw78aE?jzi;vEpM7%@3!TIdwxw;!Q&%BTDhH>7Msrk`#;u z1GQ)Z+D3-T<`!6MKqOj6>Dmd=GRyN#4tvZx#uiW9?y*K(E@r73z9D|I^Mbxjrwy}> z>{p9AYsiekmgMzjqSZmq-?91n6*QiigkI$%%FV%Gy@42+Nw+d7808Ccq170{wrzT* z`cb%Kc-GTXM#2$a79^rItwv*Mg<0m!%_4SG=kJa_8(zI@V6tQBiJ?AJrEbX$D~RQz zrrJ{y9!Jb0W%+rzDxpACT|{yi?}@zR1Wrh_dgk7(T*lI2PHLK%&X|g|2tXnekmPBV zoO+%Bdttn!p4dl%hE^J7zxU}g;`NJ%pc7KT9hBP0_G;oxHLNp4)u|O{Q+>HXY8^T- z(92h_HD)@I!mbMb>3F46@CMpH#$mNHpax)g#45oUjbO0rq);jJ2hrG7iJQ-p-sL)* z-UzWtU7C$$Fxa%#?~fgUe_*gXNZQKxwg)W00-w^{MJpC0c zIs$^U2K=3g@1ANHiLo@IQTj2}HbJ?sg`mm-?g*TYQoWkyJ3tP=clqr(0y8^r+2eFU;@1cMp_D?@NDnHLt?`_{pb} zh>PNN0!E1vYC⪙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 literal 0 HcmV?d00001 diff --git a/docusaurus/docs/Flutter/assets/stream_chat_app_access_keys.jpg b/docusaurus/docs/Flutter/assets/stream_chat_app_access_keys.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1a869cc810ac318dfc60d3596349ab47805ec4b6 GIT binary patch literal 8919 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�N96=nx*m5rTXJOF!R~>4^5(G)Ki`tp1PL`lBPE3Y1=yTx(5WEzZ?K=wJ`G7*M7P@yaGf&7^f!4c5M2V($;)kI( zk+Aso3n?^{1@W}F<0kAT*_7wQGo_swndPRhzz4&I$ z8IRJ;?<5WJI8t0s;Q=`Ov5L6GZui6A=ePf%67+Yr_n0gTTM1vsZ$-R<#-6|&u66m- z)I$kV#w1Kx3Ar+(CO0PfSGTy=*x|=LA*De0~_pc)X5qS=f+;0MuQSP zf(R7DXd5sIWA&!6u7G@3w68|96uJPV8gjQ=QrCNq04i7NM1dv|Ml=hDt;HF4JyBUE zm$BHgUYT+5@g5sf?=^=%b*7?DV=Ih{vL$Zvm%#J>#aKS92#9P~_eMWU;FR8=Pty(m zSfl!i;kV0ampn&G24yj-^L!jM5h`KktPXzPSVgeG*%Uy7P^EF4%PiIEg?kF1C6pqz zy_!GO5qw6q!57Fkd%R*ALlXL4g49YLB%)k$Vj}qfVD5U@$X^6>9S0E1Ptqrq;4p2= zJm0o?V_pJwG+2+0@;7^WfYme-GazNf9Yf(<@9o1e_;Ua`1n`|vp2x&wp!G-yKu?;yu>p{g6PLdy-7SMq)@o@L95vhL+z+KLU~GMn(Bft zA!vY(+bGgcneI)@OQya6)!<|mO&Ya=^JxG1%BU}pG10mpa4$FNJer@xoUqJ(6?_#J zKOtEoS=4_vhDa8sG#6Or-mr)vhfJ%xCB%a#daoVVgDVepTN4Y6&x^J!=XLocIwzK= zK*{Y})2Utl=EoVOZ@(y#2b0RCn-??g^GunL6bYxXfQSe|gdd+yAuGAR*f>Y)L08%< zXaoP7JOK7sk3||c6aYa0FftMn7~xNe_U8}(W0eNMLBz(ThN-zwiEEf7=Hqcos0O}8 zqTwEh8qc&AyB@j zH`?QZ;J0`eTq1_sq4&YT(u?-nIK+kIYr@pUoA+BynELS~k-~)gYPb2<$m;EpYn!>0 zFbmEkHUT-Cn)li$%YGcJ2nAKf=s!mn8lbGSp42nk;X|t$vRot|;?Tn^M)@ z>~?Sq!ORWlT4*YgGoE8bUL7cNGZUG2i!!`r)tf8mvLt3Yc41#c(Nlp8LE^umE+7fn zwztY{$C(gL2<8m$u}lXwcs9{qN}fI`l8k?>?9mP6~jSigRiA)1YODi0vj76SRdk2oZ*}CClK6CCQ#Vk#ZAOkwY;{j5hiaABS zKB1JxXSP{#J+@?0G4XOpTF4E-)ld1j9srqgKiZO0=4)h)g&SFoP1QX-J*=16Uvd3r zJg<~4b-%CiEm=E-ta$uUO=f#Eg5dr{vuUzhZDm^JdUdbv-Yr*`im_;xKzzga_kUMj zwZ9G$m9ACVZy)@VUbe^dB7hK)kp7i0H!S^V1Q>-Qt{I2MC_$oV-`D4xkY&UxJ1xltJWa#3)E4Nhy=R? z$!Y2N<0J8+ESqdGXjvz?@z)4P%2ef@;3J2B5|$QUXTgGs$ppNxw%^E+ChGebAf{gQ bf>{H8Qsqd5wR)wRFA<7{$8^*8F#kUQ2Ub&s literal 0 HcmV?d00001 diff --git a/docusaurus/docs/Flutter/assets/stream_firebase_extension_configuration.jpg b/docusaurus/docs/Flutter/assets/stream_firebase_extension_configuration.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0c2129319c89b623c6fab0ffd6ab943c4712b1bf GIT binary patch literal 49231 zcmd421yo#5wlCbcyK8VKxJw|oySux)y9SpgKyY_=f=h6h#@&K@LP#E&`P2>z5-&U$m)!ALA__6$B3xFyuE+q~C0|NlSUQWP|RX`{J>hA|MG!!f>3@j`H zJRBT60vaOH%ZY}Mih=s_!N(!M#=<7Rp(PzI{48C zK!b&Fg@}g$BL#q?fkB{w{TKjnyd($?0roT3-w#MAFbHUH7}yu=r{s6|g+f4rfkQ#V z{8#}XLc9o3Ay8ky=g_}s{DS4#ct;MK6m!$Yi_XYK1jFhkYl@F}4&Wi~;ATnqg?`x~ za@;aX)SN=mojjUgq!VJvGm7jtpZA#tRW5Z0!)It`S6-{1$H$ki2Qr2n?Agcd9c&Gp zhiCa(?>RpGt3TDt2oGDBLF1|7_|&ubs==i|1T zz}j?tbFT^qoqd0cWbSM!gP8D3#FtVu+g3(Hw* zo|E+95y*6q{965g9fg<_`gP3V+@CnUlz-1p`me_ThUZUEj3K0Vi!=RSm)iLur(w)4GzxZL;A{8-O$C zc5_r$hd}zZebprO(U88!aQX9H^Qyk|D$$+YJI{@ley#QnJL{)$(*h%H>7ORBVQI-4 zdsAkEd*A%1$Nk>iE{%QE)$-SE?Uh%!^(z{uTx0YeXuP%mYzp>UKNSJttBN8Q6m{(XS>tE>53Pg&aF_zl zp{-vj!OtrGgvA&F4NV~f#J5Wv7j4m)WoPY?#Mi}VDl8Xm0Z8VY3DkH1d=Idgz z$)!hu>PdkwDT33Q0syEZK_TQ2B!IuqV7P3hpah7Q=HCyj!rY%sv=#sWA5Q@XQ{nQr z8~g9V->*ipb!AOtFtD>{=N3^qQB6;g!~Ko2m5>1?tRSt1N#TYxDoiX4c`5) zGh+_`@B$)Wko;8m-#@@^> z5-Kw0;1O(1V3%UyFHDfW6eTuGHc4p?g$sQ@V(@cPD?)Uwt)mVl20Dh;1bti`XEpc_JjzH@!ZS8R1{VBX8&FCB*#j1zbd>mUp>(}}y)OFL{^5d`@@{WCkJDt9?b{k*FI{n*&g1Tx zi`GBv|6pFF3P=zK{{Spqy-{28EdV`kSl(L4C@foFTTrb-PnbWOb7r*QezrYI5WF7i)l4mfU!P~bMpT`aSI@%jL@3=SAi$27!PTCEUeWYmyYAooJ zegK^2uZL`8UYWVh+6B4)+Vr=Re^1e-EH`r;_rkkqbU1Z;I%*uVn%1?x9m{g%u5dZ=FHCYMe79XHH+!r_5P%= zqP)8vA>(g{c*?((T-wd+xeTsLF=_3Bkd-dH2q5bWDCR=^gHL{S=OVt8EdYQQTf(2- z{u3OSs*4x(Bef_Cb9s_1m3yTtIc8MGJkd+RsKEm`fa z@N6`3&t|xJy+LW>2kcm?D4v}%o4U|et9Gg`z{?B~CvZD%>-i_c-!@cXepY*z*e|!q`^FKMDwF&6npe#E`m&?{g4cmHqV&?Co>MAq5qGSaoJLg@Atf-SHP??#~GibS{4Zm>sjiKDjH; zWiW-XjI~l#4H!^sBce#GvKY)>t9TiKixs>5S70| zJno9!_kQM=5AAk34836Ng`OoCz6`>J};ZS18#v)3W?>-Z?q?v~$3Z+`$t zlSyL&0sTZcrzkK-Q`9TJRtKn$l#DceJ*Q0oK#RjTta)XZN%#C4)qe*=3;jFE3l8&h z$qp3&1_=&;goJ{CgaEuO!~tHG+1 zFH3em*Ym(&0T0uwa#A{s;Y~OLySipr!kBd!|I85ZseYM8a>qi;kb*8h)RgN=YNE9}zW73!%*@y4Uqbbccq33*Y3$^PDRvBHp z4MYwBr3P#<<_n)!0ZUIm0Hq4sUJ7p_Jou11a(f+W!+eJL+M7>Fb)00|xK%q+<%$=E z(2mU3$X6bLhThewRuVO1gDmz#_zx;8k$m<$j^>MYgld~)*}H0sk0EAOYHe^9B27*q z?zzMp$q{_MtJMui>H4Dzu?rPe75hy5CADr}(rE2;Tnx|x@}sKnHl3U=1>$2n6+Y*E zNboEf2H$RO*mn7B&ZWKM=04`vi_@b&*EZ4WSpQv*^U70L@Pi5mhUO0dFyN|*HMRO~ z$;BOgSejO;C2$p1Eyc~7_8W@H@&@(YXWM{EUtQ3WK{ZS9lvgPz6I=2RTcRppJ z)om=7#ftC_HH!H(_R#r#;Eel3?K?qw4SmhwuFDETDq!FhS2e~&p}M-JqoQ`H#PY+* zmC+VdQcwq34dT73Xj4V`HVU#)_rmy6-X=#Rw^7Lw@0iPO>+4z1WSRbTPdydaCFr`3 zY0;}A{P;HM{fu(eTROxO#?M5jgS8EZS8e@OC!96gI^Kw{;| zU4^7kqz-!Wa}Z@BZZU$N2F7Eq!X_+_B8aY`ZF47WHfjtRBR)1W?{SFw>g1|4Lq%f1 z)FFyMM_5LoCDLsMrXY7oagIKc)p}u^86mA{Wz`|FH=m_)*1jSn3gVjpT6?Z;B=ST4HmDpa65zank+UK^gW0hzblL~M>Qcn|E9nnGal zpss`&0q^ANh0MYlDMx5b@dOLMU=j9mC<~cUhvCQopy&8`&r}18Dx~O|qHJbcIus19 zGs;(f04z&7lQ*O;C|)`g)45FzZ${8nAq(SB^vfU2oS^Ge7TcjLXpZwwW+IEt;!osH zgj=FDjqdu>o zz4uAThMkT^2Ma687EzwWPCetJ<0~p0i$eAcw5?%BuT^Z=7YFVU2`vBCt$X*eO zh-mzn@;3t2-^wMeVQRWoJnXcy`*b`#CY&9s5p*W07u09k$GHoo@}pJ1c~zshee6*h z^V5TzMWErM*$Z`|cw=5}B5@)YSJn59kF*on8BATQZebLZYI8wfS#l~;cbcdg<~lRd zU4!(D(OdU+$6<#|E>J_5ydeBJVMrOz%x86Jak71O*r)_-Ot8(+FN-8}8MG{?!zlV* z>~!Xp8G-tJTd}7a{(WhgwQ>Bx-46h*jGJ6=6Evq+W`K5G+Z5;b=I+75Yg@NO0WFHO z)ES)ZY^|la^-LX2`F6@_~##aGdc$|in}7Swf;Iiu-|Uhtr4;r!J>X~1hx;ButmK?z1g zCX^m5B7A>D*s9`1Qz%tfZ9DMTuzGv{mW@08jGfOUWIfM(wI1eT6LvQ&ge?+v?1286d)_fCs5 z*^QINOz`1ODUXn~!l2x!ee!yjh_p09rZP)W=p$vD4kbDBIC(uyK&iWs1e$*Q!cb_7 zzt&%G!M5E0w;pACvhs)jFo!@iT9w3dnxCqJ`2zrF5$aBVkYr_>Juhh@PUfTP@bE19 z6*|CdZq2uy;Njt7DYW!Zl{v)e*Udmun(Hw-s>k>L3UKuIttXI18_7nN(v8;5D7 zw_yk+G|u9z*ppm+;4rVT$KUkU4;-6?bweP-cX3J^E@B-}SPM$h<^0$g->>v}uk2#m$SaQMZWSR}4!0gA3h~(^6w%jLF0Rw3_%v1%4J>K zND4GAzHNn;G!2U!)ifnZ>uGV3ck3MgXv_kH5-~S1T!^IeS{Sq59TOb-ByypJ>4QM9 z4f9q3FBIrlrFiL1=AVWxR%kaqy&R9SDOgn|n`GG27Tzi~z&tG%^er#>*!e&MDQC@riPA{gs88 zV-o&5QPthGPmbo}7>rd1;WJ9*4~tPofQBR)n~JCX<#qv86IF6Jrd;tMnH>_vDSR!` z?JsP?j=OIug9@k`zcg|<#DL6E&1}^3KJ*iAW-eyv zr&n(z|M<2`6;W|7*O>;r=$s8ADE7w$zje`%`2PT)JRM#=H{2gi;UwK0=6rcMAEvgS zehOAIssmPP`oGWkziAN+K&da^aaL$1BlD}rH6n`s6kz)J18~v*{mbFm)8T2^NPq(W zb6fd0jC*;hCl|HHfR$?hkt+od8k!f=@cqy)SCOQ=UKfSw?9n-ZFBH8UX=F0U=a<2>;_&w=?yI{{=W>{4 zetr@yOa$3nSSam4oPZMng7%K(CewIosv(*-a{*I>*bjimOR4fw$2@udZHPm0=<}B* zNRMpCsr%SX+Tb3xa%hMjzSKJTTYIK)3HI-Nk6I@G-@lx#9@=m6xqn%0nOyI3uexb+ z$g1!?(>b)>bM^0cb`&z+^dW($iITcIr z`<6mk`xQKqy;=>-{PR@D+5~;1;%QQm7ia*q9h{viRk3Vig|cc_wzDHVE9gYJ%q47I z(XCk3vbdx*EKl=6gs_gBhvotA++tx!#;Q7fKoL)scz!kgHp*f_x3g7cGQ^>t0+}dC zp6bfd&5z&FhU*>&%C=Y2j_*o);Qr#ndYY-*(1?LD)uEBEnk?@Hk{_g_2t2$Fmrryv!wY`g~<`qVN7L+gk-SiU?me{B7V+tkrBb{#hp>{caes=F=(bL$fV3gN-4#ih{XF$X!)HV zi>0>^Na5R)5MkHDsLrawR564*lK-ViyXP8RC;Gi{uoaOZg0x{A)o3RzS!B+8Kp3}d z@J4BAArR`NJe~ZKW1~5RG{1^Us1vMUR5DNEG!`xicl#uJ{=n=sjE=iSz$lh*(m_fN z?9xIG3^fC*>l@lVk)_wqZq4VIl}An7XMKOOEbIJEQbY!}%{;%(7D;$E_fc8}ml2J* za>`2xn5RmCQqX+r#^Uy6aY!piP0J9?-ZieG&da4vMW3r*1Y1VNP9VfQc~3n#7SW|w zf?d5P>%55ACuxd;*I7c4>=kjPsbTJjfZO>%v#9WYE5lZQ1HhZ8WK_YhR(fdntac>`vqB)l;fq z`452p8|RXRWBEdlK{Soi(z1tV-Bc$fm5ULTRk%AYeNvIC(Wb4hIc*O<=|xWPL`kYO zeB7D*%qp{G96m^Pq)&ED{JN675|b2s&_@gl9w%7MUspbJ9}i+gngA&*D2aCk#=o|X zbWJgAtK0PJt|y!Ir616J6pFCRi&rjMl`fpSbp+K+X!YO|)N~8p&O;Ic2*0m__TEj&{#(f-m=c-;0A(RSbHKP=sm~5g%!uthn=* z+=DeQQdy>`KV9Ss4vT#72oz=b-MhgPv^;kXEf5T3DvG;c+?w+254rX+yRzy=j_ zSLo5`xNrtjS1rC?tqt;XZTxmGd4AoX*jSuZ5MosX(!qcXL50tZ*ZtCe*dDh$__#)FgQ z3*PW?v|IGv!X-QAkVUmIQ;Lkv zDLi^h<8gQlZW|4Bx@?P;8`;pfTZHat7=;p)I9^0qWu3N_P!;|`X*^4PoGOngNv1q9 zKU|BlsWR-6^<|Og7vrBHyI?@zG+|7oPdQn)zk0YJj zE5hBJhdnaX5V#8uuARK-MvJFr1*VikK*N|@nF3pRvQtl2b)z+#MLoV#<0d=l`Z-F@ z^sC3Bpm+a1fE5`yDgXTziKx%tyh)? zLN$*K6n(+ku1js#2CLN8ovK$Pvsv?+oWEv6Ar<-^6Xx?E~}=0Dq3cS+eKnvGlKWWt|4m z6!*lR?6(9vF49sqdF`alsxv6d9_nSpWNHDb4h=XF`4JUojcBjRh=I1vMGbT5*6qn7 zC5uL-9Uw+6rz*{~S_mIi;z%`3?VY8ua!?!Hq}7VoJplZ8RjiKDcHGZD#}v@w@J?rO zzliSWx+U<8%=|${POmCg1H0Lw_+^w@pPw<$4icNlIQG~fbOkcQ<5?ew^iTL$x$k7F4yMD{c4w4b%fN=otv~` z-4H^r#=Fu;_vCfkKbzf(`fi?4%fiu&`4$c;Zor;PwizB+T;3@M-s!FyOQW4ykMp*9 zVs<5CUyST$->7&m!Y1%9ui zM01l)%og$<8JzSr30>b27KB;#>vr-(;6^!KI%I4e*kCJXzmuv+p{^eS?z*MIAhGaj0ET|<)VV9I7SB2 z$g_h}-YHW|RUk$Qy?WogV22k*e@0L4dFrhRDEvgndQhxMnH7@6<5=(XF(yYbX!tcA z3H96=TgO`OFrlPLplu_*^Hv=9lCA)%mLqTe=Y3b^uF%C^<;v;`U~3+bjbk>70+de4 zSU@hh6&%?5Sq5uBMJv^c@VW;KIAP`;D=j03IKmkGVRB4a&vL2I??C+(Ix4+XF70Xc z5iD&8ca!+^hovEVM%sFCIh~1$`Z`nPF-EvkVs<#|DH;85&NlZdivtj663hvDs77-u zQ1r5ciL_Y;c*?bT;hxo<$Xby}_pDK6rxVZOZCgCoTrIB?|_hhtE~NRy=z? z|1tV+OO*Lu9^JowDsK}`k4GPM!JKM8D+NOsef>h`Ye3<|GAngP@ioA1zinqR z3%bHoc41!@D-cTLVUn)xCZtTI^P`W_bTpfJMHT3QIeG@}<15#Vq+GouGa2iU$K%>@ zwexkm201y2!V8Uufy--pXa~O781`u}uK~SMdYh9vJNKfh8QGO3^>z0SouKlPg$JSz zH@QH`axR%?kBAREChG%wbu>n)@hcBoIFTGQ?uUl-UtWH+{L%csX2E9RlZ=C^ato@R( zkYUCs5Z-BsiAiP?C=HuErBEugn}(QxaeSY)er~uMN5Rs=)jGE!^$3m6jQS86eTtWb zKyYd0*a`v{ZAX&+pzcde24-?TIf8bP9(Bpw8WcxM`KZ7T-cNDUEZ#0fD99FmBpe zPiR$iaZdOx>Bd5JG1N+C*t5YJAe=QNs}rRXoDsB|j29{>qmV;cG9W4{s$fFBMaOetYPCE$;cZ|qkK#Fee+&ySmcgt|1hkZk_W}W92 zvj3P&Q5(;nu%Hd)p-q%vkn;+(`Ke@!?J3;+NTrWSIP*1v%E*pl!DozY9v@0Gn<4y@ zCl~t#<0pE*BDzgQFq{_N7@R<1qzuOl8$5g{M_nZlio}$z`=N5Ch|aOE!r)W2pZqTN1}tZd4H=R^=n(d*w6q`HaHz7htSD%AVOd#uRg%4#b6(YBMhvS%6e(GP zkGimsMjYl%Fif+qCvr=*y2vuPV*h&sxYrPskqBonUbpP(MethJ$o#YM?1_l%q37ny~=2GV5L*AbENWqP?;ICEHkralVx{Ee>XTpV%{ALA1};xr)_Noj z9im_=Ne4L0g7emGZAWw+jAkTZ&k5h@hL~4uy1eZPlQau zFrc`XqA#u>g^rD-AX8c-YPE@#+=y0$5!Ced*OjJ|z)UTaWuF=1{*Kze$aIKtxq$Ym zv^(^m=}f&FWcBlPqCeEkn1K%egkR^el6I2s&|plW@y9kZfh>`t`W55K^vfxz9eG*s zq9D=!0Qd>P5pEGV7T_T$tR~w9uC1Yl_rwZ*WdOfV$@yFc)&g$kosDU+a?kwATF{~b zi;u3!5}aY*Jy+qY*}AgG`z`Qw1K4@f5Ptt*U~?6uDaEsYr8} zCR$Qyo#@sEw1j%Gb}F84>>?YQI7UjCMjPmoO{d6ub(5h!tyL^%MFmki1@cRj~|gZ-w*U zdYZwpr#LDg#khPcieXhYV(lK314HY7OLGo(zg|vhySw+h5{v&G67>=&!`=H|$$y;$ z6WVQa30FTmML*_c07*`e52nhwHw4vQ`UqQ+1;wP)hh!cqXW9Q)Q;N`en8Mj{AB}xf zz2s$b$9Z+If^&^ zyE4wszRZ2>EW$7^-AO3b#`{i*zt&g4W3WicLQH8;IVD5h>cn2k-NS4N`4= zX{fTZF)UPL!jzl?Wd)UM{HkdrvxQGHp0cG{T=zMpGshEuVh`IUr5)HPkUQbDE`NL5%z z6M+QPy~t>rR|Zu4}Ivg#NKUUs=UEsuL+D_^6|} zxL}7OU6XNAE*vQ_gBzpGh!H)eT{NforaAS`T@{ZQa=4ch?A7fxmVoS-j%pvQ&7uLJ zksYGBWihb4uuGukRDHUjtGtE@VU}<9lcdft=|l)ZJR*wwqIq5NT8A9?iXR zT^8Zmg+w-Ehry&~iShY_NYVt$qGu}KK{18y+T=@4*l`*sFf@^7n;j@yYl>)2 zg-qttEMeF1P%l9uxXYQMGCJo41tdi#J3kw!x+U0zlk@W)7AKPEJjrRQvR7k;OTE`Y z3NdLEJhZM}lRTR@j1`C2>GekB{r2q<2SXoj!_NjtwQHg&-CYrFS6CVFy= zVFSzyn66KJuT&tm>Xy9*K%dIA!{PDbI$Z}sNtvTe0Bm6D4#ubo!8CT{R?J}Fd9_Ub7K=l zPT9X90sGd&r{`6__&7{4*?rkR>*oL1a+ucq?fQN*TYvRtY}McEKP!6j_X>E4b@pZd zxtqWHCD#47>+hS{2LDy8Yi*>Nx{uQ*_jCHw>dTYm`yMjhL|Mp_5f&m1d7$ajBX?Im z-amllkGAqPTgjJ_nS~CT4AOm_I)cX#eZL!mP zL6*OJ1itcqif>q=i6%H&YJJ*vq2{*1P(BkQdyITkEdY1iU zi-k_ZPvG<4fOm_x$KT<8d(G6Dd`WySJ}hv3g&-SsZu~X2=&*D}-}}Eq_Vp&z){wJX zR$iu5!#WD@_FA%UNZ6k;*2}Y|pM>8)#B5$J`D3}UY8U0#-C@tfUF$bBOH!CK0^3|v z4f9Z;z$lV!S=<+-G)Fy5DyA%Lc_zvledmN$k=zfOL3ilG8Ws#U@q}*bN$)QUq`#oj zlbK~V4`@cb54N@wiRetbK&8MgRP3ah!JL)GbNBv*#%GNd(jnXMkU0f!+5S7&K2`m$Gg zuU@%H4xNn<4Ne4zgIG6CNnbIcFQ-=oB-?DvDD>ckwUrRJ-UNbR*k*_&e7& z;gWI4@o3E=#W`2Q`o@xaOGh=x6LRYn6Lf?|N5jz=+YHd6fMH5pD?6q^0MFc;b^O*W z{ZH6rO8n*XQ^=u*T%n%0*RTTjQk&+y?4MOY1%QJ=fJ1;IK*B&l!MyC8ec3(>fJB2r z#~@{a7DmM+V^vB_N=}`bRW>wo!XhDmtCCko!6p=x!mQ|A(11-Tq83=+tLo^&ZfqKy z@Y~K>xHo{O+d2QlhGvhaj86jD_7#Xi7-}4xg=V$ctvAB(*AZ0&b^xXf5~EVm7y7l*|Z23>un*^1wBC ziBw*y$S{R19+AS^LTB>3Y!i=yR-N3dRDD|&x&W33sl2NJGdHPlb)gcx8x|jP_|KzfX`U{4g&oP%(G@V`fLohY0+){McXiiIkZ#ZW&-aS_{S zZLOb-@durQQfMlf}?`G%bgs!74(i2*n7G9}} zUDm-2aK8y|$NDdnCD2VcjQ9o-C^F5L^Q zHX`yORq8}#gpVS~;aj>-VDj_exnrBBUwh2sbEfAzxYhGU^Ec?(a<4hX<~Kf8c1VGi ziK=s9eC77ArEo5-TV@z`qu?9XMfWzwvjgCS`$#HOTRP*ss_gR>n5E!`B-TD_RU0@L zD)tqn@41BO>wyW}dEh)3ZVqf2dUhk=UO8x7EL1K|wIykqD_16w_A?3Q68`|qt27<~ z178^@RQnis_BD>w=rL5{F(v~h)x7f4N}KGb+y{dC<`|#`JX?uShoIrrG6fs$8oyi^ ziH)ETgr{seFKJI0bt&<9wtS_o;GXco^fSr2$UAMr_b~^A=|L`6Oy+ z#I6OAuqL6g#A>=q=*>aXAwPQlciTev;BzGRS)Y~+oSZ~FN=ONrj>uzm^gfR@&e!o9ioyE+eZf9q!;k=?hzq=(_z0Om|# zR;8lWHb-Ip%wm0DQ6G-zZMGNwPMk@fM(ygGWc0j-wti6&OwgMK{xavleQmO)k_j`5 z@?$%j5@A-`#GPQabX?^Gv4*`@KLF&)2?~}?5D)sek2wy8>z_YwDZU|%4#V)sYI=Kk zGkiibRYLd!pp3gPrLGFd8IOmw{CwnwC?K8!MFhZw=*z{J4_eHNX+7EpGy3uh7MC1S zRWk4nHqYhcQiNc)_!cRC?9KDYlIwCS*Afc?F|<7~H}0+7vnKqU!+MRdjV7d!47-s? zV<0wwWRlf-@%qrOVBHwEtH9mg1J5G#dC|W9jU!& zfny9=)}UGsm)oEqZMk`SHy&G~Xi9XpdTamy#ef=V4N1f?&mww5D;k+lWgJZN!y#W= zpd)OBPOI)PeuMlD2yX)}%@I%`GjdMB z7GgzcIG)Ym{z(@d054~C^Ri%oe)byAoseai!xokABToSghGN&YR_D8qM&aDtapwh4 zal$>NyJ`Magy1rkU)FlA*qmdM>-rJZb9~6t_k*eyNeAL2eJ}SC%3%sW;MW0VWS(eW zt8c{?xhJqRW`}TFM_~`iGtcb<4n!<_sn!D6_7<83ioY-Vyz}gf9eB$sJc7$nEN|Q~ zbJ&rz0*TIf>k76IMJ$daU1QY#USqVdF8#Ny}kY6W&@P3X>$Cqy^WIQ z1$&2xb+Qx+8bxdhG-5i@32eop?eW}7n<<_}wg~;G(=m0Cp2HOp&9aF(*M4ftcVY+W zc`Pida4|9fb&RMm%P?KSTS5L@;VL0qvPA>sC~i$dGo*G_m#NHa_WLTr2YTmY#(WvN z_Mk+<&@XgO+9?iwI!!Qxfk0tb*ztP%vHFFB3)ESPxz2Hi&6csxV+7u+Wt6E|sg0tFNmz^Qhu-=fgX&b z*YfOj-`jtG$5H0U*d!|26*)lko&@xMlibK`&w9No<>X3N%X2_@AruuB`EleRR%7wL zC86-DLBcX0TI!QAq)|A0DlSizRFP@jl}sFiVdpYm$i5?1!(w%({`siCKxYS6sc{jk z+kTrS{=$aW_I%P^XKYTM6Bg=l5y!2u| z)s+CNp8yN?_%JzmrB}8!cJa<*Rj1<>ON)DN%HSSHHU-H+|p?vE-KbZ6GD}%2;0HIG*ABn+$0#IIZ z-y*_XBxrn|i3tWT z#VI)fCt2c*8~3^wUY`?$*!FDawTSSaosz=)&tSRg-PsAsJh7HbccPt+*}wWOtnGHT z(A>Z=uj^z-vz_Vu$&qDhOy583x@=!h`uh6&2Ced_W|gUrl_@xTN^n>orS95(Y+o+Yz_P|00L@N{Ys_1&1PPf{w`?gq&*0ERVi~mIm ztM%P@yL+BR$y)x<_?W=45;}_f&YcZa(N_iiuDJ{w8L31g?8(nDUOt7&t%8YZ1^gb) zpI73tAj>T1Ru16S$zqFpg-$D!m$hQ0kGJe(ln@tzMX0UFsMXpcBf^ICLc6*K*54_p z=lZ7{*a>71BHu=kWmD;^-s?3LtF_NEr&6!3zG*39eam#3Igt4Mv!mnYt z=KRhUv13_kMiPti+C)W;Ws8&Talk{qW05Pu{;E~wgtqI7p@`LLiH5P7!Z3p~Y9x>LnK*y~foz?)jh)RRr$ks7YL#l}}z7wxk= znZ@q7wmN3U??HO-{gi^zqZ{MFkzS#z-LuKYkN05V%skqXA~lU)ls=V@fcAb8Q0Rsn z)ZCtGl##TKqRRs#a=#s-472pGiNi#9C{%Vehqifq_xMMl-{MfP!tJy~-K+ZJh;c+-xjVo2EGa}Glk3~r~bOySSoDxyNYS?mWsZVhC zc3R59+qzPZHI23;qGV)xkH(Vr+UqsV6lRnQRAZtP2168OFBogLS;L`?erjb340a`JK#8n9Wz}M2+zdSEIQMLc zS$@boZqr1kb}oJE&)Ihze#S9HBa-NvM#j78EWzFnb3G5rP$E6?VVF)OnS|C-q&`!H zixmP*RmC3|8L&r92z!hDmXN4l$A*DdH?B6#ypdYg5%XY(l+W@$y4p{~y&?s*UavLn8RK!8(pFTc^9p|S3vgC@Zy&xVk7cqyF^sF$oFh>DKKUKN zjgR|H^Wz5lM1%h*HQ41T-N|wmjA&bJ$MX2sxp6OiS~c`e=!7B#@@&vW$f|r|wwb2514~Ok<`Tbu zJ0T&Q2-NSU*LJD63&+xK%@+3bWQ3>s?p)z4DOx_J`zXeM~JemF!eCsJIaOeOns$E9ik0l-IG+(cjCXpDwIi6Hb?fpHVOVn(UzsAp*at$%1Kggpy}>> zJl)K^%XV=~JIw>QQgG7kd^Zx1=5FchqY~a(^PEFH&jw*&+DL}ekLP=ojqKg3 ztX-7@2eJ6;_}$O6sNq5?w?|-tE^KsNxqT!>>T`9`h=E7iX)6mD2ElULiO2%``k+cu z89fY8ry!GdEh=dkzNt@wLyfrD-5t00oVJs%HF=YMs9d(U!u27qPH?>W#n9(8GXdkh zaU9+O9Bmmrs6~L#`E1zk4cGmx4IEC&et&PTyBr=7T0`B z5UACGaBCfiv~DtbC>FNCDh9XxI`@j{_v@`cC%-?BJ^Kr=e+=uuItj zK_lb1kRAmkeYZ?CfhRJ281&Yb@rhOrQh3MU>(@i9P0k8Zex2tX+V0#ruQ>oCZ@eA&AkzeWG5cg*!0{?HX|4ouZT%{b z*)h9!*PJ!5k|(Kwbbt_c#F%Qbtk=;JoM&Dh2|O@jLs^m^j}nEu4qtI1NvT4I36omL zNK?4ka2WROKemqT2P|L}48n?>v+MsH4v-0|5I=pq0sQ+ea1!Rg9`qh+Rv6t(ox-x6 zq9?jF1@@A$qEP3c9nS-Rf!1w*puz288UHS1TO_sV8*xdA;HuIz%VP)>>^m`3?K9{e z_CXd7-H-fZq>Q-j?P@_l%NJ z*pnl19;0v~oQ^le&$Lk`xiVgXan>R#;fFUsE?M%(G+W%XZCP^V@DkJB>&NBEHqg`a z?643b7_i2f_9@8>{Si}I#KR(E`39${Ch`Xd6T4duOsZ1XtTrsHG-)FIu9#QGEWG>M zP(6lZu61u{y&sCKfDobS@@68CpHF>dj(LiwytpwoGSnj~r!5kUrXy*4ASs>>A@n)Q5gnh#5kkWchf8fgEz+#5oE^Ng?4f5bjh; z^Yk8^DZGcPovtKIC*0a2K+{p&hd3P;?>rq}L#(DBPJLXEftHvLUwdF7Wna>!KSd^Z zKerk8V7R~3L40%w3%+4{VQuv!8m62`(8)Qezxf7V5))&)KwJYjEL_khwRb)J3y+f8 zxBl=rOIq&H!Qtv}bps~Y%AqT{{_=`8fowE1Q^{M0VmsFc)k`8j%KWFNI2SL_AnE%n z?2)QJr5NEx+eeu2klGTpH3{2$dZt4eFeRz^O0sX&n8;e{td(w=;OM0*iOd%>5!da; zwdKVvEgD?~V$~C!l)(t_d7qK-H=VR8W`(zsDSvjpF=2!blA*~=$%x~JPNXFL1+1!h zBgTuL(xg&}@bAADRSkOJ+9!Du{$gS%(q3}iFlXf8@qRe;=IbBw)AzSa z91^)Mi!J+X$z^)096cd;j7Y!m_f>N|M|8hG6aV=RGCW64)i>;o{sPE@D~hlhaSC>H z>go)RR+x{pim@bZ@<{^>YrC3`lB*XwuYjDP+UbpPro%FIp|qVHLLu>U<#-eoWb+eD zX^m_yeoM%zbG}2jtnLo+^VHfsEEe)2NBp9KqVIJc2dQ8do6H*-GHGhIcw7ep?+HPC zQUkDWfq6i8vG=E@kQ)5OZ6`6>ycUHDc6L$?hE7jABsV6x%bE1L<>nanuQckv08*nH z{Yk@=Iy>dXOw`a>B>!m3bpO7wp!m5=Ty9U`p|-)&#&&QtO_FwTct7?g=`^S7hurhC z++T0WP(i@O9Ja!hVNz27Z$kkz-%x4EbzX%Z){&y6Ti7=nsC0wHtLrkHeN|ptq6BpF z`?%*UGxcy4aN;O@O<}%Sut>XzcJsLwD>I_HgJd~-Lc-|Y-+B73XmoXCqItMT;gvxs zg9xJgJoj3C5w};(hYv)-r%5}){;2-DpiD7n4nUbU<_eS zL@-@ZBzBi(IhqLCv1;#1>|U-}s`fQubD`Jc8>s!7+2^2&<%w}L4%#Cf=H5t+k>s*b)MQZgHi!X17!FiO98ddStP`mR5{QKchx#{JE` zjtc6N0PAu3c#s#-z_i~mfW(ATyRn%*5n0o%1e-IrCaCOKb;>WxbMV>35rWqJ1^nK4 z4@Kaxw6=D6w&cx;er!gasU_L^n^sx7zcsBSWxQrTFf}GzHq;E+?UN4VQ7V)zqc3qTG=qr`$2nCYN;z^KEXmHzc^l5ZND+=10(-B@koCsQ(rEea}_9TqaBZ zLSP_|HJwb(|VA)r*Q8Ee8 zAw;qnY&_0W5Mp+rmBk;;WdV-L_jDe}cZhQH0R}EB`@q5KJp5vui5@h8zgotsFQ{XQ z+K%aC9Id$lt+hpwOdg?iI);GdIjlfV_=JEvjEmidCQB4yIaH|}T%|nXvI1Dz17B4-3uxQC7*`<=1FAIK--+HYaLN+pL4pd}_r!)j<;k4bOa(kk8 zNqv5yQC#>n1te5b_VP{Dlie;%?b10ZGTashJT=SsLM^S%O#89ZEK%n5jKZWzyoEXm(|Y?Y1(kSeiW+iQ1Haa z7i9dqH%ipvF*D4qJxT$ju>;CR-#5u}KPf5^YI3Z-Sp83W>om(d;tq#&{~EP9-}mbgStk>I2dGUD_Cc?#R#fI#Plt zAGVK;=p;&j4)o7W`++R<)@l)SQy7qHKWNVd&D;h1mYa0d>lQRR>i$fgo|Y|B-}+*o z6|PEENTUGj+fCF5nfC|K50iBhhETo){m$QIo^k4=-_rfafQ8`=4%TAj{%$f)d=KSm z5!=8}0uoesq+c~GDD$l-l0!&)L{?swteT ze~D@tn5)Ra4)?b!`!>q(?BB2Ze`fdBFvI0Z+}R*E1_Pg54xi}}2FeXR!DR$+5#Gxc zaXkT0;P5a4WB_`H&iITZGU%a~XxlNYS#V}}OTok&h&I{|#`{n``kynv%dnrJewShI z0Yx&bp+!^M^Q*c1CjS@vfxU|3Ft zIb0cP86Oeo{$LbIb`|a;w%<14ag@JcFw!lVWW;qM--pT6x%KbgR=-+9iw#xpsF|*` z984126QbwX^V>ac9osv0+6VDbPE+{2^hxH37J9he7{j&^FlU@vz0nsl?sc)Q16@4A zWenL$g3h-V@C2gnrH81B>H0v;M{$W);y?-xW>Clc(TPcF+T*;JB)68b-_o|zn&urR ziS?`CU#tH0;olUg3=v=8%jCdc9lbmWY0mb+!uB_ke*px(mn}hSFPSE27nwdk&u~pX z6+j_XZ>bNUrN0QS>-2v|{V=Ke)Bk`ldSe@6T=T5)6VLx2_+K;+?>~0T_{WZ@2ZZq( zhetbpYJRjM?AG)ET3h(fkLfFqwr>u89BHEa&-1a<1{Bg<_Hk0pKa-69ZPK%UCNcdp z@_%=iti}X!Sai^TzWtLw^yEV$`*3k9^`lLubCi28uQX7?(xExlC@ch0wh z3;{=_A&hwS_HD0y`}m1kG@3;`?|CE`tuzt3D~W8XY1$gn6*;J_3XoDewNs!y>Ge-O z=$EXY@n7ytZ`*zblxE z-*cC{EUEB|O>lWjs!bq7s+}SOA#GmpOI8xzl~a-k=&ReDjy zwjTKxTJ69ou4Pi=8pBuj)IP?|c96AJ3y@*H4+K*)zJ?yVx!JKggu9(Sw;B%W?jyq< zDaN?*=@7%Mpl2NgT2w(P>h~W|(ndG<$FexJ!&lzvwk;;^ZfuvQ5&-s68 z^REys6p(saxnyEmoOrp2rdxY|2ZfncCT3e= z38jexo`@iWHTf=Ua+P^Vc^-AeK5Q1aH;C z5rCR{Nu*dZ*617`lIFe9N3m34E2p=Z5|~Zb#D`y6qgX#8)fe#y4FeC$8dy~~B3&8; zJokBW04+iwezUMqLZb$!O7o9vov0tSe*s~%g)QQx-PH(t=hTfM5XoD9J#GxFWCPXb zShJBUCnn3C1l@4Jk&}MH;y7OtvK*OI>0CN21I z8`l@JZxYN)Wfx+}fvh-WTumB>$@Q zdFA#nwSlb8QHdzAJhlP0T}2)W51s_VL~Osx$$YcH7P3!R;gS(Q$E+WqnjuvgbDflVkNH- zHVu+0uj|1QvyZk-EZtZxggYYd&+6U3xyiC#9X)38E>MNoM{ee^8|V;OBUfUN0t#l> z)EqO)K~ej}&~B~d(l5(b>z^$Mn42&6z$P^1n{X_mC}#XK{7HMK>iS~rU&`X6qYuha zo{GNlHSamuB~4w@_;@aiXe)77a60$mqdGs|T+qbxh6?3&EU>)}AiFlNNN1nv?8-y~ zxVfbSD5eyte?+=jXx@}tm|3$gX7_{}x8X$h!HZ25Mlk6~O||_%`aCk{v2+@}e!fki zMepT+znbU*qZTIlS_g{w;S`*m@4g}0@`mQ!?a_kny6q9|!A7csd=BQG?7!#q_Enw) zlW#YRlMc|0ahaPyD6xY)zv{E6O?rX*Hf^?XQOO$&ziM_tNurS#{KSDPYojlH#^+6i zK6Dy9=nXi|E*v(Lgn$xhZJV-;H%)Oqc}aDd+Pbz|jAYxp-w^#ETq?&Q9AzWwz8hVq zo==mETPQMP$0|)}PwRX6eiWYD5hoJu5Yu+K;;7ea1JA#vtX?b8q{$Q$7)zn2VhX(w zo-n4i~9<@S`-QGVjJ_zNyfnx&BJ&vOvV88PFFP5 zdr619?d@jc4*50Fqd$zhIs^x}c$wL5+tCSO#HWY#yTLIACW6t|u`#gZ0!@mkls>lp zhDoJCKC59*dFG+_yeZQS^jA=qoT4}yhKXa6!IfS>xNe@QkJ9xtNT`zBCm^vcMQ9W6 zP`YN9JNI(~CB~jJKO0!Li1t%tfAeMhQE6d(Qg?C*l8cJ_U8~OXbgq-F469*&Iy(Dl z;nY;qCZ%h8yKZ|)Y1P`reQUwa3G?e{>nJ%ffOOiMs_1wzO zl-suP!@-e2+{<+sJL_yKBIwbd6cx%X?yKy>fbBu%`f1MurINcyKrjS`A8Ty?vDU@~!P@6j zh}j0=P!3M;f7x*e7)<`Nv zxcO<-0ojmdW%?AJQ{@|Xo^pFa0_A9|Q60#1Q_VkI0lQ(0bL5^vX{PlrjT+A_oY`ci zgc)Y?A8+fKR7ukDBc{6@C|$aesu-dgQ*X@gA|Cd^ub=Wt-0MsWqu8)e6eaht}i1CXW*P_Y2E= zHp&aHYn=3|)%(!^F#}@RgsB~DDDQ0N37ad6bp+kW z6!+3Ml+JvZdFH}}`Y}9JPMu~AhU+}gp&O)WpwOya);|s^yrJh_pd3~>3=0&-D$^@% zMp+g%x4Q&%ijypFOO()3@2`MYZ_Ml!01XzV!Ob24p8Vf?f9Ii--W*94zIma`n($ib z_4ThOzg4#c8XxI+|I%3|&}BnN6~7OmKfUhFqK%$;9wZ|nf85PraapH8+_|zl)?B3d zTG55Ov5>ykf2}a_K9Hj`Y32JkW{21$&**ITcGY%}KY!gbN0CHEby2SKTqoX;>{POK ztAd>b)$uP#x02^40;LmT$sl=`eUHz>wsitZQ?NQ*gT zOH@`{R_1C*DTsKcGuUDw+)0si9WzdxPZRN>B`kl8DD|?B*}VjAKfy(s6SPiLJ9%{ zu3Rn8@VN^CLeU}BizclEq~!w*ZRy-sl~>_dN3nRR0UrB~@QPodsUTBOhQJbTlaT-K#Q06}PZz zMkSeFc$%zkZs3l=Il-Gz#xxwQ-O}BozZ8iR#wlm7%(c4Ja=A5*(5zcKi2kHgCZr5G z2}7(xQtc^lY4y4p$_$WB4w$7a&>UUzfRW@K3McY6mmLQtC6%b%U1?=17!Vl`n#e&lTi}BmmAUN z+M^1K<0?oI&io9gCqiQ9d3aPSvW@#yZGpY}udcT%pKzG+%`~Kksk?bmRoCh|`H^c( zq{)y@&?sUZ;R&6ql$Ies#&Qw|I(;IwUVkTdec$>#R6=_**d)tIwj#%^zw?piu#sQHm&Ld5$Vg1Gb^?23bKj76W4-W~y=8iC!8ci8Qlixzp zMX>a8=+Vb^{4--X2fmxK7MikdHd=e$!E9%&Y{0eb94;GasB|n_mAiD{;IWd)hk|pS zr!4x7u(}+o5ZKT0bZkc<^ZP{a#-DWIZMjJiyBYa7;-*7xnO)7lE zI#wHi$}@RaA#B5Mh&t=%MqDZbqH-(P~i~`BHC?)QNVDy zU-+G(tH$Z-Gxa-py6sf9jzay3v_m4@Q@@KF%g~?+Vp%^O*4Ec#Zu?Kjtc3}1l6}d? zl5m+LpjVxRd#&DXz8W4&&v-yeJ6MLH9Xcuv4A^z{m234wbah+0@Jz{+{P4al(N!)l zPmdR0^C;s8o>9fSpQlkDUNdYeTl!f^*4|5pEQD+Ss0*Q-!#d4Uzyljtl#`(xov8vO zNMYL!aIE@S@ahX_{>w-^3uU*@2?nv5zIjZ+ z^0qz(%6sOWjHB10JV+Yzbt4nH#g2ud?G~%n%(upz`S`IGD--)f)F!Ud@@5dle&Iv` z;lS?%bdv4|nTJCh>UIT7sxT$zdtV1^+`2d7t51=BHHty9jSd<0xdvas&f^POL3M63 zs}`ysfy#OUxM|8`8K?Aj!DF z6;?r+*v?hEcPzRSlh2+PNmovJTlNdAsolssNMT06d|;PHf{nn_J9qzp3)h(Ys9FTy z;HNGP`k1~8yH_M4^Ojny(d;a6F#`JZQ2-if`IaW|5RfjW_z@#y@@*lm?BZ+Ud*fW= zjl^P^UG;P8zW`7Kf6Pu?GUg*-ncv6|0Q*`)L8Hx)k>SgNEd_m5}(;X>{E zW8M+}e7wsX5bMYL+A?vBJji~3gWlRlDEBF!en;(TwCvOK-gJe%C-iYNY7g@D(`(OI3beMc_i-;xiRTa*K^HK$CDa? z+n?__>^GqwYeO)}J$G;!UG>$0=h{DU+(=S!kT@XkL#is}TNJmljT~H=NWW z%}KP2rI=WB4wM@m_u-L=u$Y``OyA!VQs>=jvjTjBEQzUbDaFW+e>s=LHLS-LW^x#bSGKD76fi?JAVF7 ztZW)3+gvLXEKgbs>Y$Vfv<~O>T`nsxF1#zuCtD4oK2sBZM$PxJN52g~(CbUCm#wKX z$3b>fmNwF$WpfT@FDwd-#>zJDx8+@uzz`Te-8kJ7l{(1qq+{;2k%dKNHbS(tkRmTt zw%EX;uI^8%2stQeAkJV_UE?Fg4!|8AIuHDJxBeymy_MBDkib%x4C# zY6{qLH~Tfigd|{com)(-1V7Obym$gkExtM9)2tT5N?+&ktzzq>qhyzloy!Tl4{UPB zIv_k@VLX|J;foc={ZzTm=XJXuCjS()uoErtQ%?;81r)VmSyGWx2)^&VZEevKa!&9! z`!$m3CT)IeF1ZMEH^|C5&0aV?HnrYIzze;TDW18_eg<6&p)z6VSoSs{l-*w9TboqV zApK}4t(rDr&H4~Lgt@EBhjx+~soO_~Z!zUM+xlaBzLw96Dmbq)W^#|T^>ITI!_mJZ zUQ1yvw#Fa{T>RZCkV#J24tym%bve?jt;gWF0Fyg|t_^R?-V}A3z&I5x&(}|&M98}O zb^&a1tN~5Y+6FppGE4MgodZj<%5;+`d+eNGM15|6mGspAv{k>yRdTOy&lRdu2!zQL z4r1s-hcs?q`sbZ>=Qm_B-IG>-6@Dq*mD?s3%dl=BkL!DYo+4=W9pry$1=KDq_Xtku zZuce*@CQy>Hh=yKwJP*kMd7HkrZ{dL_y0QMxRT#plZRjxWtN_%^b8qG9dRc>Na&Nm0p);Y6-F zH_kUWx%Ond)*NVDJ7P81{-zSZ15=&9fU*NsGmX%;y}Yi<2T#r1CEJ#+q{-R}YO3%v zE#h4TyK$Bz-TmMpw?2O>W^1LabPGJPKmn##sgq>QKhX%wY@-5V^DJ9(50-A-`~%JT zFG20w;bH@$9%#+Dn7L=!aC7BJQz(_3P*L3uQ0kt?CB-EX+YB zUt)xMoqaV22d2k8Ig2S*G20iu)7>{%yJ;#%uRtkr$wSTC*=lyR+Mo^0xi^MsoY~N| z`?`+p@EQ}@>4TJ4?VNn3Qc3>z<*dEO5Sm;t;5Qn=Ot&eunNp?|#5kz~r5bskkd9U(#OT~|fflddqA z4`s?h#cH?HSp9>Icy?JJ8%#{}4{oN&4^7=onPbImO%@8rf~(VP(E$QUdEUH8?pL|e zT70wMObni}Czv7=G%Z{VU!xG;kll0s7;tiRY8rYOZH!Vb-bKsprH{;~x7GeKcbV3F zAHDhWUR^0Z-DzU?(ny2&7_!7;X%e-zSuC5ejwFVCE}hWjAQq zA=#Mcj}{L{o_PKR%%zJA`X99T2Sf>^t7aUurL5G#TZBuM<8u}pzeXQYs%Tr6SCm$^ zR^Y)xEtQT1@vk%@>x~fAh~$P0pt$bL6V!Bz-xpoNZDC!C z13b9b7;kH#tW&8(<}iypOU8lOgvK2Nn+1jN#jg>D#W@8+ zsMwFFuIW(+4atKDeHq-!*L>sZ z!rd2X%GRudVydA*?S`2^N-kv3GB3p+&7{Bq;`3K6rcHPYWcGXqM5R7|0fLgdNHs#T z$NaS)eC-WCh;Qb~9!t9B%SR-Gol>jb2flqnojJJ?_~r`hy5^Q#3Y(Ad+=jE@u2 zF@Z9T-Z@=b*3Iks3vE|Duy44%?|L?O-?LDh$D*|)o%T`j@OSETjnC-)hFk^hHp~yD zJ6VhS?C&ua7T4|8?gw|Ib{lp`q?>tw zxHGYob3tmU6hoO*@04y*;P98#W^Ms{YzuN`pPrtn%lkib|ArHo?`{2Z3(mL(S^5sx zoY@3L#QFQi`cucpSKFKI7DVvW7E#%B^kEvAB)foa=Y`(2h`gdOTCGvdI3!BY`dQg44f-|z}A@^tyDBnfMpK%1LP%$T(S4&D@)1~db8$r=(V;l%M(+02C-+x zyYt{PiDYZ4!8#Cd9Dxr>mCZ@HFL`dlZYr5lx3Fej4nIw3SP9SxBb(180PYQdEBd@+ z`BebY8&a!|+9KDD}a zaT_t`L9L%w2}t+1vDgBD`-i2-=s=FJS=)?-QC31+7db4|jCTOvs_p3Q@?J>bMD6I! z$7^*PrK*?Bf;1wwNjN#Mg4EAGfMiEPCCVpXyyekz7nSP^WXs67?HnMXVfpr>K+6>2 zbORnOMvg;`1N|@uLNp$=ec+4o_MoVtwHWIlngGklzkoppzD^AzlP8oY3%m$k9u-?4 z3wfc@cRjVfa&^0__|DxRr_@ll(Dhu>sNdJXqwKP<6w#(|3?DX%?KE}uMh59N|22c! zM_PBRbs*tjs0Bes*l3&N?**ASq3@)3Q)y?QTb$6TYe!xlV$`pH^BNcs@kJYb=iU3VN9ru9d}9`U6Yrc% zk{#@g&P$@B`%99NR7Fz=ALmeal}n;WnKjL~HFmYMA1w6R zlfaX!y>#QL93R_NmnAe05BJM)2T)_qJXw|}SN~4Uo%(B$fOp3bGXin*LgAMl7+3Ar zwuZ;c?X>!Y;lY5x9zjr}O_nsN^iqS!S5V_@?RSFC^E2rFH2aE8QwgGCh>jTAqZg7h z=P%toMPVVtUW9WAdyGYTw&s`i{Ic3SxU$fqTcvAnJfJ*N#Q4SMIO;l0+lr?RCDxl( zbb0mxEV*;A*l?^Dqs32>hF%9d3CoqU1+?ZAZ`P>yy1!n3bR8_z@%4P_BFN7kJGXI# zlUnkC5&8RUUVxX93;%04GIkXQmim|sF-DQv2ul;Uq;z0oUP4rTg*Q0g+Pzkvy$`q! zx++nrDtZ?5NL?>M?D@Yc^FFUbB~))pQA9I()dwflL)R3SHedC9bI0v}t*H#F=!AR1JA zP`{&H?5BlG^KiYG)u7JyG7XIj#eQ_1lgUcOX5dn~FQ@T)U1<%>s0^iTSz{!c7vY@jVEK`H+!h_Ps>%0GPD+8w4(`o zGXXWqs6|FM$Ui`qGB6byWWd*+gbhS3YTyJAvkV2an-YPYgDR-^%`U*|rPC*E&*62L{CAcon2c?)o}- z=n;SuTtdO1gd3dVOME8(;vfUmw{aeo^7r<`v**SP8ktjAE^}r2Cn+H-dtBE%!#{k> z&`H&MIckrR4b?fN3I^DCMiUZ6a`IFBtI5WT zFMaKV#$}D`<0~r$j+h9MuLG+Ld5@(_sxX({`Zf(Od49Q+LUR_rruR3ZPm) zeHOQaN^nPFJ^2(8I8BsadFq=${v=4%Eu{3ZHb;i`g)-Ds=ZE)|B=_Q+K;xG*mM*4+$ zDc$AVpfyj|H=`UH{H~5;e!bkKZEuu24A_Sm&Bh=VH&-W%GRgSYpm%~e8v$!6>asdm zmg*u)5i6@{O7=3d9`s!R^F0g#pUF#`DN&~wzTBuRL*fq68RIr4YJzwZ z04$0w!Q)PDRckIEMM#>};nFep&NvX#Y+iA>HwNp|JSr0@(fBZC7#H6txy~fkU~tyU zcmA@EWsXE0*a$0&{{p;UxBmsKhipFrh)ZxA${T8X*26 zsO7cT)Ph{f^Dz&i9X6-Zh;Ja?yyEu565Z`e96?tIg&gje&`Im76~$aq!V@ z$faX}Y*Kq@TcaG*0(nkCAtU*xm@h2vOp=}0n{`Ljpp;zA7rS2gDj1%Uljicx2RW5G zv}YOlw($wJvGvo(w~d!&Z{HF%tMo|fSP7Pv!XL8*&u&X%%+ch?C+T$g%?`HB_(jI! zcdF!F!17VZ@n@8%m+~n-)E~@pXTkOL9-lgL1Ig6cj^49p!;E{pz*q@7C;}GS)(p-H zRW_59;x6AiEIndgN?h|lv&?AeP>zgB%QC;f?h)shnCq}K1rHDzwzAqB?p;rd1lnP) z2}G0ktatrflj#m;?al9zbNusO=A^gSb^G5Nrv3|}&SLBBU*+x~U6Y>?uSd zf@IxHu3s)6{dW~iH_#Jx&WEXx?IB^6nu#-7uT=_Iy8bw6;HsP>8a74P@x?UHwE{p> z4E^T8C0bVUz<^_Rv7PYAO*J*@CMfAmhFT;>L^KZ0jH{7!&$^)GNJ+UIo5A!%5c5k{ zBVJ}KV%3boSJext3+Tc+Wes|`qYo!WYq#x$FHejB3E^e{mj$6Ocr?#as*NXf^m}E2 zguBU{%CE~3d&SG}{cVp8aH|bzFr=d)E(=s&@Br^o1#q-92n1)B$9RS8;5J3~;76|F zlQOlj@fmdkWvOq|Q2#06gt$~O#>5W$Ww|K3O}KzaMhR$Ft!cPw{6P369<$LGB~SgS zohaJ{TK};x5XsrK78<@#VwE7H7>pO}p*YvoDLoRqgg-iIXlfe+4^lO35|p|V1+kS( zjX~JV3E!$QBjRSsditBcPpVbA4A_SCeWUfa&4ou zgyDAEX0fG{)Xd3^#pAM?(EEo;pX?K8dm>P2tJxAQ{NV#LnbcA)TeSMwSOjV2pxk+? zQ9)jpy{Pl2rnqk^AfABMG;Ce*N&!`kCawm`l4eG-YUc{VUd(fhVwp)OYkIZCBsric zX4!F9mf;5_T^6a807*=TFHK8A>OuRDZ-}5&+PO{U>b?nGn(NNCfc+cPf=2TsTsRBh z@a{b*9SWs;*On%hv*IHx47u$&}fywV(O}5EX=dy6An>`dF9iu_fzez1z2!^t_ z01q|uudat&**d^wy>@!U>PMsDDpHFb%9;D9B=k@e3R@B$&NBg>WPA@6;5eXHeP!by z{8f~q=}L?!iBAc;nuT0DMf(Ply<`drYirt=h2>OPEM5d=ta)9n-^WZ}clEOm8o&kpvip zN}X8@dy%_zOR3~Qr5j=DtE+${Zc`zvl&zZS zzDD7m9vN%P3Y|K#061z^wKi(Qc+zhAc6dAGybsHOO2OwxZqugTCfHTNGt9x)*qjN& zg<*T&I9xKvgN~U6$B9$Fo5ps*DHRc*|M8*9E(blZ*IIoPwpgeUm}*Y`b`I>dK6wE1 z>$Nrp#8edfbG`GxfHgI$0KZWUx%6-S0<^zC?K-VjN;1gx9R}SX^cp8FJywu%{Uj5r z8vtC{kq25{?h_#Tv-f{e7)(sL3E8`R96jRmf8tHLCZ#J^*CifI(3yYc@ZARVdI3d) zd_)_L`J}i!9pmjga;|v%jMqy$n+zo5%sf+V4A64z8&x7CXvV5+$mB8otXMkG9#O|e zBxw#1?cTVF9Jzm~*4@&?V)gKRP>?t5ex73f?8OhyE!Ys8(wz#1ff|wPtm7IU9y>qV zGmprjf^@1#pjl!+=0nenzzGF7hSOj2OW%Zb>~+;fHbOtIOiSTivSB{`!)S_fHOpb? zh{IFQ26rEfh$J%_)bFJ024pg8?m^6p(j06P^JDB=>H`uMhmZ%gx68gCPzMZyU_p(& zbS??oM?_8#B(Ntem%f2%O`@j`U-kC=OkmQK?SOPkYqkV?MM}Wrr-PpuyQsLiiMN|u zYSo-_8rwGE9;)o*=eCeoT6mB1j18HXs~AN@eIrq}8rhY3Gy4FpzW}Zb?miwf`zDB& zcb8k^49JxDS76FeBQLg;$F>$3YUVZzP_B^`d0H`9N2GZ@)yWBvpZOh&r7m{@5EW`v zJp^*#$P6r55e$k~z`NeV7$a&utCQgxWR;lnhwp0jQPCKM+NX0CIF}Ar^jJ8*vm_?W zD;4+v8<9^CQ#Q}3%rhulz~jJ=v5V2rQ8;p{U3{lM#NCs0%&66+?yk@_hx15#)ixKM zxNz7rh^;WZ7L)G)Z*(KhL@ zb9$3@Y5EMOU+{Hc+#9`;OVNEo_@lNZlo$HAOZ#x*9bVz$2& zXgE0gk(d~0pJ6%8X1%KFA@kPRt|`1Y8i1B`($f*;kP6DB;B8iwqxKmE!O-$ab9)L` zciCa)tZcbWnAN6)mD$xtrjPaEns|o2Xe84^R4*7`HJKU?ut&-OIStD1VF2R@^fG#r z;vkyL@xgN%2Dmo0@BvvR4oYU364dRvik-3#qw_bi^!>&>DeU8E!tV2{NIBnrSub&| z{eEe2?@IhiBJb+Rv(lHdBMm?-`W3gbd&3F$tOjwJhS9GHy^7Ova5amLl3r-jNVO)9hlf zYgQjM8pOYr#{=x&u>9Da}$}%A)0l}UiV8; z&+ZcXrl;u?{&~&EzFWEwe7?F?%$6z>bI8-bD&bjM(&Avze$5)CQNKR4Or%lsOJ%## z8|M;4_2u2-XrBff-?XqDg8NC4CBI(*HA|Rufm&LIwbss*pq8tGSp(++h#%W{YFv?v)Zp zG8Qc+yn4QKzn=Ho;;Y)zKVCJh5f_I)5&xTN@{jA^#-)D&(^)5VOn+W|GIst8xH)*7 z{ul6GU=b>R_xQMs>5ce5>dou__9~bEg=ww{&J9)#dlJ_ID=Q&S)jj~@oFMz0(Ts0N ze@RF>63qSB-S+w1nsCRJ1U=D%*8gbktE1uwlYIvm+%;IRVUU3kBtU{okQvOKMjXCSOC9y!aJM2-SzUC!sIuZ zo3d9azGsLji*J;dr`8uV_D_hGgfXS#XndGA>W=erE#_dR_{kL0KJirQa%QR*KC|9v zV7;lGwj%fw?zFz6z5fF>cy`9sv6)zfq#$oo8WrQsDtoC3{%Z{vRZuf(;D*i$oZP|GFc$fGbRi-3+G!5q?ngSB&lKZYn;)DZ9Nrg z)77R8WdbPfTG$p-+9}Pa6^{UYIZw10)YfpW)5_O?1!sPy`naOMEQ7=gGFvWV|MXxz zNsq=pH38FNBX$}O<+hXV);nmio0dq98{wToXF6v``pYW9`NFey^JuBw*Qots2L9yd zw5`Q<*q&arH|bbfaA1D>V22z}{z&FnsPZf;YYI7LjHApXmH2ANrsKs2TXqWR7a0w% zB37Xq9}I>;Wf9b&pQ!nxG&mY65IH5lR#r-W%gQ=WE2FJil5T(EIu%uPljSA3&Wr)N z-onh$+R<`4i`f?9rRSbr8RY<3*O~9E{FoP#SV3~}cZ(6|6Z)T8vQ||Q$KrS_gzjq6 zF36RJ);Od-kAMahBwQl5h_?xqIOCWUECl;*{k(+gAT1JxExZ z$SbYMry9VuYjp9^V^g-gB?CeikRJ=Axl*F7rYZ4#j-gIK=vhJ^T1}Qh(js+&UviMM zkwT#NOt&loe+=27N`1ll0FdXRcs`jqe+h|*SK{b#Hz#u1wDRD^^RIC&WtOTRK$AV; z73vtmqS8f0d+V#MMJiwQBcvQ+?o6K~Bf}Z5T(QmoWMTxg$H@YiJ!zSpORdZ&rI5b` z$89bON6w$ZVDg6ar^n8?ux(Hj+gQ{VUIyd_Q$vTLp-4;9RO?dud#T14`4Q&1<-pAG z$TOS3aS#J(njk>G1-eZnEJM}(n!URlKpU^p`g4Uu+0g$D0k`)xwO6v+5voXxknAal z3{oYFJ$xtQWNune7egTHQgBYroBw&6N!`gPAc?^@h9z;v5#CoSjl6-r$w9=I$_#@$ z8_z4QH!9TLPX@+b98<&xja2l#!8-Hatdj6eEo4_)MkJNOseoCRPophO?2b>8 z2o8rt1hG`=gtuu8LlG9tOEYpwzrLn>07vtUhTe5P*4JC)CL;0ejDIh0rfm~a@AFbl zPmeD?d-aLF!Eti^B)F|Xg-Wl-C)oJq^Ji1cm77X7Yz}3i4gZ;w7WvRrhF$)8FT!`qBxy`&4vx7UT6 z7_;3!(@kM4yYRzZ;6ip7sj-z+xFJ;G>IN3|+@HbvQ-@}C@1(}YBC7EeOK6@)tVg)H z|FE5st#fb?7%Um9B-y?7f?N+{RSHPj5Hz}&K|xQM1*XcePCF1q_onZE+FX(@5Kal3 z6F20tc*pgmK4Rs}GS{kz8>P20f5|lvnjsPdKzJeYX@Br+E)LdR%g}%^ydsEPbuN?R zU|Xq*R-AopZcP32FzculB0NaMrfz)Mf)hc1gfKdlMVR*Zz7(KcBv5y$!=lYe8)>6;$ zRe5vZ#)-~r%)ZV4b~DGJzHe14(IIk1?eqju?e1caAG`m2|L>avA0eSXXZhw|Joj|TZ#js|V_G*CZ9q=ySwCzi4K)93Zy3rZ^sa0BzMR2k%AmhUIl5*^PFIn*O+e-|IJL!D2SdosvYao z-!@{P$L>TvvO)(8R}pXKB~P&S{{!G(^!s0I_RNk^ojhALqC_m-A2|m_DkOY#C)u3~ z`Fz@Cy$uiRe3kclTTSq^B>h@b>312+y%wo2B5C{Cl5*8IT3pIepQfahMT-b9 zpzNs>*dHh`tsU=q7uCOxZg0AEN^Z`WwaJ`B7DhGt;cjvioO~JbhV!edp3U?suL3ci z=kwl;TEB&TjS~?MrGU%v!OsFd(LBo^4>by4l3 zZT8TLh%?5sm)9yF!LxGn@rVCPn|92y*3;Hadc+kR1%RW0_={FV7p;77aZ?}BB@W6w z3Om^TAQ-&vXFL+2Gauyx3 zQ?@F0eB>QsC?A z6OmdKQ0_MVKq&(7X@Go@GU(~TcC*^Ir-TICMC?)9$r-ToviWv`VWauh4?1oq0pILl zQ`_m{?P;x0YJ7~Zt475lFXG+RI)R!Ow8E9t!s2A!sRO+=0H=YLyR`K)678;d6Pu#R zDzNO(E*^`x#kcen4(CSA0&0(@WT_$k!&9fLek(%#suf_~FV>vYJX417Li-Htyw_2hW`e0-kkF{ib-okJrLVq1Ze|vvi zIuFjo{;elX_*J~ZR}1=@F6`3?!MEQbtCY`Upb-)4rL=wQhfM9#Y|87$9DvLuQTgU;pactD0=SF+11!M+njf zz#mB11K@wblv=cPz&VBzP-<0F!-af*EFlSR6o>(+03aF~CI$``5CaVWKoZ^n(EbqK zFp}})l1i$oX=vqRF!7o>`%~~qXufiBjjOFA;(o?26&t_d7gImU08)2y3oz~JeOLrw zp`fCmhy!+~p4>=u5L?&IDNUNc^8LmTXg(RNx!ia_Zkks)vf}*O>`}m@IF$-BsbwPH zJzB=f)TeEu_(^9yEAJfUXj57NXO*3i_{nJ}F#wNcfFhX;d}h8WYZ$Kh87eUT`qKZ2 zT!GRVIYmHOzD89Ci0NYzOZQV^baF?i0MHjy@fh?iXD z21zJs)?oYS^IGaBtatn8FJI7~-N&OcWD;~{Z;-x*PwejdT8OzMeZV*Un>_Nn1!m=sv*G}__`^s1q z^eT9vrVEyj2R`_Dk7;VC6uyC;hV!U))8(IrL)rO@z9;kave?&+hs_Y=&!Gm`BxfW7 z6NU?e=fy>6g$mGF!C`9|j&q+cY`XA)XRR`WCmA&9F%Aa}u$+`x8^+V6aZc%vaAthG zC%~^#*D+o>C1YHU61BHq*yus17(R>KPTF7bec^dB%z?42%zgaDbzV`qTIvH~U(OyM zPk|lk3qU*)hb3O))k)N0;iXC9emtDrhKcy5Lgyj*B~m##?c8c5GjTd6y7LhJCMiCY zd^GPRwY?cBRZXFCyd<;2Wwa9dLnbW<<5P9YQIfMo1Aual{?3Ka09+&$7Y6^1ciJaZ zi_yP7zIW#lt6r#BT|U81H*;gDy4EkWu0AYWvXyO-h~z3c?Nx^jbVFguF+stq9p6*l zhYO96!0VKgewK11e6;0sB*ZGsV4d(#?eSnUcQwmt-QT~K!BU@|Eh59`TJTqW$KV@U ztqFpJQI~AZKKceu_jB}Up5iu44OiUA3!Xs0x`NJ(zs|W~D&(R7k__|0>V8_WtnZI8 zNni^YyioK9ys#YY?EAhSvC+!NGnuGHR^+992D>?L(e(-+d%~?t{QWe}e^P37?%dI@ z$fC`kad&&we$px}T+8HXezj;NzM1ikngZvhjw%Jhk)N9-k+ioh$I3&B1;*@%;O7xd zbB>Xefo!CN{UGpjoU7X5Qy@$s`;}nBtG{dnwZr(b;vvmhbcRcy$W(c)XBK7nNg?Zt zNx~c1RJK*sI+1?t6y7+l;;f}H9S#o0R9=H|m&1byTH2wE>iv$8yDsD_8A-JACH#Q5 zm}1Z_mWMrImq{}ny|v3pMK{8GWFh4ZWVVZ87E`D&)&33esCCyDw70GC$}!q|B0)`s zn_*|}S{C0(C3Mqs?8aqKk8BT{qD!?`r0#A^{FL-qlq;Ujz*3fB{$o@T12Do``N;&dt|tEH>~rL4*-5ch~K7G7>Gx+*2-)wkH?qQ z#$vMLh9B-F&Bt!vlkoa7D&parS@n=4qo26T0Hz7njT`U&^hh0CrS!qTFZo2 zTD>I%VBI)Aas>)^S_J6Pse6(V%|yPoP68iq(ioL2vf#KI&3ww(Z&_ROQXwn1R6NL% zpOiI+VMLQ{4VrF@cCs4{w$;|MU*L2YWli6QhZn~NZ`3d9V#Q6?5f&`9{OYX-ac~fI zFB5kVlj}ylvCW&A=@>BTegFjj|8voAdR@8Yu(_k2$eIDCj&h>3oSs@A?5=h3!v*K7;i>e&=E3x(OHGX=uej?E-TBaX)AN&uqa8v>{gKn zT(CIAV=^3Z(Mm|Q-%q-9j@LG?`rU14&1A77bgRvFhOV%$4D$Jq2m*xrvOxD4lD_iLWU>5B|J2e-Ro zG#Vpuo9@9ml|`rj7U2Ri5H}Xnw;a~DX#2%G^z88`yj^*}fNL+`x&7|j=6%niGh^(R z{v*07JH@9+r5|zg@e64u%K7veVZz8&s)^cLltd#~O^a~9eZtVy^OOblTQL>^*!zjF z$hhqKO>>LlgRB2)VH7fuDF8i0LitskWz8yCEEy1cth}XgqKQv5?6V_EOM^=g2ajX9 zp{|thquQPEt6dE9$69TdSRSVRXuk#h#;`GN3?irs*zD8$UD|)o^FhCGbJWoCu1?iFI&>*%pgku=Gh3SgyzSqCQti} z^isXoUZyB!PE2Jvvzm$-@H|Vga6p-;1VKWwkbU{7tKQR3>`VfPPnk-$I|7JK*=g>8 zC*_n&koz}+M=7adK3{+%pEob-c|^&jxik?8qzS3ERR=lqG2!~Fx3Wt?mrtW6n>Iv8 zzco0tsJLAHq;Vu&?h^igqp&1hUKN&I2)YzR#xN5dN5)7|arOM?F;MHVTDtHYCTxC^ zs|SUrg)uBEq#y`q1%BYrNBh=f->3T&6Ww*S|J-@+=$CtSd5ir3*lk8Q(=Y9Jty=B; zofYxjhS9~DxS)jUSRz*;-VT!iM?Uu>2BE}HZ6~#6qUY<+>~&S%dE(Phkgge{$qocv z&iPH&Zit>C6`m?SSNJq^q-$bmvO__a6Ms|u1H?ad^{*==@_V_SMx?tgO3P?YiWTKK zQIN9mp`1rP0J<4~=~#3s-+*Yff}IJJSK<*q!*|=!fmcIg(W|;wq7go0e}?lzV-x>u z7&c`&J?^EUnqOMazA7Y*npE#>3pR72Z0?jayUFGNmwlaXq3+0hH&h^!b$5a+%zWD7 z5webdl2OWFAh|E#uc2r!^Rm)_;cTd|YjqyEV2?yP*Q+Lr&*dqG9~Upe-e8?>x7X#m zBXTmom&h)_Sg?KC3`hB%rs%TOwqDZolonA{t8t7QexIOzYElQhmI+Um0iPCU5%@k6 z$o>o-Pv&=3NU3UWocTZtLaZ%X-w)r5GHzWSg^S-k02spytYY@cpkOz;c^Lb!O{MJO zvpk<}on1@JGl_!o31xKJ0c;L-M)WE!e&M@Vp(O7J@q5EjP?u8)<;NO^j3vLOE3!9C zN=<^=OlFg4L{w9z)HnVH5;2{~4Kuima@P2>4I6#w==vdgmKY1K- zNQ}(nNEmrE(MieG^71E{Bvs9LpEMc=>6f(o;6NHaq*B*sUu_s4*N_ zqZ`F;Q-t-o_GK>Rj`{(PKEA9u^)p1YARMCK%Mw)@bF;lXaIRKmnyg4**u0s*5$$B9pftX@!~j{9Xsop6veSd~^+LbNB>*xf;SXp2}?D6=ERfV~F?a#ET+T0`^*=@K{ zU4Obso_%4ZM4^O{cW6>v5Hkt(k!jDpv*-d4yr4XADd@zl4mChqWWIsyZZR+eOLY4? z(;<$B7pH@q?1^4rGl9t9_dn>=xXBsKxVGXR;~XhvPMTFN07>#3^fXrQjV4f-U)al1 zXwJufl%ChDv`#6K!Y#z%QorgooGw}^W&rVg9h{Ri_|8OpRec5+GOZ zn;Th0VaB>aUEV+_8s1YsO)8zm1_eD0<9lN#4GVp2t>EIc(7J?eY73l<}`zG@6f zOpZoK^ZBC3?3VZ1@vF2lBQRcoO+5FQ;Se|^PoM2soUIiVQ-;DpqM?t85=;}JS;{%} zmF!)L3|s_Z3uAW$;CKc3nULUFs~CyxnuMOXpav3?KXZW`*u^O&TdFCG4d+k(C@9Tp z2pB`fX0CZ2y;p9a&TauQ7pjq8ef1HhV)$z`OI^LL+i%RrTuGlP5g=TuD46c&H>}ub zVqf;<6s`2Ph`AzyqxfaFD7wi34?7=ZuP`{S@QKvqDdpWNw}dJ~2qrO!4SVSbZ$Tk& zS)RVP(m}p3rZi%&2jmt0gk98in#&6c8%0IqIf>-A4%Y-67ILpTqM|V(XJ^-yOAiwi zAD=|>u~lV~0)CPE*7O&Qm6s(^z!Dm9<%Z2KJ$q0j0%&PpLJNwDnGtabq|OY!IE{@= zNm508<-kbfa_I%<6N;_dU=B_!yrIEovw7^QXl)67UM*O7L8Dq1h)O~Rq3piFXJdJ7 zZi;AMwC?*z;(4peboC(WGf(IlqgTEG(NVFSoQYZD(lX*9Fjb{~|KE_WGvRtTDW5Ay z1XJ>+;^#zpzb7PAtxH&n@f3~JD+*`IvLJZLm8Ec?5^9_)#YicfT>jtg5F>6$Hj_rY zw>Qb5kEvgdBmn^v^OS~092^S6Zix|J3#wru=HWvt-Usr~=Y26%`N;LFeBR93uTYpSgZlGJ0xE#_GrJ`aS0ES5g-$<1&qdA~oP$vJcVq9%uKXxlVAsD7^QN$Gt^et8 z&nEqWr!@W-^a^Wcx;%>=g=&5m>&kEsl!G{asn(#^)3d@8@clwa{SCRIBl`H<5vbE*;kUG?=h$&&jU>1c``~{0jTW9EsoLbmxV1 zI0mC?Yuu`IA|L&eM+PIK+3eFGd&!>D|14TdSK?-96R^fP=|%U;q|Rf$018wXxqr-E6-0pPa>SZLdGaoZqbZ@}1EG za_{Qy`X2y4%fAar&+WhaJu&8k>PIRnfhmNnD=z7L1~B^pZ3s=OF3-eyj7 z)DbKUZJIn71Q}DiRwY&hboy^)SEpL5fNqhUg|3EJyENXgofhILfy2acC)NUo6^^uZ z75Sw$9scgD*k-pXJAYA-OX;9AYq^aho4B8ocz)v5*8KP+<=5V2EDdH!i4^D zw0{h%>CmcOCCZ9{szJabT+n0u$Lys0Kaf;?k6vJ_u3|_3&c%QOOY22nxb_lxfF)Kg zB@&qyNtl@nVKRy2G(F6(@f^GGnH!Z7*?Ik$Az!4z6UaTU&`7sn$qb6}T$LIoodnfk zL6ZoWUn;vl$sL#n*z%-vINXM0j-8Yu#@OKlxcSkO72HI&LL7N{2!|6kgDz1xbCui3 zD~~)0^jar{?mU9%yPWpt_Sl?X*kY2@i`rfv4n$_&(?e{xkRL|qNx|sM*8wMmzrIYV z7a)?A;S4l(=-QQBWV7kg2ckC+z3E?CW(Yna;D)Jp{lkbPm*bUQzX>LGPBa3O|T?;R5+qr(&Q9 zzEB7y=Zg>c0DKGT=pfn3zN&O335YS8-M*p6!U4wMf1{_!Is`zuf>}pK%_%4-7t|9M zyZH})3!B2RjD*WoyW8|H1K8n~v&N^zT z!#j>RW%H_qM~O?yKcDvh-wHYS{`egG=CNJ6&C(6y-~+?-@HG8YzKWpw z=45+4JtNGRe%lf4p552YdV_r#hwP$Uj|-L$U)ucs&lV7pMwn0yP7llv?9a|MSzSKj z3bflhHSD3j=}6|5?WzWk5&u=V&-+I>_D5L%H{n0D{67#%X6p`=R3CZ;Fz1XWvIART z0CClO6!%O5I8Q@~D|TeDbP7EhjdBRL7=}P5fvFFkgAi@^73HGa3;$!Dh99nI>#q#^ zm87(h&*i#Ys0}&Uqzc0(;3mxcCKD&mW~U%MXtb+#lUilQ>H+X{lM#zURiS~(Rl1{a znSS!Q=}AdSYA~);AY_D7mr@-I?9WMCgDi=ZWLkc$RI+A8Jv4=-**6rf>bfgGf2M29 z2w@t{8liY?w*ghhWygUo=S=2`n~UE+0KWA<%PyI?HyLBn!`6rcm|sbjBz;N{mG3d* zEdRW-yN2NtklH_^@RVoBz6;dG{5ip2eP6`}yKawho=C!8=}Ha(wv)Vu!6c>IQWqeS zx5Jt^1^Q^)B;D_k>}ZuogU8Onnou}!0zKf6<-FB^u!FKJjg^y)lj}Uhqir$tHo{tE z9@)D5bajHyx~K5~NIoN+`hKTRdck-1{ptigmyf7{Q%DmFG(6a^3^%cm?Wc;rcxf-0 lD*g`+U+$ main() async { WidgetsFlutterBinding.ensureInitialized(); - await Firebase.initializeApp(); - runApp(MyApp()); + await Firebase.initializeApp( + options: DefaultFirebaseOptions.currentPlatform, + ); + runApp(const MyApp()); } class MyApp extends StatelessWidget { + const MyApp({Key? key}) : super(key: key); + @override Widget build(BuildContext context) { - return MaterialApp( + return const MaterialApp( home: Scaffold( body: Auth(), ), @@ -58,10 +130,10 @@ class MyApp extends StatelessWidget { } class Auth extends StatefulWidget { - Auth({Key? key}) : super(key: key); + const Auth({Key? key}) : super(key: key); @override - _AuthState createState() => _AuthState(); + State createState() => _AuthState(); } class _AuthState extends State { @@ -72,29 +144,81 @@ class _AuthState extends State { void initState() { super.initState(); auth = FirebaseAuth.instance; - functions = FirebaseFunctions.instance; + functions = FirebaseFunctions.instanceFor(region: 'us-central1'); } final email = 'test@getstream.io'; final password = 'password'; - Future createAccount() async { - // Create Firebase account - await auth.createUserWithEmailAndPassword(email: email, password: password); - print('Firebase account created'); + /// Create User with Firebase and return Stream Token. + Future _createAccountAndGetToken() async { + try { + await auth.createUserWithEmailAndPassword( + email: email, password: password); + print('Firebase account created'); + + return _getToken(); + } on FirebaseAuthException catch (error) { + print(error.code); + print(error.message); + } + return null; } - Future signIn() async { - // Sign in with Firebase - await auth.signInWithEmailAndPassword(email: email, password: password); - print('Firebase signed in'); + /// Sign in with Firebase and retrieve Stream chat token. + Future _signInAndGetToken() async { + try { + await auth.signInWithEmailAndPassword(email: email, password: password); + print('Firebase signed in'); + return _getToken(); + } on FirebaseAuthException catch (error) { + print(error.code); + print(error.message); + } + return null; } - Future signOut() async { - // Revoke Stream chat token. - final callable = functions.httpsCallable('revokeStreamUserToken'); - await callable(); - print('Stream user token revoked'); + /// Sign out of Firebase and revoke Stream chat token. + Future _signOutAndRevokeToken() async { + await _revokeToken(); + + await auth.signOut(); + print('Firebase Signed Out'); + } + + /// Gets a Stream user token for current authenticated user + /// + /// Need to be authenticated to Firebase to call this function. + Future _getToken() async { + try { + final result = await functions + .httpsCallable('ext-auth-chat-getStreamUserToken') + .call(); + + print('Stream user token retrieved: ${result.data}'); + return result.data; + } on FirebaseFunctionsException catch (error) { + print(error.code); + print(error.details); + print(error.message); + } + return null; + } + + /// Revoke Stream user token for current authenticated user. + /// + /// Need to be authenticated to Firebase to call this function. + Future _revokeToken() async { + try { + await FirebaseFunctions.instance + .httpsCallable('ext-auth-chat-revokeStreamUserToken') + .call(); + print('Stream user token revoked'); + } on FirebaseFunctionsException catch (error) { + print(error.code); + print(error.details); + print(error.message); + } } @override @@ -107,16 +231,16 @@ class _AuthState extends State { streamUser: auth.authStateChanges(), ), ElevatedButton( - onPressed: createAccount, - child: Text('Create account'), + onPressed: _createAccountAndGetToken, + child: const Text('Create account'), ), ElevatedButton( - onPressed: signIn, - child: Text('Sign in'), + onPressed: _signInAndGetToken, + child: const Text('Sign in'), ), ElevatedButton( - onPressed: signOut, - child: Text('Sign out'), + onPressed: _signOutAndRevokeToken, + child: const Text('Sign out'), ), ], ), @@ -139,225 +263,98 @@ class AuthenticationState extends StatelessWidget { builder: (context, snapshot) { if (snapshot.hasData) { return (snapshot.data != null) - ? Text('Authenticated') - : Text('Not Authenticated'); + ? const Text('Authenticated') + : const Text('Not Authenticated'); } - return Text('Not Authenticated'); + return const Text('Not Authenticated'); }, ); } } - ``` -Running the above will give this: +Running the above will show a screen similar to this: -![](../assets/authentication_demo_app.jpg) +![Firebase auth demo UI output](../assets/authentication_demo_app.jpg) + +#### Flutter Firebase Authentication The `Auth` widget handles all of the authentication logic. It initializes a `FirebaseAuth.instance` and uses that -in the `createAccount`, `signIn` and `signOut` methods. There is a button to envoke each of these methods. +in the `_createAccountAndGetToken`, `_signInAndGetToken` and `_signOutAndRevokeToken` methods. There is a button to invoke each of these methods. -The `FirebaseFunctions.instance` will be used later in this guide. +This example uses a hardcoded **email** and **password** and demonstrates basic authentication. The `AuthenticationState` widget listens to `auth.authStateChanges()` to display a message indicating if a user is authenticated. -### Firebase Cloud Functions +:::note +Ensure that you've enabled the email and password authentication provider within the Firebase Auth console. +::: + +#### Flutter Firebase Cloud Functions Firebase Cloud Functions allows you to extend Firebase with custom operations that an event can trigger: -- **Internal event**: For example, when creating a new Firebase account this is automatically triggered. -- **External event**: For example, directly calling a cloud function from your Flutter application. -To set up your local environment to deploy cloud functions, please see the -[Cloud Functions getting started](https://firebase.flutter.dev/docs/overview) docs. +- **Internal event**: For example, when creating a new Firebase account a function is automatically triggered to create a Stream user. +- **External event**: For example, directly calling a cloud function from your Flutter application - creating/revoking a Stream user token. -After initializing your project with cloud functions, you should have a **functions** folder in your project, including a `package.json` file. +To call external cloud functions from Flutter, you will need to use the `cloud_functions` package. -There should be two dependencies already added, **firebase-admin** and **firebase-functions**. You will also need to add the **stream-chat** dependency. - -Navigate to the **functions** folder and run `npm install stream-chat --save-prod`. - -This will install the node module and add it as a dependency to `package.json`. - -Now open `index.js` and add the following (this is the complete example): - -```js -const StreamChat = require('stream-chat').StreamChat; -const functions = require("firebase-functions"); -const admin = require("firebase-admin"); - -admin.initializeApp(); - -const serverClient = StreamChat.getInstance(functions.config().stream.key, functions.config().stream.secret); - - -// When a user is deleted from Firebase their associated Stream account is also deleted. -exports.deleteStreamUser = functions.auth.user().onDelete((user, context) => { - return serverClient.deleteUser(user.uid); -}); - -// Create a Stream user and return auth token. -exports.createStreamUserAndGetToken = functions.https.onCall(async (data, context) => { - // Checking that the user is authenticated. - if (!context.auth) { - // Throwing an HttpsError so that the client gets the error details. - throw new functions.https.HttpsError('failed-precondition', 'The function must be called ' + - 'while authenticated.'); - } else { - try { - // Create user using the serverClient. - await serverClient.upsertUser({ - id: context.auth.uid, - name: context.auth.token.name, - email: context.auth.token.email, - image: context.auth.token.image, - }); - - /// Create and return user auth token. - return serverClient.createToken(context.auth.uid); - } catch (err) { - console.error(`Unable to create user with ID ${context.auth.uid} on Stream. Error ${err}`); - // Throwing an HttpsError so that the client gets the error details. - throw new functions.https.HttpsError('aborted', "Could not create Stream user"); - } - } -}); - -// Get Stream user token. -exports.getStreamUserToken = functions.https.onCall((data, context) => { - // Checking that the user is authenticated. - if (!context.auth) { - // Throwing an HttpsError so that the client gets the error details. - throw new functions.https.HttpsError('failed-precondition', 'The function must be called ' + - 'while authenticated.'); - } else { - try { - return serverClient.createToken(context.auth.uid); - } catch (err) { - console.error(`Unable to get user token with ID ${context.auth.uid} on Stream. Error ${err}`); - // Throwing an HttpsError so that the client gets the error details. - throw new functions.https.HttpsError('aborted', "Could not get Stream user"); - } - } -}); - -// Revoke the authenticated user's Stream chat token. -exports.revokeStreamUserToken = functions.https.onCall((data, context) => { - // Checking that the user is authenticated. - if (!context.auth) { - // Throwing an HttpsError so that the client gets the error details. - throw new functions.https.HttpsError('failed-precondition', 'The function must be called ' + - 'while authenticated.'); - } else { - try { - return serverClient.revokeUserToken(context.auth.uid); - } catch (err) { - console.error(`Unable to revoke user token with ID ${context.auth.uid} on Stream. Error ${err}`); - // Throwing an HttpsError so that the client gets the error details. - throw new functions.https.HttpsError('aborted', "Could not get Stream user"); - } - } -}); - -``` - -First, you import the necessary packages and call `admin.initializeApp();` to set up Firebase cloud functions. - -Next, you initialize the **StreamChat** server client by calling `StreamChat.getInstance`. This function requires your Stream app's -**token** and **secret**. You can get this from the Stream Dashboard for your app. - -Set these values as environment data on Firebase Functions. - -```bash - firebase functions:config:set stream.key="app-key" stream.secret="app-secret" -``` - -*Replace **app-key** and **app-secret** with the values for your Stream app.* - -This creates an object of **stream** with properties **key** and **secret**. To access this environment -data use `functions.config().stream.key` and `functions.config().stream.secret`. - -See the [Firebase environment configuration](https://firebase.google.com/docs/functions/config-env) -documentation for additional information. - -To deploy these functions to Firebase, run: - -```bash -firebase deploy --only functions -``` - -### Create a Stream User and Get the User's Token - -In the `createStreamUserAndGetToken` cloud function you create an `onCall` HTTPS handler, which exposes -a cloud function that can be envoked from your Flutter app. - -```js -// Create a Stream user and return auth token. -exports.createStreamUserAndGetToken = functions.https.onCall(async (data, context) => { - // Checking that the user is authenticated. - if (!context.auth) { - // Throwing an HttpsError so that the client gets the error details. - throw new functions.https.HttpsError('failed-precondition', 'The function must be called ' + - 'while authenticated.'); - } else { - try { - // Create user using the serverClient. - await serverClient.upsertUser({ - id: context.auth.uid, - name: context.auth.token.name, - email: context.auth.token.email, - image: context.auth.token.image, - }); - - /// Create and return user auth token. - return serverClient.createToken(context.auth.uid); - } catch (err) { - console.error(`Unable to create user with ID ${context.auth.uid} on Stream. Error ${err}`); - // Throwing an HttpsError so that the client gets the error details. - throw new functions.https.HttpsError('aborted', "Could not create Stream user"); - } - } -}); -``` - -This function first does a check to see that the client that calls it is authenticated, -by ensuring that `context.auth` is not null. If it is null, then it throws an `HttpsError` with a descriptive -message. This error can be caught in your Flutter application. - -If the caller is authenticated the function proceeds to use the `serverClient` to create a new Stream Chat -user by calling the `upsertUser` method and passing in some user data. It uses the authenticated caller's **uid** as an **id**. - -After the user is created it generates a token for that user. This token is then returned to the caller. - -To call this from Flutter, you will need to use the `cloud_functions` package. - -Update the **createAccount** method in your Flutter code to the following: +In the code sample given above, in the `initState` method, you're also creating a Firebase function instance: ```dart -Future createAccount() async { - // Create Firebase account - await auth.createUserWithEmailAndPassword(email: email, password: password); - print('Firebase account created'); +functions = FirebaseFunctions.instanceFor(region: 'us-central1'); +``` - // Create Stream user and get token - final callable = functions.httpsCallable('createStreamUserAndGetToken'); - final results = await callable(); - print('Stream account created, token: ${results.data}'); +Be sure to set the region to be the same as what you configured your Firebase Chat Auth Extension to use. + +#### Create a User and Get the User's Stream Token + +Let's explore the code to create a new user and retrieve the frontend token. + +The `_createAccountAndGetToken` method does the following: + +1. Creates a user on Firebase using the demo credentials +2. An **internal** cloud function is automatically triggered on Firebase to create a new user within your Stream backend app +3. Call the `_getToken` method + +Let's explore the `_getToken` method: + +```dart +/// Gets a Stream user token for the currently authenticated user +/// +/// Need to be authenticated to Firebase to call this function. +Future _getToken() async { + try { + final result = await functions + .httpsCallable('ext-auth-chat-getStreamUserToken') + .call(); + + print('Stream user token retrieved: ${result.data}'); + return result.data; + } on FirebaseFunctionsException catch (error) { + print(error.code); + print(error.details); + print(error.message); + } + return null; } ``` -Calling this method will do the following: -1. Create a new Firebase User and authenticate that user. -2. Call the `createStreamUserAndGetToken` cloud function and get the Stream user token for the authenticated user. +:::note +The user needs to be authenticated to call this cloud function. Otherwise, the function will throw +a **failed-precondition** error. +::: -As you can see, calling a cloud function is easy and will also send all the necessary user authentication information (such as the UID) +This method calls the `ext-auth-chat-getStreamUserToken` cloud function, which was created automatically when the Stream Firebase extension was installed. +This cloud function will look at the calling user and if they are authenticated to Firebase it will create and return a new frontend user token. + +As you can see, calling a cloud function is easy and will also send all the necessary Firebase user authentication information (such as the user UID) in the request. -Once you have the Stream user token, you can authenticate your Stream Chat user as you normally would. +Once you have the Stream user token, you can authenticate your Stream Chat user as you normally would. Please see our [initialization documention](https://getstream.io/chat/docs/flutter-dart/init_and_users/?language=dart) for more information. -Please see our [initialization documention](https://getstream.io/chat/docs/flutter-dart/init_and_users/?language=dart) for more information. - -As you can see below, the User ID matches on both Firebase's and Stream's user database. +As you can see below, the **User ID** matches in both Firebase's and Stream's user database. ##### Firebase Authentication Database @@ -367,82 +364,66 @@ As you can see below, the User ID matches on both Firebase's and Stream's user d ![Stream chat user database new account created](../assets/stream_chat_user_database.jpg) +#### Login and Get the User's Stream Token -### Get the Stream User Token - -The `getStreamUserToken` cloud function is very similar to the `createStreamUserAndGetToken` function. The only difference is -that it only creates a user token and does not create a new user account on Stream. - -Update the **signIn** method in your Flutter code to the following: +Lets explore the process of user login and token generation within the `_signInAndGetToken` method: ```dart -Future signIn() async { - // Sign in with Firebase - await auth.signInWithEmailAndPassword(email: email, password: password); - print('Firebase signed in'); - - // Get Stream user token - final callable = functions.httpsCallable('getStreamUserToken'); - final results = await callable(); - print('Stream user token retrieved: ${results.data}'); +/// Sign in with Firebase and retrieve Stream chat token. +Future _signInAndGetToken() async { + try { + await auth.signInWithEmailAndPassword(email: email, password: password); + print('Firebase signed in'); + return _getToken(); + } on FirebaseAuthException catch (error) { + print(error.code); + print(error.message); + } + return null; } ``` -Calling this method will do the following: -1. Sign in using Firebase Auth. -2. Call the `getStreamUserToken` cloud function to get a Stream user token. +This process is similar to account creation. Here you sign in using Firebase, and if successful proceed to create a Stream frontend token using the `_getToken` method - which we already explored. -:::note -The user needs to be authenticated to call this cloud function. Otherwise, the function will throw -the **failed-precondition** error that you specified. -::: +#### Sign Out and Revoke Stream User Token -### Revoke Stream User Token +You probably also want to revoke the Stream user token if you sign out from Firebase. -You may also want to revoke the Stream user token if you sign out from Firebase. +Let's explore the `_signOutAndRevokeToken` method: -Update the `signOut` method in your Flutter code to the following: +1. This calls, and awaits, the `_revokeToken` method +2. Signs out of Firebase + +In the `_revokeToken` method you execute the **ext-auth-chat-revokeStreamUserToken** cloud function: ```dart -Future signOut() async { - // Revoke Stream user token. - final callable = functions.httpsCallable('revokeStreamUserToken'); - await callable(); - print('Stream user token revoked'); - - // Sign out Firebase. - await auth.signOut(); - print('Firebase signed out'); +/// Revoke Stream user token for current authenticated user. +/// +/// Need to be authenticated to Firebase to call this function. +Future _revokeToken() async { + try { + await FirebaseFunctions.instance + .httpsCallable('ext-auth-chat-revokeStreamUserToken') + .call(); + print('Stream user token revoked'); + } on FirebaseFunctionsException catch (error) { + print(error.code); + print(error.details); + print(error.message); + } } ``` + :::note -Call the cloud function before signing out from Firebase. +You need to call the cloud function before signing out off Firebase. That is why we `await` the result of `_revokeToken` within `_signOutAndRevokeToken`. ::: -### Delete Stream User +#### Delete Firebase and Stream User -When deleting a Firebase user account, it would make sense also to delete the -associated Stream user account. - -The cloud function looks like this: - -```js -// When a user is deleted from Firebase their associated Stream account is also deleted. -exports.deleteStreamUser = functions.auth.user().onDelete((user, context) => { - return serverClient.deleteUser(user.uid); -}); -``` - -In this function, you are listening to delete events on Firebase auth. When an account is deleted, this function will be triggered, and you can get the -user's **uid** and call the `deleteUser` method on the `serverClient`. - -This is not an external cloud function; it can only be triggered when an -account is deleted. +When deleting a Firebase user account, the **ext-auth-chat-deleteStreamUser** cloud function is automatically triggered. This is not an external cloud function; it can only be triggered when an +account is deleted on Firebase itself. ### Conclusion -In this guide, you have seen how to securely create Stream Chat tokens using +In this guide, you have seen how to quickly and securely create Stream Chat tokens using Firebase Authentication and Cloud Functions. - -The principles shown in this guide can be applied to your preferred authentication -provider and cloud architecture of choice. \ No newline at end of file From 12e5020ce475d6366d2ea31cd03632a7b134fb17 Mon Sep 17 00:00:00 2001 From: Gordon Date: Tue, 2 Aug 2022 10:43:11 +0200 Subject: [PATCH 08/13] docs: add guide to initialize stream chat (#1290) --- .../initialize_stream_chat_widget_tree.mdx | 696 ++++++++++++++++++ 1 file changed, 696 insertions(+) create mode 100644 docusaurus/docs/Flutter/guides/initialize_stream_chat_widget_tree.mdx diff --git a/docusaurus/docs/Flutter/guides/initialize_stream_chat_widget_tree.mdx b/docusaurus/docs/Flutter/guides/initialize_stream_chat_widget_tree.mdx new file mode 100644 index 00000000..13ad048d --- /dev/null +++ b/docusaurus/docs/Flutter/guides/initialize_stream_chat_widget_tree.mdx @@ -0,0 +1,696 @@ +--- +id: initialize_stream_chat_widget_tree +sidebar_position: 15 +title: Initialize Stream Chat in Part of the Widget Tree +--- + +If you’re creating a full-scale chat application, you probably want to have Stream Chat Flutter initialized at the top of your widget tree and the Stream user connected as soon as they open the application. + +However, if you only need chat functionality in a part of your application, then it’ll be better to delay Stream Chat initialization to when it’s needed. +This guide demonstrates three alternative ways for you to initialize Stream Chat Flutter for a part of your widget tree and to only connect a user when needed. + +## What To Keep In Mind? + +Before investigating potential solutions, let’s first take a look at the relevant Stream Chat widgets and classes. + +Most of the Stream Chat Flutter UI widgets rely on having a [StreamChat](https://getstream.io/chat/docs/sdk/flutter/stream_chat_flutter/stream_chat_and_theming/) ancestor in the widget tree. +The **StreamChat** widget is an [InheritedWidget](https://api.flutter.dev/flutter/widgets/InheritedWidget-class.html) that exposes the **StreamChatClient** through **BuildContext**. +This widget also initializes the [StreamChatCore](../stream_chat_flutter_core/stream_chat_core.mdx) widget and the **StreamChatTheme**. + +**StreamChatCore** is a **StatefulWidget** used to react to life cycle changes and system updates. +When the app goes into the background, the WebSocket connection is closed. +Conversely, a new connection is initiated when the app is back in the foreground. + +What is important to take note of is that **a connection is only established if a user is connected**. + +This means that if you have not yet called `client.connectUser(user, token)`, no connection will be made, and only background listeners will be registered to determine the app's foreground state. + +## Option 1: Builder and Connect/Disconnect User + +This option requires you to wrap your whole application with the **StreamChat** widget and to call `connectUser` and `disconnectUser` as needed. + +This option is the easiest, however, it requires **StreamChat** to be at the top of each route and as a result, will have a slight overhead as it’ll create the above-mentioned Stream widgets that may not yet be needed. + +### Exposing the StreamChat Widget + +First, you must expose the client and base Stream Chat widgets to the whole application. + +```dart +void main() { + final client = StreamChatClient( + 'q29npdvqjr99', + logLevel: Level.OFF, + ); + + runApp(MyApp(client: client)); +} + +class MyApp extends StatelessWidget { + const MyApp({ + Key? key, + required this.client, + }) : super(key: key); + + final StreamChatClient client; + + @override + Widget build(BuildContext context) { + return MaterialApp( + builder: (context, child) { + return StreamChat(client: client, child: child); + }, + home: const HomeScreen(), + ); + } +} +``` + +In the above code, you: + +1. Create a **StreamChatClient** instance +2. Pass the instance to the **StreamChat** widget +3. Expose **StreamChat** to the whole application within the **MaterialApp** `builder` + +A few important things to note: + +- The `builder` wraps the **StreamChat** widget for every route of our application. No matter where you are in the widget tree, you’ll be able to call `StreamChat.of(context)`. +- The state will only be created once for our application, as **StreamChat** is a **StatefulWidget** and the position of **StreamChat** in the widget tree remains the same throughout the application lifecycle. +- No connection will be made until you call `connectUser`. + +### Connecting and Disconnecting Users + +In **MaterialApp** above, the home page is set to **HomeScreen**. This screen could look something like the following: + +```dart +class HomeScreen extends StatelessWidget { + const HomeScreen({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(), + body: const Center( + child: Text('Home Screen'), + ), + floatingActionButton: FloatingActionButton( + onPressed: () { + Navigator.of(context).push( + MaterialPageRoute(builder: (context) => const ChatSetup())); + }, + child: const Icon( + Icons.message, + ), + ), + ); + } +} +``` + +This screen shows a floating action button that on click navigates the user to the **ChatSetup**. We want to connect and disconnect a Stream user only when they go to the chat setup screen. + +```dart +class ChatSetup extends StatefulWidget { + const ChatSetup({ + super.key, + }); + + @override + State createState() => _ChatSetupState(); +} + +class _ChatSetupState extends State { + late final Future connectionFuture; + late final client = StreamChat.of(context).client; + + @override + void initState() { + super.initState(); + connectionFuture = client.connectUser( + User(id: 'USER_ID'), + 'TOKEN', + ); + } + + @override + void dispose() { + client.disconnectUser(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(), + body: FutureBuilder( + future: connectionFuture, + builder: (BuildContext context, AsyncSnapshot snapshot) { + switch (snapshot.connectionState) { + case ConnectionState.waiting: + return const Center( + child: CircularProgressIndicator(), + ); + default: + if (snapshot.hasError) { + return Text('Error: ${snapshot.error}'); + } else { + return const ChannelListPage(); + } + } + }, + ), + ); + } +} +``` + +Within `initState` you call `connectUser`; once the future for `connectUser` has completed a connection to the Stream API is established, you can then display the relevant Stream Chat UI widgets. + +Once the **ChatScreen** widget is disposed of, then `disconnectUser` will be called within the `dispose` method. + +### Caution + +In this example, `disconnectUser` will **only** be called when the **ChatSetup** widget is disposed. + +You need to ensure that this widget (route) is completely disposed of, or you need to call `disconnectUser` and `connectUser` manually when navigating to relevant parts of your application. + +For example, let’s say you have a button within one of the chat screens to navigate to a completely different part of your app, then you want to make sure the **ChatScreen** route is disposed of by forcing it to be removed: + +```dart +Navigator.of(context).pushAndRemoveUntil( + MaterialPageRoute( + builder: ((context) => const HomeScreen()), + ), + (Route route) => false, +); +``` + +Or let’s say you wanted to pop back to the first route: + +```dart +Navigator.of(context).popUntil((route) => route.isFirst); +``` + +Both of these will ensure the route is disposed of and the user is disconnected as a result. + +## Option 2: A Nested Navigator + +Another approach would be to introduce a new [Navigator](https://api.flutter.dev/flutter/widgets/Navigator-class.html). +This has the benefit that everything related to Stream chat is contained to a specific part of the widget tree. + +### Defining Routes and Subroutes + +In this example, our application has the following routes. + +```dart +const routeHome = '/'; +const routePrefixChat = '/chat/'; +const routeChatHome = '$routePrefixChat$routeChatChannels'; +const routeChatChannels = 'chat_channels'; +const routeChatChannel = 'chat_channel'; +``` + +For the `/chat/` subroutes (**routePrefixChat**), this approach initializes Stream Chat in our application and introduces a nested navigator. + +Let’s explore the code: + +```dart +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatefulWidget { + const MyApp({ + Key? key, + }) : super(key: key); + + @override + State createState() => _MyAppState(); +} + +class _MyAppState extends State { + final GlobalKey navigatorKey = GlobalKey(); + + @override + Widget build(BuildContext context) { + return Provider.value( + value: navigatorKey, + child: MaterialApp( + navigatorKey: navigatorKey, + initialRoute: routeHome, + onGenerateRoute: (settings) { + late Widget page; + if (settings.name == routeHome) { + page = const HomeScreen(); + } else if (settings.name!.startsWith(routePrefixChat)) { + final subRoute = settings.name!.substring(routePrefixChat.length); + page = ChatSetup( + setupChatRoute: subRoute, + ); + } else { + throw Exception('Unknown route: ${settings.name}'); + } + + return MaterialPageRoute( + builder: (context) { + return page; + }, + settings: settings, + ); + }, + ), + ); + } +} +``` + +In the above code you’re: + +1. Creating a navigator key, passing it to `MaterialApp`, and exposing it to the whole application using Provider (you can expose it however you want). +2. Creating `onGenerateRoute` that specifies what page to show depending on the route. Most importantly, if the route contains the **routePrefixChat,** it navigates to the **ChatSetup** page and passes in the remainder of the route. + +For example, `Navigator.pushNamed(context, routeChatHome)` will navigate to the **ChatSetup** page and pass in the subroute **routeChatChannels.** + +### Stream Chat Initialization, User Connection, and Nested Navigation + +Within the **ChatSetup** widget, we’ll initialize Stream chat, connect a user, and create a new Navigator that handles the sub-navigation for the chat-specific pages. + +```dart +class ChatSetup extends StatefulWidget { + const ChatSetup({Key? key, required this.setupChatRoute}) : super(key: key); + + final String setupChatRoute; + + @override + State createState() => _ChatSetupState(); +} + +class _ChatSetupState extends State { + late final Future connectionFuture; + late final client = StreamChatClient( + 'KEY', + logLevel: Level.OFF, + ); + + @override + void initState() { + super.initState(); + connectionFuture = client.connectUser( + User(id: 'USER_ID'), + 'TOKEN', + ); + } + + @override + void dispose() { + client.disconnectUser(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Material( + child: StreamChat( + client: client, + child: FutureBuilder( + future: connectionFuture, + builder: (BuildContext context, AsyncSnapshot snapshot) { + switch (snapshot.connectionState) { + case ConnectionState.waiting: + return const Center( + child: CircularProgressIndicator(), + ); + default: + if (snapshot.hasError) { + return Text('Error: ${snapshot.error}'); + } else { + return Navigator( + initialRoute: widget.setupChatRoute, + onGenerateRoute: _onGenerateRoute, + ); + } + } + }, + ), + ), + ); + } + + Route _onGenerateRoute(RouteSettings settings) { + late Widget page; + switch (settings.name) { + case routeChatChannels: + page = ChannelListPage( + client: client, + ); + break; + case routeChatChannel: + final channel = settings.arguments as Channel; + page = StreamChannel( + channel: channel, + child: const ChannelPage(), + ); + break; + default: + throw Exception('Unknown route: ${settings.name}'); + } + return MaterialPageRoute( + builder: (context) { + return page; + }, + settings: settings, + ); + } +} +``` + +This **ChatSetup** widget is similar to what it was in the first option, the only difference is that we’re also introducing a nested navigator and handling those nested routes. + +The steps for the above code are: + +1. Create a **StreamChatClient** instance +2. Call `connectUser` within `initState` and await the result using a **FutureBuilder** +3. Introduce a **StreamChat** widget into the widget tree +4. Introduce a new **Navigator** for the chat-specific routes +5. Call `disconnectUser` within `dispose` + +### Displaying Stream Chat UI Widgets and Global Navigation + +Then finally, the **ChannelListPage** could look something like the following: + +```dart +class ChannelListPage extends StatefulWidget { + const ChannelListPage({ + super.key, + required this.client, + }); + + final StreamChatClient client; + + @override + State createState() => _ChannelListPageState(); +} + +class _ChannelListPageState extends State { + late final _controller = StreamChannelListController( + client: widget.client, + filter: Filter.in_( + 'members', + [StreamChat.of(context).currentUser!.id], + ), + sort: const [SortOption('last_message_at')], + ); + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + void _popChatPages() { + final nav = context.read>(); + nav.currentState!.pop(); + } + + @override + Widget build(BuildContext context) { + return WillPopScope( + onWillPop: () async { + _popChatPages(); + return true; + }, + child: Scaffold( + appBar: AppBar( + leading: BackButton( + onPressed: () { + _popChatPages(); + }, + ), + ), + body: RefreshIndicator( + onRefresh: _controller.refresh, + child: StreamChannelListView( + controller: _controller, + onChannelTap: (channel) { + Navigator.pushNamed(context, routeChatChannel, + arguments: channel); + }, + ), + ), + ), + ); + } +} +``` + +There are two important things to note in the above code: + +- We’re accessing the global **NavigatorState** using Provider and calling `pop()` on the back press. This will ensure that this entire route is disposed of and that the Stream connection is closed. +- Within `onChannelTap` we’re calling `pushNamed` and passing in the route to display a single channel page. This uses the navigator introduced in **ChatSetup**, which is the closest navigator within the widget tree. + +A few things to take note of: + +- You’ll always need to access the global navigator if you want to dispose of this route. you need to ensure that this route is popped or replaced, otherwise, the Stream connection will remain active for as long as the chat route is on the stack (or manually disconnected). + +## Option 3: Navigator 2.0 - Using GoRouter + +This final example will be a combination of the first two options. The following code is an example of how to initialize Stream Chat in a part of the widget tree using the [GoRouter package](https://pub.dev/packages/go_router). This solution will change depending on how you do routing in your Flutter application and which package (if any) you use. + +### Application Routes and Conditional Stream Initialization + +For this example we have the following routes and subroutes: + +```dart +|_ '/' -> home page + |_ 'settings/' - settings page + |_ 'chat/' - chat home, shows the channels list page + |_ 'channel/' - specific channel page +``` + +In the **MyApp** widget, we’ll initialize **GoRouter** and the **StreamChatClient**. +However, we will only expose the **StreamChat** widget for certain routes. +Additionally, we’ll create a **ChatSetup** widget that connects and disconnects the user. +This widget will also **only** be injected for the `/chat` routes. + +```dart +class MyApp extends StatefulWidget { + const MyApp({ + Key? key, + }) : super(key: key); + + @override + State createState() => _MyAppState(); +} + +class _MyAppState extends State { + final _client = StreamChatClient( + 'q29npdvqjr99', + logLevel: Level.OFF, + ); + bool wasPreviousRouteChat = false; + + late final _router = GoRouter( + initialLocation: '/', + navigatorBuilder: (context, state, child) { + if (state.location.startsWith('/chat')) { + wasPreviousRouteChat = true; + return StreamChat( + client: _client, + child: ChatSetup(client: _client, child: child), + ); + } else { + if (wasPreviousRouteChat) { + wasPreviousRouteChat = false; + return StreamChat( + client: _client, + child: child, + ); + } else { + return child; + } + } + }, + routes: [ + GoRoute( + path: '/', + builder: (context, state) => const HomeScreen(), + routes: [ + GoRoute( + path: 'settings', + builder: (context, state) => const SettingsPage(), + ), + GoRoute( + path: 'chat', + builder: (context, state) => const ChannelListPage(), + routes: [ + GoRoute( + path: 'channel', + builder: (context, state) { + final channel = state.extra as Channel; + return StreamChannel( + channel: channel, + child: const ChannelPage(), + ); + }, + ), + ], + ), + ], + ), + ], + ); + + @override + Widget build(BuildContext context) { + return MaterialApp.router( + routeInformationParser: _router.routeInformationParser, + routeInformationProvider: _router.routeInformationProvider, + routerDelegate: _router.routerDelegate, + ); + } +} +``` + +If you’re unfamiliar with GoRouter it will help to first read the documentation and then come back to this guide. + +There are a few important things to note in the above code: + +- Define our routes and subroutes +- Specify the initial route with `initialLocation` +- Use the `navigatorBuilder` to wrap certain routes with **StreamChat** and **ChatSetup**. + - The `wasPreviousRouteChat` \***\*boolean is used to determine if the previous route was a chat route. This is important because when you press the back button from the `/chat` route and navigate to the `/` route, the **StreamChat** widget still needs to be accessible while the navigation transition occurs. However, if you then navigate to the `/setting` route, you no longer need the **StreamChat\*\* widget and can safely remove it. + +### Navigating With GoRouter + +Within the **HomeScreen** you can create a button that on press navigates to the `/chat` route: + +```dart +GoRouter.of(context).go('/chat'); +``` + +### Connecting and Disconnecting Users + +Same as before, we’ll use the **ChatSetup** widget to connect and disconnect a user. +This time the widget also takes in a **child** widget to display once the connection is finished. +The child widget is dependent on the route we’re navigating to. + +```dart +class ChatSetup extends StatefulWidget { + const ChatSetup({ + Key? key, + required this.client, + required this.child, + }) : super(key: key); + + final StreamChatClient client; + final Widget child; + + @override + State createState() => _ChatSetupState(); +} + +class _ChatSetupState extends State { + late final Future connectionFuture; + + @override + void initState() { + super.initState(); + connectionFuture = widget.client.connectUser( + User(id: 'USER_ID'), + 'TOKEN', + ); + } + + @override + void dispose() { + widget.client.disconnectUser(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Material( + child: FutureBuilder( + future: connectionFuture, + builder: (BuildContext context, AsyncSnapshot snapshot) { + switch (snapshot.connectionState) { + case ConnectionState.waiting: + return const Center( + child: CircularProgressIndicator(), + ); + default: + if (snapshot.hasError) { + return Text('Error: ${snapshot.error}'); + } else { + return widget.child; + } + } + }, + ), + ); + } +} +``` + +This will connect the Stream chat user within `initState` and disconnect the user on `dispose`. This is similar to the previous examples we explored. + +### Displaying the Stream UI Widgets + +The **ChannelListPage** can look something like the following: + +```dart +class ChannelListPage extends StatefulWidget { + const ChannelListPage({ + super.key, + }); + + @override + State createState() => _ChannelListPageState(); +} + +class _ChannelListPageState extends State { + late final client = StreamChat.of(context).client; + late final _controller = StreamChannelListController( + client: client, + filter: Filter.in_( + 'members', + [StreamChat.of(context).currentUser!.id], + ), + sort: const [SortOption('last_message_at')], + ); + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(), + body: RefreshIndicator( + onRefresh: _controller.refresh, + child: StreamChannelListView( + controller: _controller, + onChannelTap: (channel) { + GoRouter.of(context).go('/chat/channel', extra: channel); + }, + ), + ), + ); + } +} +``` + +This is the same as before, the only difference is that the navigation is slightly different; now we’re navigating to the `/chat/channel` route for individual channel pages. + +## Conclusion + +This guide demonstrated three different ways to initialize Stream Chat in a part of the Flutter widget tree. + +There are two key takeaways + +1. Accessing **StreamChat** depends on your location in the widget tree +2. How you ultimately decide to expose **StreamChat** and connect users will be up to your application architecture and how you manage routing. + +The above are only examples that can be refined and tweaked to suit your needs. From 754efba818d897927fc869f148ebb905fea43464 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 16 Sep 2022 12:15:18 +0200 Subject: [PATCH 09/13] fix(doc): fix link --- .../docs/Flutter/stream_chat_flutter/stream_user_list_view.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_user_list_view.mdx b/docusaurus/docs/Flutter/stream_chat_flutter/stream_user_list_view.mdx index 95bfbac9..6f424e38 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter/stream_user_list_view.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter/stream_user_list_view.mdx @@ -17,7 +17,7 @@ selecting users to add in a channel, etc. The `StreamUserListView` displays a li of users. :::note -Make sure to check the [StreamUserListController](./stream_user_list_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamUserListView`. +Make sure to check the [StreamUserListController](../stream_chat_flutter_core/stream_user_list_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamUserListView`. ::: ### Basic Example From 1e40294ec9de2e29f8f02edb974655da7ee2a4a3 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 19 Sep 2022 10:46:01 +0200 Subject: [PATCH 10/13] fix(doc): add missing locales --- .../version-3.x.x/Flutter/guides/adding_localization.mdx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_localization.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_localization.mdx index c61f26c7..b4e56efb 100644 --- a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_localization.mdx +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_localization.mdx @@ -32,6 +32,10 @@ At the moment we support the following languages: - [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) +- [Portuguese](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_pt.dart) +- [German](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.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 From d0e06d96d87b47a32202a5f115c1f529222fb80e Mon Sep 17 00:00:00 2001 From: Sacha Arbonel Date: Mon, 31 Oct 2022 10:05:30 -0400 Subject: [PATCH 11/13] Docs: reorganize sidebar docs + fix broken links (#1369) * reorganize sidebar docs * fix broken links * tweaks --- .../docs/Flutter/01-basics/_category_.json | 3 +++ .../{basics => 01-basics}/choose_package.mdx | 4 +++- .../{basics => 01-basics}/introduction.mdx | 4 ++-- .../versioning_policy.mdx | 0 .../01-customize_message_widget.mdx} | 15 ++++++------ .../02-customize_text_messages.mdx} | 5 ++-- .../03-customize_message_actions.mdx} | 5 ++-- .../04-adding_custom_attachments.mdx} | 9 ++++--- .../05-customize_attachment_picker_modal.mdx} | 4 ++-- .../06-autocomplete_triggers.mdx} | 4 ++-- .../07-slidable_channel_list_preview.mdx} | 7 +++--- .../01-custom-widgets/_category_.json | 3 +++ .../Flutter/02-customization/_category_.json | 3 +++ .../stream_chat_and_theming.mdx | 4 ++-- .../03-stream_chat_flutter/_category_.json | 3 +++ .../introduction.mdx | 0 .../setup.mdx | 0 .../stream_channel_grid_view.mdx | 0 .../stream_channel_header.mdx | 0 .../stream_channel_list_header.mdx | 0 .../stream_channel_list_view.mdx | 2 +- .../stream_member_grid_view.mdx | 0 .../stream_member_list_view.mdx | 2 +- .../stream_message_input.mdx | 2 +- .../stream_message_list_view.mdx | 0 .../stream_message_search_grid_view.mdx | 0 .../stream_message_search_list_view.mdx | 2 +- .../stream_message_widget.mdx | 0 .../stream_user_grid_view.mdx | 0 .../stream_user_list_view.mdx | 2 +- .../_category_.json | 3 +++ .../introduction.mdx | 0 .../lazy_load_scroll_view.mdx | 0 .../message_list_core.mdx | 0 .../paged_value_listenable_builder.mdx | 0 .../setup.mdx | 0 .../stream_channel_list_controller.mdx | 2 +- .../stream_channel_list_event_handler.mdx | 0 .../stream_chat_core.mdx | 0 .../stream_member_list_controller.mdx | 2 +- .../stream_message_input_controller.mdx | 2 +- .../stream_message_search_list_controller.mdx | 2 +- .../stream_user_list_controller.mdx | 2 +- .../01-understanding_filters.mdx} | 3 +-- .../02-adding_local_data_persistence.mdx} | 5 ++-- ...r_token_generation_with_firebase_auth.mdx} | 3 +-- .../04-adding_localization.mdx} | 5 ++-- .../05-push-notifications/_category_.json | 3 +++ .../adding_push_notifications.mdx | 14 +++++------ .../adding_push_notifications_v2.mdx | 8 +++---- .../06-end_to_end_chat_encryption.mdx} | 5 ++-- .../07-error_reporting_with_sentry.mdx} | 3 +-- .../08-adding_chat_to_video_livestreams.mdx} | 3 +-- .../05-guides/08-migrations/_category_.json | 3 +++ .../08-migrations}/migration_guide_4_0.mdx | 24 +++++++++---------- .../08-migrations}/migration_guide_5_0.mdx | 16 ++++++------- .../docs/Flutter/05-guides/_category_.json | 3 +++ .../docs/Flutter/basics/_category_.json | 4 ---- .../docs/Flutter/guides/_category_.json | 4 ---- .../stream_chat_flutter/_category_.json | 4 ---- .../stream_chat_flutter_core/_category_.json | 4 ---- .../Flutter/guides/autocomplete_triggers.mdx | 2 +- .../stream_channel_list_view.mdx | 2 +- .../stream_message_input.mdx | 2 +- .../stream_message_search_list_view.mdx | 2 +- .../stream_user_list_view.mdx | 2 +- 66 files changed, 110 insertions(+), 110 deletions(-) create mode 100644 docusaurus/docs/Flutter/01-basics/_category_.json rename docusaurus/docs/Flutter/{basics => 01-basics}/choose_package.mdx (97%) rename docusaurus/docs/Flutter/{basics => 01-basics}/introduction.mdx (98%) rename docusaurus/docs/Flutter/{basics => 01-basics}/versioning_policy.mdx (100%) rename docusaurus/docs/Flutter/{guides/customize_message_widget.mdx => 02-customization/01-custom-widgets/01-customize_message_widget.mdx} (94%) rename docusaurus/docs/Flutter/{guides/customize_text_messages.mdx => 02-customization/01-custom-widgets/02-customize_text_messages.mdx} (98%) rename docusaurus/docs/Flutter/{guides/customize_message_actions.mdx => 02-customization/01-custom-widgets/03-customize_message_actions.mdx} (95%) rename docusaurus/docs/Flutter/{guides/adding_custom_attachments.mdx => 02-customization/01-custom-widgets/04-adding_custom_attachments.mdx} (97%) rename docusaurus/docs/Flutter/{guides/customize_attachment_picker_modal.mdx => 02-customization/01-custom-widgets/05-customize_attachment_picker_modal.mdx} (97%) rename docusaurus/docs/Flutter/{guides/autocomplete_triggers.mdx => 02-customization/01-custom-widgets/06-autocomplete_triggers.mdx} (93%) rename docusaurus/docs/Flutter/{guides/slidable_channel_list_preview.mdx => 02-customization/01-custom-widgets/07-slidable_channel_list_preview.mdx} (96%) create mode 100644 docusaurus/docs/Flutter/02-customization/01-custom-widgets/_category_.json create mode 100644 docusaurus/docs/Flutter/02-customization/_category_.json rename docusaurus/docs/Flutter/{stream_chat_flutter => 02-customization}/stream_chat_and_theming.mdx (98%) create mode 100644 docusaurus/docs/Flutter/03-stream_chat_flutter/_category_.json rename docusaurus/docs/Flutter/{stream_chat_flutter => 03-stream_chat_flutter}/introduction.mdx (100%) rename docusaurus/docs/Flutter/{stream_chat_flutter => 03-stream_chat_flutter}/setup.mdx (100%) rename docusaurus/docs/Flutter/{stream_chat_flutter => 03-stream_chat_flutter}/stream_channel_grid_view.mdx (100%) rename docusaurus/docs/Flutter/{stream_chat_flutter => 03-stream_chat_flutter}/stream_channel_header.mdx (100%) rename docusaurus/docs/Flutter/{stream_chat_flutter => 03-stream_chat_flutter}/stream_channel_list_header.mdx (100%) rename docusaurus/docs/Flutter/{stream_chat_flutter => 03-stream_chat_flutter}/stream_channel_list_view.mdx (93%) rename docusaurus/docs/Flutter/{stream_chat_flutter => 03-stream_chat_flutter}/stream_member_grid_view.mdx (100%) rename docusaurus/docs/Flutter/{stream_chat_flutter => 03-stream_chat_flutter}/stream_member_list_view.mdx (90%) rename docusaurus/docs/Flutter/{stream_chat_flutter => 03-stream_chat_flutter}/stream_message_input.mdx (93%) rename docusaurus/docs/Flutter/{stream_chat_flutter => 03-stream_chat_flutter}/stream_message_list_view.mdx (100%) rename docusaurus/docs/Flutter/{stream_chat_flutter => 03-stream_chat_flutter}/stream_message_search_grid_view.mdx (100%) rename docusaurus/docs/Flutter/{stream_chat_flutter => 03-stream_chat_flutter}/stream_message_search_list_view.mdx (88%) rename docusaurus/docs/Flutter/{stream_chat_flutter => 03-stream_chat_flutter}/stream_message_widget.mdx (100%) rename docusaurus/docs/Flutter/{stream_chat_flutter => 03-stream_chat_flutter}/stream_user_grid_view.mdx (100%) rename docusaurus/docs/Flutter/{stream_chat_flutter => 03-stream_chat_flutter}/stream_user_list_view.mdx (90%) create mode 100644 docusaurus/docs/Flutter/04-stream_chat_flutter_core/_category_.json rename docusaurus/docs/Flutter/{stream_chat_flutter_core => 04-stream_chat_flutter_core}/introduction.mdx (100%) rename docusaurus/docs/Flutter/{stream_chat_flutter_core => 04-stream_chat_flutter_core}/lazy_load_scroll_view.mdx (100%) rename docusaurus/docs/Flutter/{stream_chat_flutter_core => 04-stream_chat_flutter_core}/message_list_core.mdx (100%) rename docusaurus/docs/Flutter/{stream_chat_flutter_core => 04-stream_chat_flutter_core}/paged_value_listenable_builder.mdx (100%) rename docusaurus/docs/Flutter/{stream_chat_flutter_core => 04-stream_chat_flutter_core}/setup.mdx (100%) rename docusaurus/docs/Flutter/{stream_chat_flutter_core => 04-stream_chat_flutter_core}/stream_channel_list_controller.mdx (97%) rename docusaurus/docs/Flutter/{stream_chat_flutter_core => 04-stream_chat_flutter_core}/stream_channel_list_event_handler.mdx (100%) rename docusaurus/docs/Flutter/{stream_chat_flutter_core => 04-stream_chat_flutter_core}/stream_chat_core.mdx (100%) rename docusaurus/docs/Flutter/{stream_chat_flutter_core => 04-stream_chat_flutter_core}/stream_member_list_controller.mdx (96%) rename docusaurus/docs/Flutter/{stream_chat_flutter_core => 04-stream_chat_flutter_core}/stream_message_input_controller.mdx (95%) rename docusaurus/docs/Flutter/{stream_chat_flutter_core => 04-stream_chat_flutter_core}/stream_message_search_list_controller.mdx (97%) rename docusaurus/docs/Flutter/{stream_chat_flutter_core => 04-stream_chat_flutter_core}/stream_user_list_controller.mdx (97%) rename docusaurus/docs/Flutter/{guides/understanding_filters.mdx => 05-guides/01-understanding_filters.mdx} (98%) rename docusaurus/docs/Flutter/{guides/adding_local_data_persistence.mdx => 05-guides/02-adding_local_data_persistence.mdx} (96%) rename docusaurus/docs/Flutter/{guides/user_token_generation_with_firebase_auth.mdx => 05-guides/03-user_token_generation_with_firebase_auth.mdx} (99%) rename docusaurus/docs/Flutter/{guides/adding_localization.mdx => 05-guides/04-adding_localization.mdx} (98%) create mode 100644 docusaurus/docs/Flutter/05-guides/05-push-notifications/_category_.json rename docusaurus/docs/Flutter/{guides => 05-guides/05-push-notifications}/adding_push_notifications.mdx (97%) rename docusaurus/docs/Flutter/{guides => 05-guides/05-push-notifications}/adding_push_notifications_v2.mdx (97%) rename docusaurus/docs/Flutter/{guides/end_to_end_chat_encryption.mdx => 05-guides/06-end_to_end_chat_encryption.mdx} (99%) rename docusaurus/docs/Flutter/{guides/error_reporting_with_sentry.mdx => 05-guides/07-error_reporting_with_sentry.mdx} (98%) rename docusaurus/docs/Flutter/{guides/adding_chat_to_video_livestreams.mdx => 05-guides/08-adding_chat_to_video_livestreams.mdx} (97%) create mode 100644 docusaurus/docs/Flutter/05-guides/08-migrations/_category_.json rename docusaurus/docs/Flutter/{guides => 05-guides/08-migrations}/migration_guide_4_0.mdx (96%) rename docusaurus/docs/Flutter/{guides => 05-guides/08-migrations}/migration_guide_5_0.mdx (92%) create mode 100644 docusaurus/docs/Flutter/05-guides/_category_.json delete mode 100644 docusaurus/docs/Flutter/basics/_category_.json delete mode 100644 docusaurus/docs/Flutter/guides/_category_.json delete mode 100644 docusaurus/docs/Flutter/stream_chat_flutter/_category_.json delete mode 100644 docusaurus/docs/Flutter/stream_chat_flutter_core/_category_.json diff --git a/docusaurus/docs/Flutter/01-basics/_category_.json b/docusaurus/docs/Flutter/01-basics/_category_.json new file mode 100644 index 00000000..69a9460d --- /dev/null +++ b/docusaurus/docs/Flutter/01-basics/_category_.json @@ -0,0 +1,3 @@ +{ + "label": "Basics" +} \ No newline at end of file diff --git a/docusaurus/docs/Flutter/basics/choose_package.mdx b/docusaurus/docs/Flutter/01-basics/choose_package.mdx similarity index 97% rename from docusaurus/docs/Flutter/basics/choose_package.mdx rename to docusaurus/docs/Flutter/01-basics/choose_package.mdx index 8be73f01..cd311b63 100644 --- a/docusaurus/docs/Flutter/basics/choose_package.mdx +++ b/docusaurus/docs/Flutter/01-basics/choose_package.mdx @@ -1,9 +1,11 @@ --- id: choose_package sidebar_position: 2 -title: Choosing The Right Flutter Package +title: Choosing The Right SDK --- +Choosing The Right Flutter Package + ### Why the SDK is split into different packages Different applications need different levels of customization and integration with the Stream Chat SDK. diff --git a/docusaurus/docs/Flutter/basics/introduction.mdx b/docusaurus/docs/Flutter/01-basics/introduction.mdx similarity index 98% rename from docusaurus/docs/Flutter/basics/introduction.mdx rename to docusaurus/docs/Flutter/01-basics/introduction.mdx index 99170774..93f0572d 100644 --- a/docusaurus/docs/Flutter/basics/introduction.mdx +++ b/docusaurus/docs/Flutter/01-basics/introduction.mdx @@ -2,9 +2,9 @@ slug: / id: introduction sidebar_position: 1 -title: About The Flutter SDK +title: Overview --- -Exploring The Basics Of Stream Chat +About The Flutter SDK ![](../assets/sdk_title.png) diff --git a/docusaurus/docs/Flutter/basics/versioning_policy.mdx b/docusaurus/docs/Flutter/01-basics/versioning_policy.mdx similarity index 100% rename from docusaurus/docs/Flutter/basics/versioning_policy.mdx rename to docusaurus/docs/Flutter/01-basics/versioning_policy.mdx diff --git a/docusaurus/docs/Flutter/guides/customize_message_widget.mdx b/docusaurus/docs/Flutter/02-customization/01-custom-widgets/01-customize_message_widget.mdx similarity index 94% rename from docusaurus/docs/Flutter/guides/customize_message_widget.mdx rename to docusaurus/docs/Flutter/02-customization/01-custom-widgets/01-customize_message_widget.mdx index c4878188..93611740 100644 --- a/docusaurus/docs/Flutter/guides/customize_message_widget.mdx +++ b/docusaurus/docs/Flutter/02-customization/01-custom-widgets/01-customize_message_widget.mdx @@ -1,10 +1,9 @@ --- id: customize_message_widget -sidebar_position: 11 -title: Customizing The StreamMessageWidget +title: Message --- -Customizing Text Messages +Customizing Text Messages with the StreamMessageWidget ### Introduction @@ -63,7 +62,7 @@ StreamChatThemeData( ) ``` -![](../assets/message_theming.png) +![](../../assets/message_theming.png) #### Change message text style @@ -79,7 +78,7 @@ StreamMessageThemeData( ) ``` -![](../assets/message_styles.png) +![](../../assets/message_styles.png) #### Change avatar theme @@ -93,7 +92,7 @@ StreamMessageThemeData( ) ``` -![](../assets/message_rounded_avatar.png) +![](../../assets/message_rounded_avatar.png) #### Changing Reaction theme @@ -107,7 +106,7 @@ StreamMessageThemeData( ), ``` -![](../assets/message_reaction_theming.png) +![](../../assets/message_reaction_theming.png) ### Changing Message Actions @@ -133,7 +132,7 @@ StreamMessageWidget( ), ``` -![](../assets/message_widget_actions.png) +![](../../assets/message_widget_actions.png) ### Building attachments diff --git a/docusaurus/docs/Flutter/guides/customize_text_messages.mdx b/docusaurus/docs/Flutter/02-customization/01-custom-widgets/02-customize_text_messages.mdx similarity index 98% rename from docusaurus/docs/Flutter/guides/customize_text_messages.mdx rename to docusaurus/docs/Flutter/02-customization/01-custom-widgets/02-customize_text_messages.mdx index 57b3301d..429fc5e2 100644 --- a/docusaurus/docs/Flutter/guides/customize_text_messages.mdx +++ b/docusaurus/docs/Flutter/02-customization/01-custom-widgets/02-customize_text_messages.mdx @@ -1,7 +1,6 @@ --- id: customize_text_messages -sidebar_position: 6 -title: Customize Text Messages +title: Message List View --- Customizing Text Messages @@ -155,4 +154,4 @@ We can replace the hashtags using RegEx and add links for the MarkdownBody which `_replaceHashtags()` function. Inside the textBuilder, we use the `flutter_markdown` package to build our hashtags as links. -![](../assets/hashtag_example.jpg) +![](../../assets/hashtag_example.jpg) diff --git a/docusaurus/docs/Flutter/guides/customize_message_actions.mdx b/docusaurus/docs/Flutter/02-customization/01-custom-widgets/03-customize_message_actions.mdx similarity index 95% rename from docusaurus/docs/Flutter/guides/customize_message_actions.mdx rename to docusaurus/docs/Flutter/02-customization/01-custom-widgets/03-customize_message_actions.mdx index 12cc7715..31e2b9d5 100644 --- a/docusaurus/docs/Flutter/guides/customize_message_actions.mdx +++ b/docusaurus/docs/Flutter/02-customization/01-custom-widgets/03-customize_message_actions.mdx @@ -1,7 +1,6 @@ --- id: customize_message_actions -sidebar_position: 8 -title: Customize Message Actions +title: Message Actions --- Customizing Message Actions @@ -10,7 +9,7 @@ Customizing Message Actions Message actions pop up in message overlay, when you long-press a message. -![](../assets/message_actions.jpg) +![](../../assets/message_actions.jpg) We have provided granular control over these actions. diff --git a/docusaurus/docs/Flutter/guides/adding_custom_attachments.mdx b/docusaurus/docs/Flutter/02-customization/01-custom-widgets/04-adding_custom_attachments.mdx similarity index 97% rename from docusaurus/docs/Flutter/guides/adding_custom_attachments.mdx rename to docusaurus/docs/Flutter/02-customization/01-custom-widgets/04-adding_custom_attachments.mdx index 559464f7..089dd3e6 100644 --- a/docusaurus/docs/Flutter/guides/adding_custom_attachments.mdx +++ b/docusaurus/docs/Flutter/02-customization/01-custom-widgets/04-adding_custom_attachments.mdx @@ -1,7 +1,6 @@ --- id: adding_custom_attachments -sidebar_position: 3 -title: Adding Custom Attachments +title: Attachments --- Adding Your Own Types Of Attachments To A Message @@ -25,7 +24,7 @@ To do this, let's check out an example to add location sharing to Stream Chat. Let's build an example of location sharing option in the app: -![](../assets/location_sharing_example.jpg) +![](../../assets/location_sharing_example.jpg) * Show a "Share Location" button next to StreamMessageInput Textfield. @@ -174,7 +173,7 @@ StreamMessageListView( This gives us the final location attachment: -![](../assets/location_sharing_example_message.jpg) +![](../../assets/location_sharing_example_message.jpg) Additionally, you can also add a thumbnail if a message has a location attachment (unlike in this case, where we sent the message directly). @@ -264,4 +263,4 @@ StreamMessageInput( And we can see the thumbnails in the StreamMessageInput: -![](../assets/location_sharing_example_message_thumbnail.jpg) +![](../../assets/location_sharing_example_message_thumbnail.jpg) diff --git a/docusaurus/docs/Flutter/guides/customize_attachment_picker_modal.mdx b/docusaurus/docs/Flutter/02-customization/01-custom-widgets/05-customize_attachment_picker_modal.mdx similarity index 97% rename from docusaurus/docs/Flutter/guides/customize_attachment_picker_modal.mdx rename to docusaurus/docs/Flutter/02-customization/01-custom-widgets/05-customize_attachment_picker_modal.mdx index 194e785b..77f727c9 100644 --- a/docusaurus/docs/Flutter/guides/customize_attachment_picker_modal.mdx +++ b/docusaurus/docs/Flutter/02-customization/01-custom-widgets/05-customize_attachment_picker_modal.mdx @@ -1,6 +1,6 @@ --- id: customize_attachment_picker_modal -title: Customizing the Attachment Picker Modal +title: Attachment Picker Modal --- Customizing the Attachment Picker Modal @@ -8,7 +8,7 @@ Customizing the Attachment Picker Modal ### Introduction The Attachment Picker is a modal that allows users to select attachments from their device. -It is generally used when a user taps the attachment button in the [StreamMessageInput](../stream_chat_flutter/message_input.mdx). +It is generally used when a user taps the attachment button in the [StreamMessageInput](../../03-stream_chat_flutter/stream_message_input.mdx). By default, the Attachment Picker provides multiple picker options as per the platform. - For example, on Mobile, the default options are Camera, Gallery, File, and Video. diff --git a/docusaurus/docs/Flutter/guides/autocomplete_triggers.mdx b/docusaurus/docs/Flutter/02-customization/01-custom-widgets/06-autocomplete_triggers.mdx similarity index 93% rename from docusaurus/docs/Flutter/guides/autocomplete_triggers.mdx rename to docusaurus/docs/Flutter/02-customization/01-custom-widgets/06-autocomplete_triggers.mdx index 413d147a..d9a90f39 100644 --- a/docusaurus/docs/Flutter/guides/autocomplete_triggers.mdx +++ b/docusaurus/docs/Flutter/02-customization/01-custom-widgets/06-autocomplete_triggers.mdx @@ -1,13 +1,13 @@ --- id: autocomplete_triggers -title: Adding Custom Autocomplete Triggers +title: Autocomplete Triggers --- Adding Custom Autocomplete Triggers ### Introduction -The [StreamMessageInput](../stream_chat_flutter/message_input.mdx) widget provides a way to add custom autocomplete triggers using the `StreamMessageInput.customAutocompleteTriggers` property. +The [StreamMessageInput](../../03-stream_chat_flutter/stream_message_input.mdx) widget provides a way to add custom autocomplete triggers using the `StreamMessageInput.customAutocompleteTriggers` property. By default we provide autocomplete triggers for mentions and commands, but it's very easy to add your custom ones. diff --git a/docusaurus/docs/Flutter/guides/slidable_channel_list_preview.mdx b/docusaurus/docs/Flutter/02-customization/01-custom-widgets/07-slidable_channel_list_preview.mdx similarity index 96% rename from docusaurus/docs/Flutter/guides/slidable_channel_list_preview.mdx rename to docusaurus/docs/Flutter/02-customization/01-custom-widgets/07-slidable_channel_list_preview.mdx index 5a060fd7..67372ef5 100644 --- a/docusaurus/docs/Flutter/guides/slidable_channel_list_preview.mdx +++ b/docusaurus/docs/Flutter/02-customization/01-custom-widgets/07-slidable_channel_list_preview.mdx @@ -1,7 +1,6 @@ --- id: slidable_channel_list_preview -sidebar_position: 14 -title: Slidable Channel List Preview +title: Channel List Preview --- Slidable Channel List Preview @@ -11,9 +10,9 @@ Slidable Channel List Preview The default slidable behavior within the channel list has been removed in v4 of the Stream Chat Flutter SDK. This guide will show you how you can easily add this functionality yourself. -Please see our [full v4 migration guide](migration_guide_4_0.mdx) if you're migrating from an earlier version of the Stream Chat Flutter SDK. +Please see our [full v4 migration guide](../../05-guides/08-migrations/migration_guide_4_0.mdx) if you're migrating from an earlier version of the Stream Chat Flutter SDK. -![Slidable demo](../assets/slidable_demo.jpg) +![Slidable demo](../../assets/slidable_demo.jpg) ### Prerequisites diff --git a/docusaurus/docs/Flutter/02-customization/01-custom-widgets/_category_.json b/docusaurus/docs/Flutter/02-customization/01-custom-widgets/_category_.json new file mode 100644 index 00000000..7dfd26e6 --- /dev/null +++ b/docusaurus/docs/Flutter/02-customization/01-custom-widgets/_category_.json @@ -0,0 +1,3 @@ +{ + "label": "Custom Widgets" +} \ No newline at end of file diff --git a/docusaurus/docs/Flutter/02-customization/_category_.json b/docusaurus/docs/Flutter/02-customization/_category_.json new file mode 100644 index 00000000..b0b9ad39 --- /dev/null +++ b/docusaurus/docs/Flutter/02-customization/_category_.json @@ -0,0 +1,3 @@ +{ + "label": "Customization" +} \ No newline at end of file diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_chat_and_theming.mdx b/docusaurus/docs/Flutter/02-customization/stream_chat_and_theming.mdx similarity index 98% rename from docusaurus/docs/Flutter/stream_chat_flutter/stream_chat_and_theming.mdx rename to docusaurus/docs/Flutter/02-customization/stream_chat_and_theming.mdx index d527b738..ff38e1c4 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter/stream_chat_and_theming.mdx +++ b/docusaurus/docs/Flutter/02-customization/stream_chat_and_theming.mdx @@ -1,7 +1,7 @@ --- id: stream_chat_and_theming -sidebar_position: 3 -title: StreamChat And Theming +sidebar_position: 1 +title: Theming --- Understanding How To Customize Widgets Using `StreamChatTheme` diff --git a/docusaurus/docs/Flutter/03-stream_chat_flutter/_category_.json b/docusaurus/docs/Flutter/03-stream_chat_flutter/_category_.json new file mode 100644 index 00000000..b323499b --- /dev/null +++ b/docusaurus/docs/Flutter/03-stream_chat_flutter/_category_.json @@ -0,0 +1,3 @@ +{ + "label": "UI Widgets" +} \ No newline at end of file diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/introduction.mdx b/docusaurus/docs/Flutter/03-stream_chat_flutter/introduction.mdx similarity index 100% rename from docusaurus/docs/Flutter/stream_chat_flutter/introduction.mdx rename to docusaurus/docs/Flutter/03-stream_chat_flutter/introduction.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/setup.mdx b/docusaurus/docs/Flutter/03-stream_chat_flutter/setup.mdx similarity index 100% rename from docusaurus/docs/Flutter/stream_chat_flutter/setup.mdx rename to docusaurus/docs/Flutter/03-stream_chat_flutter/setup.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_grid_view.mdx b/docusaurus/docs/Flutter/03-stream_chat_flutter/stream_channel_grid_view.mdx similarity index 100% rename from docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_grid_view.mdx rename to docusaurus/docs/Flutter/03-stream_chat_flutter/stream_channel_grid_view.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_header.mdx b/docusaurus/docs/Flutter/03-stream_chat_flutter/stream_channel_header.mdx similarity index 100% rename from docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_header.mdx rename to docusaurus/docs/Flutter/03-stream_chat_flutter/stream_channel_header.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_list_header.mdx b/docusaurus/docs/Flutter/03-stream_chat_flutter/stream_channel_list_header.mdx similarity index 100% rename from docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_list_header.mdx rename to docusaurus/docs/Flutter/03-stream_chat_flutter/stream_channel_list_header.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_list_view.mdx b/docusaurus/docs/Flutter/03-stream_chat_flutter/stream_channel_list_view.mdx similarity index 93% rename from docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_list_view.mdx rename to docusaurus/docs/Flutter/03-stream_chat_flutter/stream_channel_list_view.mdx index dbb3f266..e8706290 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_list_view.mdx +++ b/docusaurus/docs/Flutter/03-stream_chat_flutter/stream_channel_list_view.mdx @@ -23,7 +23,7 @@ ONLY the channels that the user is a part of. This section goes into setting up widget. :::note -Make sure to check the [StreamChannelListController](./stream_channel_list_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamChannelListView`. +Make sure to check the [StreamChannelListController](../04-stream_chat_flutter_core/stream_channel_list_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamChannelListView`. ::: ### Basic Example diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_member_grid_view.mdx b/docusaurus/docs/Flutter/03-stream_chat_flutter/stream_member_grid_view.mdx similarity index 100% rename from docusaurus/docs/Flutter/stream_chat_flutter/stream_member_grid_view.mdx rename to docusaurus/docs/Flutter/03-stream_chat_flutter/stream_member_grid_view.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_member_list_view.mdx b/docusaurus/docs/Flutter/03-stream_chat_flutter/stream_member_list_view.mdx similarity index 90% rename from docusaurus/docs/Flutter/stream_chat_flutter/stream_member_list_view.mdx rename to docusaurus/docs/Flutter/03-stream_chat_flutter/stream_member_list_view.mdx index 06bfd341..26285876 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter/stream_member_list_view.mdx +++ b/docusaurus/docs/Flutter/03-stream_chat_flutter/stream_member_list_view.mdx @@ -13,7 +13,7 @@ Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_ A list of members is required for many different purposes, for example, showing a list of users in a Channel. The `StreamMemberListView` displays a list of members. :::note -Make sure to check the [StreamMemberListController](./stream_member_list_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamMemberListView`. +Make sure to check the [StreamMemberListController](../04-stream_chat_flutter_core/stream_member_list_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamMemberListView`. ::: ### Basic Example diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_input.mdx b/docusaurus/docs/Flutter/03-stream_chat_flutter/stream_message_input.mdx similarity index 93% rename from docusaurus/docs/Flutter/stream_chat_flutter/stream_message_input.mdx rename to docusaurus/docs/Flutter/03-stream_chat_flutter/stream_message_input.mdx index b60696ae..8778f3a4 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_input.mdx +++ b/docusaurus/docs/Flutter/03-stream_chat_flutter/stream_message_input.mdx @@ -57,7 +57,7 @@ class ChannelPage extends StatelessWidget { It is common to put this widget in the same page of a `StreamMessageListView` as the bottom widget. :::note -Make sure to check the [StreamMessageInputController](./stream_message_input_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamMessageInput`. +Make sure to check the [StreamMessageInputController](../04-stream_chat_flutter_core/stream_message_input_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamMessageInput`. ::: ### Adding Custom Actions diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_list_view.mdx b/docusaurus/docs/Flutter/03-stream_chat_flutter/stream_message_list_view.mdx similarity index 100% rename from docusaurus/docs/Flutter/stream_chat_flutter/stream_message_list_view.mdx rename to docusaurus/docs/Flutter/03-stream_chat_flutter/stream_message_list_view.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_search_grid_view.mdx b/docusaurus/docs/Flutter/03-stream_chat_flutter/stream_message_search_grid_view.mdx similarity index 100% rename from docusaurus/docs/Flutter/stream_chat_flutter/stream_message_search_grid_view.mdx rename to docusaurus/docs/Flutter/03-stream_chat_flutter/stream_message_search_grid_view.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_search_list_view.mdx b/docusaurus/docs/Flutter/03-stream_chat_flutter/stream_message_search_list_view.mdx similarity index 88% rename from docusaurus/docs/Flutter/stream_chat_flutter/stream_message_search_list_view.mdx rename to docusaurus/docs/Flutter/03-stream_chat_flutter/stream_message_search_list_view.mdx index cf27facf..ca4fd11e 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_search_list_view.mdx +++ b/docusaurus/docs/Flutter/03-stream_chat_flutter/stream_message_search_list_view.mdx @@ -17,7 +17,7 @@ message they are searching for. As such, there needs to be a way to search for a channels. This is where `StreamMessageSearchListView` comes in. :::note -Make sure to check the [StreamMessageSearchListController](./stream_message_search_list_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamMessageSearchListView`. +Make sure to check the [StreamMessageSearchListController](../04-stream_chat_flutter_core/stream_message_search_list_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamMessageSearchListView`. ::: ### Basic Example diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_widget.mdx b/docusaurus/docs/Flutter/03-stream_chat_flutter/stream_message_widget.mdx similarity index 100% rename from docusaurus/docs/Flutter/stream_chat_flutter/stream_message_widget.mdx rename to docusaurus/docs/Flutter/03-stream_chat_flutter/stream_message_widget.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_user_grid_view.mdx b/docusaurus/docs/Flutter/03-stream_chat_flutter/stream_user_grid_view.mdx similarity index 100% rename from docusaurus/docs/Flutter/stream_chat_flutter/stream_user_grid_view.mdx rename to docusaurus/docs/Flutter/03-stream_chat_flutter/stream_user_grid_view.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_user_list_view.mdx b/docusaurus/docs/Flutter/03-stream_chat_flutter/stream_user_list_view.mdx similarity index 90% rename from docusaurus/docs/Flutter/stream_chat_flutter/stream_user_list_view.mdx rename to docusaurus/docs/Flutter/03-stream_chat_flutter/stream_user_list_view.mdx index 6f424e38..f8fcbf2b 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter/stream_user_list_view.mdx +++ b/docusaurus/docs/Flutter/03-stream_chat_flutter/stream_user_list_view.mdx @@ -17,7 +17,7 @@ selecting users to add in a channel, etc. The `StreamUserListView` displays a li of users. :::note -Make sure to check the [StreamUserListController](../stream_chat_flutter_core/stream_user_list_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamUserListView`. +Make sure to check the [StreamUserListController](../04-stream_chat_flutter_core/stream_user_list_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamUserListView`. ::: ### Basic Example diff --git a/docusaurus/docs/Flutter/04-stream_chat_flutter_core/_category_.json b/docusaurus/docs/Flutter/04-stream_chat_flutter_core/_category_.json new file mode 100644 index 00000000..9737db75 --- /dev/null +++ b/docusaurus/docs/Flutter/04-stream_chat_flutter_core/_category_.json @@ -0,0 +1,3 @@ +{ + "label": "Core Widgets" +} \ No newline at end of file diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/introduction.mdx b/docusaurus/docs/Flutter/04-stream_chat_flutter_core/introduction.mdx similarity index 100% rename from docusaurus/docs/Flutter/stream_chat_flutter_core/introduction.mdx rename to docusaurus/docs/Flutter/04-stream_chat_flutter_core/introduction.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/lazy_load_scroll_view.mdx b/docusaurus/docs/Flutter/04-stream_chat_flutter_core/lazy_load_scroll_view.mdx similarity index 100% rename from docusaurus/docs/Flutter/stream_chat_flutter_core/lazy_load_scroll_view.mdx rename to docusaurus/docs/Flutter/04-stream_chat_flutter_core/lazy_load_scroll_view.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/message_list_core.mdx b/docusaurus/docs/Flutter/04-stream_chat_flutter_core/message_list_core.mdx similarity index 100% rename from docusaurus/docs/Flutter/stream_chat_flutter_core/message_list_core.mdx rename to docusaurus/docs/Flutter/04-stream_chat_flutter_core/message_list_core.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/paged_value_listenable_builder.mdx b/docusaurus/docs/Flutter/04-stream_chat_flutter_core/paged_value_listenable_builder.mdx similarity index 100% rename from docusaurus/docs/Flutter/stream_chat_flutter_core/paged_value_listenable_builder.mdx rename to docusaurus/docs/Flutter/04-stream_chat_flutter_core/paged_value_listenable_builder.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/setup.mdx b/docusaurus/docs/Flutter/04-stream_chat_flutter_core/setup.mdx similarity index 100% rename from docusaurus/docs/Flutter/stream_chat_flutter_core/setup.mdx rename to docusaurus/docs/Flutter/04-stream_chat_flutter_core/setup.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_controller.mdx b/docusaurus/docs/Flutter/04-stream_chat_flutter_core/stream_channel_list_controller.mdx similarity index 97% rename from docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_controller.mdx rename to docusaurus/docs/Flutter/04-stream_chat_flutter_core/stream_channel_list_controller.mdx index c37eeedd..2bf2de33 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_controller.mdx +++ b/docusaurus/docs/Flutter/04-stream_chat_flutter_core/stream_channel_list_controller.mdx @@ -12,7 +12,7 @@ Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_ The `StreamChannelListController` is a controller class that allows you to control a list of channels. `StreamChannelListController` is a required parameter of the `StreamChannelListView` widget. -Check the [`StreamChannelListView` documentation](../stream_chat_flutter/stream_channel_list_view.mdx) to read more about that. +Check the [`StreamChannelListView` documentation](../03-stream_chat_flutter/stream_channel_list_view.mdx) to read more about that. The `StreamChannelListController` also listens for various events and manipulates the current list of channels accordingly. Passing a `StreamChannelListEventHandler` to the `StreamChannelListController` will allow you to customize this behaviour. diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_event_handler.mdx b/docusaurus/docs/Flutter/04-stream_chat_flutter_core/stream_channel_list_event_handler.mdx similarity index 100% rename from docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_event_handler.mdx rename to docusaurus/docs/Flutter/04-stream_chat_flutter_core/stream_channel_list_event_handler.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_chat_core.mdx b/docusaurus/docs/Flutter/04-stream_chat_flutter_core/stream_chat_core.mdx similarity index 100% rename from docusaurus/docs/Flutter/stream_chat_flutter_core/stream_chat_core.mdx rename to docusaurus/docs/Flutter/04-stream_chat_flutter_core/stream_chat_core.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_member_list_controller.mdx b/docusaurus/docs/Flutter/04-stream_chat_flutter_core/stream_member_list_controller.mdx similarity index 96% rename from docusaurus/docs/Flutter/stream_chat_flutter_core/stream_member_list_controller.mdx rename to docusaurus/docs/Flutter/04-stream_chat_flutter_core/stream_member_list_controller.mdx index c58c6a88..a27d42c8 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_member_list_controller.mdx +++ b/docusaurus/docs/Flutter/04-stream_chat_flutter_core/stream_member_list_controller.mdx @@ -12,7 +12,7 @@ Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_ The `StreamMemberListController` is a controller class that allows you to control a list of users. `StreamMemberListController` is a required parameter of the `StreamMemberListView` widget. -Check the [`StreamMemberListView` documentation](../stream_chat_flutter/stream_member_list_view.mdx) to read more about that. +Check the [`StreamMemberListView` documentation](../03-stream_chat_flutter/stream_member_list_view.mdx) to read more about that. ### Basic Example diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_input_controller.mdx b/docusaurus/docs/Flutter/04-stream_chat_flutter_core/stream_message_input_controller.mdx similarity index 95% rename from docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_input_controller.mdx rename to docusaurus/docs/Flutter/04-stream_chat_flutter_core/stream_message_input_controller.mdx index 7139d15e..9520f13c 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_input_controller.mdx +++ b/docusaurus/docs/Flutter/04-stream_chat_flutter_core/stream_message_input_controller.mdx @@ -12,7 +12,7 @@ Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_ The `StreamMessageInputController` is a controller class that embed the business logic to compose a message. `StreamMessageInputController` is a parameter of the `StreamMessageInput` widget. -Check the [`StreamMessageInput` documentation](../stream_chat_flutter/stream_message_input.mdx) to read more about that. +Check the [`StreamMessageInput` documentation](../03-stream_chat_flutter/stream_message_input.mdx) to read more about that. ### Basic Example diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_search_list_controller.mdx b/docusaurus/docs/Flutter/04-stream_chat_flutter_core/stream_message_search_list_controller.mdx similarity index 97% rename from docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_search_list_controller.mdx rename to docusaurus/docs/Flutter/04-stream_chat_flutter_core/stream_message_search_list_controller.mdx index f4546331..dc2608bc 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_search_list_controller.mdx +++ b/docusaurus/docs/Flutter/04-stream_chat_flutter_core/stream_message_search_list_controller.mdx @@ -12,7 +12,7 @@ Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_ The `StreamMessageSearchListController` is a controller class that allows you to control a list of searched messages. `StreamMessageSearchListController` is a required parameter of the `StreamMessageSearchListView` widget. -Check the [`StreamMessageSearchListView` documentation](../stream_chat_flutter/stream_message_search_list_view.mdx) to read more about that. +Check the [`StreamMessageSearchListView` documentation](../03-stream_chat_flutter/stream_message_search_list_view.mdx) to read more about that. ### Basic Example diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_user_list_controller.mdx b/docusaurus/docs/Flutter/04-stream_chat_flutter_core/stream_user_list_controller.mdx similarity index 97% rename from docusaurus/docs/Flutter/stream_chat_flutter_core/stream_user_list_controller.mdx rename to docusaurus/docs/Flutter/04-stream_chat_flutter_core/stream_user_list_controller.mdx index 93a8bcd3..0eba9d35 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_user_list_controller.mdx +++ b/docusaurus/docs/Flutter/04-stream_chat_flutter_core/stream_user_list_controller.mdx @@ -12,7 +12,7 @@ Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_ The `StreamUserListController` is a controller class that allows you to control a list of users. `StreamUserListController` is a required parameter of the `StreamUserListView` widget. -Check the [`StreamUserListView` documentation](../stream_chat_flutter/stream_user_list_view.mdx) to read more about that. +Check the [`StreamUserListView` documentation](../03-stream_chat_flutter/stream_user_list_view.mdx) to read more about that. ### Basic Example diff --git a/docusaurus/docs/Flutter/guides/understanding_filters.mdx b/docusaurus/docs/Flutter/05-guides/01-understanding_filters.mdx similarity index 98% rename from docusaurus/docs/Flutter/guides/understanding_filters.mdx rename to docusaurus/docs/Flutter/05-guides/01-understanding_filters.mdx index 292afd07..88f5ee61 100644 --- a/docusaurus/docs/Flutter/guides/understanding_filters.mdx +++ b/docusaurus/docs/Flutter/05-guides/01-understanding_filters.mdx @@ -1,7 +1,6 @@ --- id: understanding_filters -sidebar_position: 10 -title: Understanding Filters +title: Filters --- Understanding Filters diff --git a/docusaurus/docs/Flutter/guides/adding_local_data_persistence.mdx b/docusaurus/docs/Flutter/05-guides/02-adding_local_data_persistence.mdx similarity index 96% rename from docusaurus/docs/Flutter/guides/adding_local_data_persistence.mdx rename to docusaurus/docs/Flutter/05-guides/02-adding_local_data_persistence.mdx index e6283ca0..dd7ce0c9 100644 --- a/docusaurus/docs/Flutter/guides/adding_local_data_persistence.mdx +++ b/docusaurus/docs/Flutter/05-guides/02-adding_local_data_persistence.mdx @@ -1,10 +1,9 @@ --- id: adding_local_data_persistence -sidebar_position: 9 -title: Adding Local Data Persistence +title: Offline Support --- -Adding Local Data Persistence +Adding Local Data Persistence for Offline Support ### Introduction diff --git a/docusaurus/docs/Flutter/guides/user_token_generation_with_firebase_auth.mdx b/docusaurus/docs/Flutter/05-guides/03-user_token_generation_with_firebase_auth.mdx similarity index 99% rename from docusaurus/docs/Flutter/guides/user_token_generation_with_firebase_auth.mdx rename to docusaurus/docs/Flutter/05-guides/03-user_token_generation_with_firebase_auth.mdx index 631aab4f..b4102b83 100644 --- a/docusaurus/docs/Flutter/guides/user_token_generation_with_firebase_auth.mdx +++ b/docusaurus/docs/Flutter/05-guides/03-user_token_generation_with_firebase_auth.mdx @@ -1,7 +1,6 @@ --- id: token_generation_with_firebase -sidebar_position: 5 -title: User Token Generation With Firebase Auth and Cloud Functions +title: Authentication --- Securely generate Stream Chat user tokens using Firebase Authentication and Cloud Functions. diff --git a/docusaurus/docs/Flutter/guides/adding_localization.mdx b/docusaurus/docs/Flutter/05-guides/04-adding_localization.mdx similarity index 98% rename from docusaurus/docs/Flutter/guides/adding_localization.mdx rename to docusaurus/docs/Flutter/05-guides/04-adding_localization.mdx index b62d887d..c6050d10 100644 --- a/docusaurus/docs/Flutter/guides/adding_localization.mdx +++ b/docusaurus/docs/Flutter/05-guides/04-adding_localization.mdx @@ -1,10 +1,9 @@ --- id: adding_localization -sidebar_position: 2 -title: Adding Localization (l10n) / Internationalization (i18n) +title: Localization --- -Adding Localization To UI Widgets +Adding Localization (l10n) / Internationalization (i18n) To UI Widgets ### Introduction diff --git a/docusaurus/docs/Flutter/05-guides/05-push-notifications/_category_.json b/docusaurus/docs/Flutter/05-guides/05-push-notifications/_category_.json new file mode 100644 index 00000000..26b1d64e --- /dev/null +++ b/docusaurus/docs/Flutter/05-guides/05-push-notifications/_category_.json @@ -0,0 +1,3 @@ +{ + "label": "Push Notifications" +} \ No newline at end of file diff --git a/docusaurus/docs/Flutter/guides/adding_push_notifications.mdx b/docusaurus/docs/Flutter/05-guides/05-push-notifications/adding_push_notifications.mdx similarity index 97% rename from docusaurus/docs/Flutter/guides/adding_push_notifications.mdx rename to docusaurus/docs/Flutter/05-guides/05-push-notifications/adding_push_notifications.mdx index 328ba546..1926b93c 100644 --- a/docusaurus/docs/Flutter/guides/adding_push_notifications.mdx +++ b/docusaurus/docs/Flutter/05-guides/05-push-notifications/adding_push_notifications.mdx @@ -1,7 +1,7 @@ --- id: adding_push_notifications -sidebar_position: 1 -title: Adding Push Notifications (V1 legacy) +sidebar_position: 2 +title: Legacy --- Adding Push Notifications To Your Application @@ -39,7 +39,7 @@ From the [Firebase Console](https://console.firebase.google.com/), select the pr Click on the gear icon next to `Project Overview` and navigate to **Project settings** -![](../assets/firebase_project_settings.jpeg) +![](../../assets/firebase_project_settings.jpeg) #### Step 3 @@ -49,15 +49,15 @@ Navigate to the `Cloud Messaging` tab Under `Project Credentials`, locate the `Server key` and copy it -![](../assets/server_key.png) +![](../../assets/server_key.png) #### Step 5 Upload the `Server Key` in your chat dashboard -![](../assets/dashboard_firebase_enable.jpeg) +![](../../assets/dashboard_firebase_enable.jpeg) -![](../assets/dashboard_firebase_key.jpeg) +![](../../assets/dashboard_firebase_key.jpeg) :::note @@ -68,7 +68,7 @@ We are setting up the Android section, but this will work for both Android and i Save your push notification settings changes -![](../assets/dashboard_save_changes.jpeg) +![](../../assets/dashboard_save_changes.jpeg) **OR** diff --git a/docusaurus/docs/Flutter/guides/adding_push_notifications_v2.mdx b/docusaurus/docs/Flutter/05-guides/05-push-notifications/adding_push_notifications_v2.mdx similarity index 97% rename from docusaurus/docs/Flutter/guides/adding_push_notifications_v2.mdx rename to docusaurus/docs/Flutter/05-guides/05-push-notifications/adding_push_notifications_v2.mdx index 917d9216..351e8021 100644 --- a/docusaurus/docs/Flutter/guides/adding_push_notifications_v2.mdx +++ b/docusaurus/docs/Flutter/05-guides/05-push-notifications/adding_push_notifications_v2.mdx @@ -1,10 +1,10 @@ --- id: adding_push_notifications_v2 sidebar_position: 1 -title: Adding Push Notifications (V2) +title: Push Notifications --- -Adding Push Notifications To Your Application +Adding Push Notifications (V2) To Your Application ### Introduction @@ -49,11 +49,11 @@ You can upload your Firebase credentials using either the dashboard or the app s 1. Go to the **Chat Overview** page on Stream Dashboard -![](../assets/chat_overview_page-2fbd5bbfb70c5623bd37ff7d6c41bf4d.png) +![](../../assets/chat_overview_page-2fbd5bbfb70c5623bd37ff7d6c41bf4d.png) 2. Enable **Firebase Notification** toggle on **Chat Overview** -![](../assets/firebase_notifications_toggle-5aeabfcbdc24cb8f1fea7d41d0e845fc.png) +![](../../assets/firebase_notifications_toggle-5aeabfcbdc24cb8f1fea7d41d0e845fc.png) 3. Enter your Firebase Credentials and press "Save". diff --git a/docusaurus/docs/Flutter/guides/end_to_end_chat_encryption.mdx b/docusaurus/docs/Flutter/05-guides/06-end_to_end_chat_encryption.mdx similarity index 99% rename from docusaurus/docs/Flutter/guides/end_to_end_chat_encryption.mdx rename to docusaurus/docs/Flutter/05-guides/06-end_to_end_chat_encryption.mdx index 8a463af4..10699b2d 100644 --- a/docusaurus/docs/Flutter/guides/end_to_end_chat_encryption.mdx +++ b/docusaurus/docs/Flutter/05-guides/06-end_to_end_chat_encryption.mdx @@ -1,9 +1,10 @@ --- id: end_to_end_chat_encryption -sidebar_position: 12 -title: End To End Chat Encryption +title: Encryption --- +Adding End To End Encryption to your Chat App + ## Introduction When you communicate over a chat application with another person or group, diff --git a/docusaurus/docs/Flutter/guides/error_reporting_with_sentry.mdx b/docusaurus/docs/Flutter/05-guides/07-error_reporting_with_sentry.mdx similarity index 98% rename from docusaurus/docs/Flutter/guides/error_reporting_with_sentry.mdx rename to docusaurus/docs/Flutter/05-guides/07-error_reporting_with_sentry.mdx index a192a613..dbbe312e 100644 --- a/docusaurus/docs/Flutter/guides/error_reporting_with_sentry.mdx +++ b/docusaurus/docs/Flutter/05-guides/07-error_reporting_with_sentry.mdx @@ -1,7 +1,6 @@ --- id: error_reporting_with_sentry -sidebar_position: 15 -title: Error Reporting With Sentry +title: Error Reporting --- Error Reporting With Sentry diff --git a/docusaurus/docs/Flutter/guides/adding_chat_to_video_livestreams.mdx b/docusaurus/docs/Flutter/05-guides/08-adding_chat_to_video_livestreams.mdx similarity index 97% rename from docusaurus/docs/Flutter/guides/adding_chat_to_video_livestreams.mdx rename to docusaurus/docs/Flutter/05-guides/08-adding_chat_to_video_livestreams.mdx index 9a2863b6..72f50120 100644 --- a/docusaurus/docs/Flutter/guides/adding_chat_to_video_livestreams.mdx +++ b/docusaurus/docs/Flutter/05-guides/08-adding_chat_to_video_livestreams.mdx @@ -1,7 +1,6 @@ --- id: adding_chat_to_video_livestreams -sidebar_position: 7 -title: Adding Chat To Video Livestreams +title: Livestreams Integration --- Adding Chat To Video Livestreams diff --git a/docusaurus/docs/Flutter/05-guides/08-migrations/_category_.json b/docusaurus/docs/Flutter/05-guides/08-migrations/_category_.json new file mode 100644 index 00000000..e30f7ae4 --- /dev/null +++ b/docusaurus/docs/Flutter/05-guides/08-migrations/_category_.json @@ -0,0 +1,3 @@ +{ + "label": "Migrations" +} \ No newline at end of file diff --git a/docusaurus/docs/Flutter/guides/migration_guide_4_0.mdx b/docusaurus/docs/Flutter/05-guides/08-migrations/migration_guide_4_0.mdx similarity index 96% rename from docusaurus/docs/Flutter/guides/migration_guide_4_0.mdx rename to docusaurus/docs/Flutter/05-guides/08-migrations/migration_guide_4_0.mdx index 887cef3a..236bda99 100644 --- a/docusaurus/docs/Flutter/guides/migration_guide_4_0.mdx +++ b/docusaurus/docs/Flutter/05-guides/08-migrations/migration_guide_4_0.mdx @@ -1,12 +1,12 @@ --- id: migration_guide_4_0 -sidebar_position: 14 -title: Migration Guide v4.0 +sidebar_position: 1 +title: v4.0 --- **Version 4.0.0** of the Stream Chat Flutter SDK carries significant architectural changes to improve the developer experience by giving you more control and flexibility in how you use our core components and UI widgets. -This guide is intended to enumerate and better explain the changes in the SDK. +This v4.0 Migration Guide is intended to enumerate and better explain the changes in the SDK. If you find any bugs or have any questions, please file an [issue on our GitHub repository](https://github.com/GetStream/stream-chat-flutter/issues). We want to support you as much as we can with this migration. @@ -76,9 +76,9 @@ The automatic video compression when uploading a video has been removed. You can ### Slidable Channel List Item -The default slidable channel preview behavior has been removed. We have created a [guide](slidable_channel_list_preview.mdx) showing you how you can easily add this functionality yourself. +The default slidable channel preview behavior has been removed. We have created a [guide](../../02-customization/01-custom-widgets/07-slidable_channel_list_preview.mdx) showing you how you can easily add this functionality yourself. -![Slidable demo](../assets/slidable_demo.jpg) +![Slidable demo](../../assets/slidable_demo.jpg) ### Pin Permission @@ -194,13 +194,13 @@ Version 4 of the Stream Chat Flutter packages introduces a new controller called - Return/Create a new channel and start watching it. - Pause and Resume all subscriptions added to this composite. -For more information see the [`StreamChannelListView` documentation](../stream_chat_flutter/stream_channel_list_view.mdx). +For more information see the [`StreamChannelListView` documentation](../../03-stream_chat_flutter/stream_channel_list_view.mdx). ### ChannelsBloc to StreamChannelListController The `ChannelsBloc` widget should be replaced with `StreamChannelListController`. This controller provides all the functionality needed to query and manipulate channel data previously accessible through `ChannelsBloc`. -For more information see the [`StreamChannelListController` documentation](../stream_chat_flutter_core/stream_channel_list_controller.mdx). +For more information see the [`StreamChannelListController` documentation](../../04-stream_chat_flutter_core/stream_channel_list_controller.mdx). ### StreamChannelListView Examples @@ -310,13 +310,13 @@ Version 4 of the Stream Chat Flutter packages introduces a new controller called - Load more data using `loadMore`. - Refresh data. -For more information see the [`StreamMessageSearchListView` documentation](../stream_chat_flutter/stream_message_search_list_view.mdx). +For more information see the [`StreamMessageSearchListView` documentation](../../03-stream_chat_flutter/stream_message_search_list_view.mdx). ### MessageSearchBloc to StreamMessageSearchListController The `MessageSearchBloc` widget should be replaced with a `StreamMessageSearchListController`. This controller provides all the functionality needed to query and manipulate message search data previously accessible through `MessageSearchBloc`. -For more information see the [`StreamMessageSearchListController` documentation](../stream_chat_flutter_core/stream_message_search_list_controller.mdx). +For more information see the [`StreamMessageSearchListController` documentation](../../04-stream_chat_flutter_core/stream_message_search_list_controller.mdx). ### StreamMessageSearchListView Example @@ -421,13 +421,13 @@ Version 4 of the Stream Chat Flutter packages introduces a new controller called - Set filters. - Refresh data. -For more information see the [`StreamUserListView` documentation](../stream_chat_flutter/stream_user_list_view.mdx). +For more information see the [`StreamUserListView` documentation](../../03-stream_chat_flutter/stream_user_list_view.mdx). ### UsersBloc to StreamUserListController The `UsersBloc` widget should be replaced with a `StreamUserListController`. This controller provides all the functionality needed to query and manipulate user data previously accessible through `UsersBloc`. -For more information see the [`StreamUserListController` documentation](../stream_chat_flutter_core/stream_user_list_controller.mdx). +For more information see the [`StreamUserListController` documentation](../../04-stream_chat_flutter_core/stream_user_list_controller.mdx). ### StreamUserListView Example @@ -558,7 +558,7 @@ The following arguments are newly introduced to the `StreamMessageInput`, and ar - `elevation`: elevation of the **StreamMessageInput** widget - `shadow`: **Shadow** for the **StreamMessageInput** widget -For more information see the [`StreamMessageInput` documentation](../stream_chat_flutter_core/stream_message_input_controller.mdx). +For more information see the [`StreamMessageInput` documentation](../../04-stream_chat_flutter_core/stream_message_input_controller.mdx). ### StreamMessageInput Examples diff --git a/docusaurus/docs/Flutter/guides/migration_guide_5_0.mdx b/docusaurus/docs/Flutter/05-guides/08-migrations/migration_guide_5_0.mdx similarity index 92% rename from docusaurus/docs/Flutter/guides/migration_guide_5_0.mdx rename to docusaurus/docs/Flutter/05-guides/08-migrations/migration_guide_5_0.mdx index 2a085e1f..3aa19a77 100644 --- a/docusaurus/docs/Flutter/guides/migration_guide_5_0.mdx +++ b/docusaurus/docs/Flutter/05-guides/08-migrations/migration_guide_5_0.mdx @@ -1,7 +1,7 @@ --- id: migration_guide_5_0 -sidebar_position: 15 -title: Migration Guide v5.0 +sidebar_position: 2 +title: v5.0 --- **Version 5.0.0** of the Stream Chat Flutter SDK UI package has been overhauled to support larger screen sizes better and provide native feeling web and desktop platform interactions that feel intuitive and expected. @@ -38,7 +38,7 @@ This section highlights our efforts on Desktop (macOS, Windows, and Linux) and W ### Setup -See the [setup guide](../stream_chat_flutter/setup.mdx) for platform specific instructions. +See the [setup guide](../../03-stream_chat_flutter/setup.mdx) for platform specific instructions. ### Supporting Larger Screens @@ -49,7 +49,7 @@ We've added support for larger screens and have made changes to the UI to suppor Below is an example running on macOS, with a split-screen view showing channels on the left and messages on the right. -![MacOS split](../assets/mac_os_split.png) +![MacOS split](../../assets/mac_os_split.png) ### Native Platform Interactions @@ -105,13 +105,13 @@ For additional information, see [#1125](https://github.com/GetStream/stream-chat The `StreamMemberListView` and `StreamMemberGridView` widgets are new widgets that allow you to display a list of members in a channel. -Check out the dedicated [documentation](../stream_chat_flutter/stream_member_list_view.mdx) for more information. +Check out the dedicated [documentation](../../03-stream_chat_flutter/stream_member_list_view.mdx) for more information. ### Attachment Picker As part of the v5 release, we've refactored the `AttachmentPicker` to be more flexible and customizable. This allows you to use the `AttachmentPicker` in various ways and customize the UI to your liking. -Check out the dedicated [guide](./customize_attachment_picker_modal.mdx) for more information. +Check out the dedicated [guide](../../02-customization/01-custom-widgets/05-customize_attachment_picker_modal.mdx) for more information. ### Other Changes @@ -169,6 +169,6 @@ StreamImageAttachment( ) ``` -- Removed `StreamMessageInput.customOverlays` in favor of `StreamMessageInput.customAutocompleteTriggers`. Read the guide on [Adding Custom Autocomplete Triggers](./autocomplete_triggers.mdx) to learn how to migrate your code. +- Removed `StreamMessageInput.customOverlays` in favor of `StreamMessageInput.customAutocompleteTriggers`. Read the guide on [Adding Custom Autocomplete Triggers](../../02-customization/01-custom-widgets/06-autocomplete_triggers.mdx) to learn how to migrate your code. -- Removed the default emoji overlay picker. Read the guide on [Adding Custom Autocomplete Triggers](./autocomplete_triggers.mdx) to learn how to migrate your code. +- Removed the default emoji overlay picker. Read the guide on [Adding Custom Autocomplete Triggers](../../02-customization/01-custom-widgets/06-autocomplete_triggers.mdx) to learn how to migrate your code. diff --git a/docusaurus/docs/Flutter/05-guides/_category_.json b/docusaurus/docs/Flutter/05-guides/_category_.json new file mode 100644 index 00000000..14a4f173 --- /dev/null +++ b/docusaurus/docs/Flutter/05-guides/_category_.json @@ -0,0 +1,3 @@ +{ + "label": "Guides" +} \ No newline at end of file diff --git a/docusaurus/docs/Flutter/basics/_category_.json b/docusaurus/docs/Flutter/basics/_category_.json deleted file mode 100644 index 76d33569..00000000 --- a/docusaurus/docs/Flutter/basics/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Introduction", - "position": 1 -} \ No newline at end of file diff --git a/docusaurus/docs/Flutter/guides/_category_.json b/docusaurus/docs/Flutter/guides/_category_.json deleted file mode 100644 index cb58ac0d..00000000 --- a/docusaurus/docs/Flutter/guides/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Guides", - "position": 2 -} \ No newline at end of file diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/_category_.json b/docusaurus/docs/Flutter/stream_chat_flutter/_category_.json deleted file mode 100644 index 242afb7b..00000000 --- a/docusaurus/docs/Flutter/stream_chat_flutter/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Stream Chat Flutter", - "position": 3 -} \ No newline at end of file diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/_category_.json b/docusaurus/docs/Flutter/stream_chat_flutter_core/_category_.json deleted file mode 100644 index 8d738e89..00000000 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Stream Chat Flutter Core", - "position": 4 -} \ No newline at end of file diff --git a/docusaurus/flutter_versioned_docs/version-4.x.x/Flutter/guides/autocomplete_triggers.mdx b/docusaurus/flutter_versioned_docs/version-4.x.x/Flutter/guides/autocomplete_triggers.mdx index 413d147a..50bfb6a0 100644 --- a/docusaurus/flutter_versioned_docs/version-4.x.x/Flutter/guides/autocomplete_triggers.mdx +++ b/docusaurus/flutter_versioned_docs/version-4.x.x/Flutter/guides/autocomplete_triggers.mdx @@ -7,7 +7,7 @@ Adding Custom Autocomplete Triggers ### Introduction -The [StreamMessageInput](../stream_chat_flutter/message_input.mdx) widget provides a way to add custom autocomplete triggers using the `StreamMessageInput.customAutocompleteTriggers` property. +The [StreamMessageInput](../stream_chat_flutter/stream_message_input.mdx) widget provides a way to add custom autocomplete triggers using the `StreamMessageInput.customAutocompleteTriggers` property. By default we provide autocomplete triggers for mentions and commands, but it's very easy to add your custom ones. diff --git a/docusaurus/flutter_versioned_docs/version-4.x.x/Flutter/stream_chat_flutter/stream_channel_list_view.mdx b/docusaurus/flutter_versioned_docs/version-4.x.x/Flutter/stream_chat_flutter/stream_channel_list_view.mdx index dbb3f266..258c0b64 100644 --- a/docusaurus/flutter_versioned_docs/version-4.x.x/Flutter/stream_chat_flutter/stream_channel_list_view.mdx +++ b/docusaurus/flutter_versioned_docs/version-4.x.x/Flutter/stream_chat_flutter/stream_channel_list_view.mdx @@ -23,7 +23,7 @@ ONLY the channels that the user is a part of. This section goes into setting up widget. :::note -Make sure to check the [StreamChannelListController](./stream_channel_list_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamChannelListView`. +Make sure to check the [StreamChannelListController](../stream_chat_flutter_core/stream_channel_list_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamChannelListView`. ::: ### Basic Example diff --git a/docusaurus/flutter_versioned_docs/version-4.x.x/Flutter/stream_chat_flutter/stream_message_input.mdx b/docusaurus/flutter_versioned_docs/version-4.x.x/Flutter/stream_chat_flutter/stream_message_input.mdx index b60696ae..f6640f67 100644 --- a/docusaurus/flutter_versioned_docs/version-4.x.x/Flutter/stream_chat_flutter/stream_message_input.mdx +++ b/docusaurus/flutter_versioned_docs/version-4.x.x/Flutter/stream_chat_flutter/stream_message_input.mdx @@ -57,7 +57,7 @@ class ChannelPage extends StatelessWidget { It is common to put this widget in the same page of a `StreamMessageListView` as the bottom widget. :::note -Make sure to check the [StreamMessageInputController](./stream_message_input_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamMessageInput`. +Make sure to check the [StreamMessageInputController](../stream_chat_flutter_core/stream_message_input_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamMessageInput`. ::: ### Adding Custom Actions diff --git a/docusaurus/flutter_versioned_docs/version-4.x.x/Flutter/stream_chat_flutter/stream_message_search_list_view.mdx b/docusaurus/flutter_versioned_docs/version-4.x.x/Flutter/stream_chat_flutter/stream_message_search_list_view.mdx index cf27facf..91108b5e 100644 --- a/docusaurus/flutter_versioned_docs/version-4.x.x/Flutter/stream_chat_flutter/stream_message_search_list_view.mdx +++ b/docusaurus/flutter_versioned_docs/version-4.x.x/Flutter/stream_chat_flutter/stream_message_search_list_view.mdx @@ -17,7 +17,7 @@ message they are searching for. As such, there needs to be a way to search for a channels. This is where `StreamMessageSearchListView` comes in. :::note -Make sure to check the [StreamMessageSearchListController](./stream_message_search_list_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamMessageSearchListView`. +Make sure to check the [StreamMessageSearchListController](../stream_chat_flutter_core/stream_message_search_list_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamMessageSearchListView`. ::: ### Basic Example diff --git a/docusaurus/flutter_versioned_docs/version-4.x.x/Flutter/stream_chat_flutter/stream_user_list_view.mdx b/docusaurus/flutter_versioned_docs/version-4.x.x/Flutter/stream_chat_flutter/stream_user_list_view.mdx index 95bfbac9..6f424e38 100644 --- a/docusaurus/flutter_versioned_docs/version-4.x.x/Flutter/stream_chat_flutter/stream_user_list_view.mdx +++ b/docusaurus/flutter_versioned_docs/version-4.x.x/Flutter/stream_chat_flutter/stream_user_list_view.mdx @@ -17,7 +17,7 @@ selecting users to add in a channel, etc. The `StreamUserListView` displays a li of users. :::note -Make sure to check the [StreamUserListController](./stream_user_list_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamUserListView`. +Make sure to check the [StreamUserListController](../stream_chat_flutter_core/stream_user_list_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamUserListView`. ::: ### Basic Example From d5df42c755fc1892223ba066207af0e1b5ab8cd8 Mon Sep 17 00:00:00 2001 From: Jeroen Leenarts Date: Fri, 4 Nov 2022 10:14:01 +0100 Subject: [PATCH 12/13] Put migrations guides back on their old slugs. (#1374) --- .../docs/Flutter/05-guides/08-migrations/migration_guide_4_0.mdx | 1 + .../docs/Flutter/05-guides/08-migrations/migration_guide_5_0.mdx | 1 + 2 files changed, 2 insertions(+) diff --git a/docusaurus/docs/Flutter/05-guides/08-migrations/migration_guide_4_0.mdx b/docusaurus/docs/Flutter/05-guides/08-migrations/migration_guide_4_0.mdx index 236bda99..fa2d21b4 100644 --- a/docusaurus/docs/Flutter/05-guides/08-migrations/migration_guide_4_0.mdx +++ b/docusaurus/docs/Flutter/05-guides/08-migrations/migration_guide_4_0.mdx @@ -2,6 +2,7 @@ id: migration_guide_4_0 sidebar_position: 1 title: v4.0 +slug: /guides/migration_guide_4_0/ --- **Version 4.0.0** of the Stream Chat Flutter SDK carries significant architectural changes to improve the developer experience by giving you more control and flexibility in how you use our core components and UI widgets. diff --git a/docusaurus/docs/Flutter/05-guides/08-migrations/migration_guide_5_0.mdx b/docusaurus/docs/Flutter/05-guides/08-migrations/migration_guide_5_0.mdx index 3aa19a77..3e4d2052 100644 --- a/docusaurus/docs/Flutter/05-guides/08-migrations/migration_guide_5_0.mdx +++ b/docusaurus/docs/Flutter/05-guides/08-migrations/migration_guide_5_0.mdx @@ -2,6 +2,7 @@ id: migration_guide_5_0 sidebar_position: 2 title: v5.0 +slug: /guides/migration_guide_5_0/ --- **Version 5.0.0** of the Stream Chat Flutter SDK UI package has been overhauled to support larger screen sizes better and provide native feeling web and desktop platform interactions that feel intuitive and expected. From 1fdb72f6f22bd1da965287aec138566a4047da74 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 4 Nov 2022 10:33:04 +0100 Subject: [PATCH 13/13] fix(doc): move initialize_stream_chat_widget_tree to proper folder --- .../09-initialize_stream_chat_widget_tree.mdx} | 1 - 1 file changed, 1 deletion(-) rename docusaurus/docs/Flutter/{guides/initialize_stream_chat_widget_tree.mdx => 05-guides/09-initialize_stream_chat_widget_tree.mdx} (99%) diff --git a/docusaurus/docs/Flutter/guides/initialize_stream_chat_widget_tree.mdx b/docusaurus/docs/Flutter/05-guides/09-initialize_stream_chat_widget_tree.mdx similarity index 99% rename from docusaurus/docs/Flutter/guides/initialize_stream_chat_widget_tree.mdx rename to docusaurus/docs/Flutter/05-guides/09-initialize_stream_chat_widget_tree.mdx index 13ad048d..3bb421ab 100644 --- a/docusaurus/docs/Flutter/guides/initialize_stream_chat_widget_tree.mdx +++ b/docusaurus/docs/Flutter/05-guides/09-initialize_stream_chat_widget_tree.mdx @@ -1,6 +1,5 @@ --- id: initialize_stream_chat_widget_tree -sidebar_position: 15 title: Initialize Stream Chat in Part of the Widget Tree ---