Skip to content

Commit 73821ca

Browse files
committed
fix: use text composer for command handling
1 parent c9380f1 commit 73821ca

File tree

16 files changed

+126
-304
lines changed

16 files changed

+126
-304
lines changed

examples/SampleApp/ios/Podfile.lock

Lines changed: 67 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -2578,7 +2578,7 @@ SPEC CHECKSUMS:
25782578
hermes-engine: b417d2b2aee3b89b58e63e23a51e02be91dc876d
25792579
libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
25802580
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
2581-
op-sqlite: c33561ea312a2ae38aae032fd3a42635dc6b57e8
2581+
op-sqlite: 2e34a191af7e843608357671c94a6e2befd4b986
25822582
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
25832583
PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851
25842584
RCT-Folly: e78785aa9ba2ed998ea4151e314036f6c49e6d82
@@ -2588,83 +2588,83 @@ SPEC CHECKSUMS:
25882588
React: b229c49ed5898dab46d60f61ed5a0bfa2ee2fadb
25892589
React-callinvoker: 2ac508e92c8bd9cf834cc7d7787d94352e4af58f
25902590
React-Codegen: 4b8b4817cea7a54b83851d4c1f91f79aa73de30a
2591-
React-Core: 13cdd1558d0b3f6d9d5a22e14d89150280e79f02
2592-
React-CoreModules: b07a6744f48305405e67c845ebf481b6551b712a
2593-
React-cxxreact: 1055a86c66ac35b4e80bd5fb766aed5f494dfff4
2591+
React-Core: 325b4f6d9162ae8b9a6ff42fe78e260eb124180d
2592+
React-CoreModules: 558041e5258f70cd1092f82778d07b8b2ff01897
2593+
React-cxxreact: 8fff17cbe76e6a8f9991b59552e1235429f9c74b
25942594
React-debug: c76e92776a86622209279fe6d24a0147584444ed
2595-
React-defaultsnativemodule: c2e3ac39909241374c3322eb2be33f4c15fe6be4
2596-
React-domnativemodule: 240b3c95b5300cc6537594e73ebc6e8e77585b74
2597-
React-Fabric: 3b403ca25f74d54454b31d1d2627050e0777d42c
2598-
React-FabricComponents: 154740cfcd57943709a9d0343769d17173c0ac9c
2599-
React-FabricImage: 0863e39cea98f3ca2f8c3d92984660795cec84ae
2595+
React-defaultsnativemodule: 111fb1efc95c2bd0ee18e38e9f7b57d678e6f932
2596+
React-domnativemodule: d5154a815306fd6050ee9346a1490d2fb17eb0e5
2597+
React-Fabric: 51ac32f0a6790b1d3b14d90c6870e5ce5bb3854a
2598+
React-FabricComponents: 1094d6a3c2566b3c56951331c44d7d3960570ac8
2599+
React-FabricImage: 6b210ad3c72704a9ad60dde66c397ce6257333f4
26002600
React-featureflags: efb93a998907e4ad5b88f6ed77cc140914d5c36d
2601-
React-featureflagsnativemodule: 51116d72aafea30860f315702d17eb76bbb725a3
2602-
React-graphics: 91d9920451f633d64d31948da3ba0377b6eda8de
2603-
React-hermes: 71186f872c932e4574d5feb3ed754dda63a0b3bd
2604-
React-idlecallbacksnativemodule: 19bf1fa4b2b66fe1898ac1d185129cdcc3221c7c
2605-
React-ImageManager: 7dc7bfca8e9ecb9a7436b8a89a143a193ef5adcf
2606-
React-jserrorhandler: d8640792495ac2d78e73acbcc77a8439d1eedfef
2607-
React-jsi: 0775a66820496769ad83e629f0f5cce621a57fc7
2608-
React-jsiexecutor: 2cf5ba481386803f3c88b85c63fa102cba5d769e
2609-
React-jsinspector: d1d9f215c7431b286acc12e83cdf0d90c265f0ed
2610-
React-jsinspectortracing: c4c1cceb9a9c266ce849c82332e35cc57ee9dae9
2611-
React-jsitracing: 267618eec9c362658a4587c5ddcfb41b2e00c403
2612-
React-logger: 795cd5055782db394f187f9db0477d4b25b44291
2613-
React-Mapbuffer: 0df2a235bd0182f5cbed6c5f095e66deca12e335
2614-
React-microtasksnativemodule: b31e56a980634f383221bfefd5111d04c14c110b
2615-
react-native-blob-util: 875bbeee07e4ada135e4edf9fc7b22acf8d9721d
2616-
react-native-cameraroll: cdc91c4c953d1a18aa3ce88b5a25698025c8c4d2
2617-
react-native-document-picker: 19be73c0423e4bc886cef74ec282eff750698013
2618-
react-native-image-picker: 3a03f96b11ef2b727d3d58a7ed009900b0a56a52
2619-
react-native-netinfo: f0a9899081c185db1de5bb2fdc1c88c202a059ac
2620-
react-native-safe-area-context: 0b43456abcaaa3c8323bbfafe9c5f0f9511219d2
2621-
react-native-video: a225b4d4d3286f3253dc7b00a62e7c8e59d04d51
2622-
React-NativeModulesApple: b74b4e3004104429461593fe460ad790cc4928c2
2623-
React-perflogger: ab51b7592532a0ea45bf6eed7e6cae14a368b678
2624-
React-performancetimeline: 37192fd1019c3b3b597a877dff12f3af68305c34
2601+
React-featureflagsnativemodule: a74b09429c2e7a57412d78cc159ab86ae4f15db9
2602+
React-graphics: 17ef0ee3ef4a4c1774cc82f1f477ecef4d67c73f
2603+
React-hermes: a9a0c8377627b5506ef9a7b6f60a805c306e3f51
2604+
React-idlecallbacksnativemodule: 0711ec5eb53c7f790641fa00e5f6ec0355d3159b
2605+
React-ImageManager: 23b4701408390428724f0e0ebb2cbed7b37c2b24
2606+
React-jserrorhandler: e21b438ef8b99ea8bf070ff35f00bc0215b5f769
2607+
React-jsi: f3f51595cc4c089037b536368f016d4742bf9cf7
2608+
React-jsiexecutor: cca6c232db461e2fd213a11e9364cfa6fdaa20eb
2609+
React-jsinspector: 8a3c2637b84ebec478f46a43432a522d7489410f
2610+
React-jsinspectortracing: ee0215d2db753cc10f45fc9aa86557718d0b16fb
2611+
React-jsitracing: 258be1fd259141f6aa43012c20c70ebc02e32087
2612+
React-logger: 018826bfd51b9f18e87f67db1590bc510ad20664
2613+
React-Mapbuffer: 9fbb496e7d6f7c34d5e617365ee778bf96d14eae
2614+
React-microtasksnativemodule: 36adde22631838680d1be62776e8ccb83186c06a
2615+
react-native-blob-util: d03eaad9fd1bbe90bd0eedb5bad3333215976086
2616+
react-native-cameraroll: 10054f480dfd6e0bd02fdf08fb6d82f80b362575
2617+
react-native-document-picker: 78c262a7f9f77df2380378aa4b3413b8646ce91b
2618+
react-native-image-picker: 5f9867b6a223594dbfdb456428638daef42e6e6c
2619+
react-native-netinfo: cec9c4e86083cb5b6aba0e0711f563e2fbbff187
2620+
react-native-safe-area-context: 02e0f487c16ccf1acc8a666bed2318ceeb5dc14c
2621+
react-native-video: 16b5c395d05f8af23e16bfe3dc0794a5514c882f
2622+
React-NativeModulesApple: ec44c21ae0bbb5f9a2df72db00294e33a00e07f0
2623+
React-perflogger: 9e8d3c0dc0194eb932162812a168aa5dc662f418
2624+
React-performancetimeline: 350424518f433dd43f063dc5f2cf3195c1a5b60f
26252625
React-RCTActionSheet: 592674cf61142497e0e820688f5a696e41bf16dd
2626-
React-RCTAnimation: 8fbb8dba757b49c78f4db403133ab6399a4ce952
2627-
React-RCTAppDelegate: 7f88baa8cb4e5d6c38bb4d84339925c70c9ac864
2628-
React-RCTBlob: f89b162d0fe6b570a18e755eb16cbe356d3c6d17
2629-
React-RCTFabric: f2151588dc1dc884b34b8660d72ef5237aa4b10e
2630-
React-RCTFBReactNativeSpec: 8c29630c2f379c729300e4c1e540f3d1b78d1936
2631-
React-RCTImage: ccac9969940f170503857733f9a5f63578e106e1
2632-
React-RCTLinking: d82427bbf18415a3732105383dff119131cadd90
2633-
React-RCTNetwork: 12ad4d0fbde939e00251ca5ca890da2e6825cc3c
2634-
React-RCTSettings: e7865bf9f455abf427da349c855f8644b5c39afa
2635-
React-RCTText: 2cdfd88745059ec3202a0842ea75a956c7d6f27d
2636-
React-RCTVibration: a3a1458e6230dfd64b3768ebc0a4aac430d9d508
2626+
React-RCTAnimation: e6d669872f9b3b4ab9527aab283b7c49283236b7
2627+
React-RCTAppDelegate: de2343fe08be4c945d57e0ecce44afcc7dd8fc03
2628+
React-RCTBlob: 3e2dce94c56218becc4b32b627fc2293149f798d
2629+
React-RCTFabric: adad07a08efb186bc1046041207527927524170d
2630+
React-RCTFBReactNativeSpec: d10ca5e0ccbfeac8c047361fedf8e4ac653887b6
2631+
React-RCTImage: dc04b176c022d12a8f55ae7a7279b1e091066ae0
2632+
React-RCTLinking: 88f5e37fe4f26fbc80791aa2a5f01baf9b9a3fd5
2633+
React-RCTNetwork: f213693565efbd698b8e9c18d700a514b49c0c8e
2634+
React-RCTSettings: a2d32a90c45a3575568cad850abc45924999b8a5
2635+
React-RCTText: 54cdcd1cbf6f6a91dc6317f5d2c2b7fc3f6bf7a0
2636+
React-RCTVibration: 11dae0e7f577b5807bb7d31e2e881eb46f854fd4
26372637
React-rendererconsistency: aa476d937c91886dd8b2ddde3191c775585ae47a
2638-
React-rendererdebug: 5a2219e0ceb78f4ffe9ee2d80fa260bb5bac50b2
2638+
React-rendererdebug: df10d858ac7709b9c8349d952474b0746092c690
26392639
React-rncore: 517c6c3647d45de81a7920b6959adf14fed2a5a5
2640-
React-RuntimeApple: 40809bf5975c265b990dec2725f2cfb61f1afc75
2641-
React-RuntimeCore: 375c2645e924fdca875918f07ed987653c517edc
2640+
React-RuntimeApple: 6922a0861c3fc4c7d544fc7d1d5cb38c779d1264
2641+
React-RuntimeCore: 41a95876d16630ce00946eaaee7ffd5222242b44
26422642
React-runtimeexecutor: a188df372373baf5066e6e229177836488799f80
2643-
React-RuntimeHermes: 2de8d61ec25d950ae4aebcab1a895e0bb8b18c95
2644-
React-runtimescheduler: e8b49a60eca68a3513c259879a352ed010fed255
2643+
React-RuntimeHermes: f2ca409c03c36bb3dcbf61bdfa2636501f9faebd
2644+
React-runtimescheduler: 7ae10fa81428c2479e0a5534943dacb8e34c9d52
26452645
React-timing: e56b95cb12c6fb9146be7ba3d671cf6b5d17b2e0
2646-
React-utils: 8ad62100a8780798a380b769e968c4764bad1f4b
2647-
ReactAppDependencyProvider: f2e81d80afd71a8058589e19d8a134243fa53f17
2648-
ReactCodegen: 299e99fc57c93edc7c5396ef1a39a3a4d494f25d
2649-
ReactCommon: c8fdbc582b98a07daf201cd95c1da75dd029f3ee
2650-
RNAudioRecorderPlayer: 224c7de87722938aedce04000d09baa633148f5b
2651-
RNCAsyncStorage: dac011cac81189c2b3b8654f3db97d2b6362d165
2652-
RNFastImage: 5c9c9fed9c076e521b3f509fe79e790418a544e8
2653-
RNFBApp: 60366dd9d6bb01327607e1561a32508592d76db9
2654-
RNFBMessaging: 9465c2e3adb5e02cae8d40048306a30aea7f55cf
2655-
RNGestureHandler: 0a16f3f13829c01268ae55610a40b57b713c8161
2656-
RNNotifee: 4a6ee5c7deaf00e005050052d73ee6315dff7ec9
2657-
RNReactNativeHapticFeedback: a49e613d48d721c99cad9689a490554104c22154
2658-
RNReanimated: c9f295fb1679867288d238bfaf3ea39225c95e1b
2659-
RNScreens: 77f93ec55b749c49549b447527ebf78e990125f3
2660-
RNShare: 12d13ebc179faf22534c605d17b2c2fa40191850
2661-
RNSVG: 05776cf3f0d52d3f8e7ebee34b2189da7b8638ff
2646+
React-utils: 6eabecc0e7d7bcf21b6b33357bc1fe8ae13c7c4c
2647+
ReactAppDependencyProvider: a1fb08dfdc7ebc387b2e54cfc9decd283ed821d8
2648+
ReactCodegen: 0f8899ac1bad260bf3b362ee848ef67a70b5a306
2649+
ReactCommon: a30b578194de911fbe1698efb8247bfe4cb6abff
2650+
RNAudioRecorderPlayer: 11df0c7b614e9767ef24d896465c3a758c592de7
2651+
RNCAsyncStorage: 849b77e6ab3eb838361a902b492993056924faab
2652+
RNFastImage: 462a183c4b0b6b26fdfd639e1ed6ba37536c3b87
2653+
RNFBApp: b5626640e0f4b4fe5be4f44375df703c0d62ee4b
2654+
RNFBMessaging: 8e38f5ca846497f8a9c91d33f311c00ca52d119c
2655+
RNGestureHandler: f7b3a72c099e1e29b5b81688678bc9108d44057c
2656+
RNNotifee: 5e3b271e8ea7456a36eec994085543c9adca9168
2657+
RNReactNativeHapticFeedback: eb5395b503c7a8f10de5e6722ef8afd3c61bc4f5
2658+
RNReanimated: fe5c52894886953248a81a10b2a9b6eeb5398d61
2659+
RNScreens: fc78b9b5a1274426d7a59b7d07c272bba13604fa
2660+
RNShare: dcef43a8864fcc114fd582edba7832a906fd318d
2661+
RNSVG: 71e35e78add645b84b52b0c6f203f91028e1ab5e
26622662
SDWebImage: a7f831e1a65eb5e285e3fb046a23fcfbf08e696d
26632663
SDWebImageWebPCoder: 908b83b6adda48effe7667cd2b7f78c897e5111d
26642664
SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
2665-
stream-chat-react-native: ba870d69df921790816046ea3cdf32fbd5973a73
2665+
stream-chat-react-native: 655e616ec1738f03ab9796eb12693bb1a91bb65e
26662666
Yoga: be02ca501b03c79d7027a6bbbd0a8db985034f11
26672667

26682668
PODFILE CHECKSUM: 4f662370295f8f9cee909f1a4c59a614999a209d
26692669

2670-
COCOAPODS: 1.14.3
2670+
COCOAPODS: 1.16.2

examples/SampleApp/yarn.lock

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7580,10 +7580,9 @@ statuses@~1.5.0:
75807580
version "0.0.0"
75817581
uid ""
75827582

7583-
stream-chat@^9.0.0:
7584-
version "9.0.0"
7585-
resolved "https://registry.yarnpkg.com/stream-chat/-/stream-chat-9.0.0.tgz#cb22dcb8b7f070c623a13b6b75b212d560534d6c"
7586-
integrity sha512-I4+/DEp7dP3WBgRmqHaLswL+Y2fyQkUWJhYBS5zx4bpu1cYM6WEir9HYjToDNuJjltqa/FFIEF/tMPWr7iTc0A==
7583+
stream-chat@getstream/stream-chat-js#handle-command-injection:
7584+
version "0.0.0-development"
7585+
resolved "https://codeload.github.com/getstream/stream-chat-js/tar.gz/780c52cfc3cd7379273a9b8db34461fb935f568d"
75877586
dependencies:
75887587
"@types/jsonwebtoken" "^9.0.8"
75897588
"@types/ws" "^8.5.14"
@@ -7595,21 +7594,6 @@ stream-chat@^9.0.0:
75957594
linkifyjs "^4.2.0"
75967595
ws "^8.18.1"
75977596

7598-
stream-chat@^8.57.6:
7599-
version "8.60.0"
7600-
resolved "https://registry.yarnpkg.com/stream-chat/-/stream-chat-8.60.0.tgz#b67d4fbb185da53fb8ac5fc5759986d6ad7e19a3"
7601-
integrity sha512-7FpO7Wno++r+n+x9aFuXtGYtNO06CIMd2Bxe3doYZLhMfS0nuaXloeFlGcMT0r4U/6bnguz1qQdDJUPNQAS8bQ==
7602-
dependencies:
7603-
"@babel/runtime" "^7.27.0"
7604-
"@types/jsonwebtoken" "~9.0.0"
7605-
"@types/ws" "^7.4.0"
7606-
axios "^1.6.0"
7607-
base64-js "^1.5.1"
7608-
form-data "^4.0.0"
7609-
isomorphic-ws "^4.0.1"
7610-
jsonwebtoken "~9.0.0"
7611-
ws "^7.5.10"
7612-
76137597
strict-uri-encode@^2.0.0:
76147598
version "2.0.0"
76157599
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"

examples/TypeScriptMessaging/yarn.lock

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6939,10 +6939,9 @@ statuses@~1.5.0:
69396939
version "0.0.0"
69406940
uid ""
69416941

6942-
stream-chat@^9.0.0:
6943-
version "9.0.0"
6944-
resolved "https://registry.yarnpkg.com/stream-chat/-/stream-chat-9.0.0.tgz#cb22dcb8b7f070c623a13b6b75b212d560534d6c"
6945-
integrity sha512-I4+/DEp7dP3WBgRmqHaLswL+Y2fyQkUWJhYBS5zx4bpu1cYM6WEir9HYjToDNuJjltqa/FFIEF/tMPWr7iTc0A==
6942+
stream-chat@getstream/stream-chat-js#handle-command-injection:
6943+
version "0.0.0-development"
6944+
resolved "https://codeload.github.com/getstream/stream-chat-js/tar.gz/780c52cfc3cd7379273a9b8db34461fb935f568d"
69466945
dependencies:
69476946
"@types/jsonwebtoken" "^9.0.8"
69486947
"@types/ws" "^8.5.14"
@@ -6954,21 +6953,6 @@ stream-chat@^9.0.0:
69546953
linkifyjs "^4.2.0"
69556954
ws "^8.18.1"
69566955

6957-
stream-chat@^8.57.6:
6958-
version "8.60.0"
6959-
resolved "https://registry.yarnpkg.com/stream-chat/-/stream-chat-8.60.0.tgz#b67d4fbb185da53fb8ac5fc5759986d6ad7e19a3"
6960-
integrity sha512-7FpO7Wno++r+n+x9aFuXtGYtNO06CIMd2Bxe3doYZLhMfS0nuaXloeFlGcMT0r4U/6bnguz1qQdDJUPNQAS8bQ==
6961-
dependencies:
6962-
"@babel/runtime" "^7.27.0"
6963-
"@types/jsonwebtoken" "~9.0.0"
6964-
"@types/ws" "^7.4.0"
6965-
axios "^1.6.0"
6966-
base64-js "^1.5.1"
6967-
form-data "^4.0.0"
6968-
isomorphic-ws "^4.0.1"
6969-
jsonwebtoken "~9.0.0"
6970-
ws "^7.5.10"
6971-
69726956
strict-uri-encode@^2.0.0:
69736957
version "2.0.0"
69746958
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"

package/expo-package/yarn.lock

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4787,10 +4787,9 @@ [email protected], stream-buffers@~2.2.0:
47874787
version "0.0.0"
47884788
uid ""
47894789

4790-
stream-chat@^9.0.0:
4791-
version "9.0.0"
4792-
resolved "https://registry.yarnpkg.com/stream-chat/-/stream-chat-9.0.0.tgz#cb22dcb8b7f070c623a13b6b75b212d560534d6c"
4793-
integrity sha512-I4+/DEp7dP3WBgRmqHaLswL+Y2fyQkUWJhYBS5zx4bpu1cYM6WEir9HYjToDNuJjltqa/FFIEF/tMPWr7iTc0A==
4790+
stream-chat@getstream/stream-chat-js#handle-command-injection:
4791+
version "0.0.0-development"
4792+
resolved "https://codeload.github.com/getstream/stream-chat-js/tar.gz/780c52cfc3cd7379273a9b8db34461fb935f568d"
47944793
dependencies:
47954794
"@types/jsonwebtoken" "^9.0.8"
47964795
"@types/ws" "^8.5.14"

package/native-package/yarn.lock

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3459,10 +3459,9 @@ statuses@~1.5.0:
34593459
version "0.0.0"
34603460
uid ""
34613461

3462-
stream-chat@^9.0.0:
3463-
version "9.0.0"
3464-
resolved "https://registry.yarnpkg.com/stream-chat/-/stream-chat-9.0.0.tgz#cb22dcb8b7f070c623a13b6b75b212d560534d6c"
3465-
integrity sha512-I4+/DEp7dP3WBgRmqHaLswL+Y2fyQkUWJhYBS5zx4bpu1cYM6WEir9HYjToDNuJjltqa/FFIEF/tMPWr7iTc0A==
3462+
stream-chat@getstream/stream-chat-js#handle-command-injection:
3463+
version "0.0.0-development"
3464+
resolved "https://codeload.github.com/getstream/stream-chat-js/tar.gz/780c52cfc3cd7379273a9b8db34461fb935f568d"
34663465
dependencies:
34673466
"@types/jsonwebtoken" "^9.0.8"
34683467
"@types/ws" "^8.5.14"

package/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@
7878
"path": "0.12.7",
7979
"react-native-markdown-package": "1.8.2",
8080
"react-native-url-polyfill": "^1.3.0",
81-
"stream-chat": "^9.0.0",
81+
"stream-chat": "getstream/stream-chat-js#handle-command-injection",
8282
"use-sync-external-store": "^1.4.0"
8383
},
8484
"peerDependencies": {

package/src/components/AutoCompleteInput/AutoCompleteInput.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
TextInputSelectionChangeEventData,
1010
} from 'react-native';
1111

12-
import { CustomDataManagerState, TextComposerState } from 'stream-chat';
12+
import { MessageComposerConfig, TextComposerState } from 'stream-chat';
1313

1414
import {
1515
ChannelContextValue,
@@ -42,11 +42,12 @@ type AutoCompleteInputPropsWithContext = TextInputProps &
4242
type AutoCompleteInputProps = Partial<AutoCompleteInputPropsWithContext>;
4343

4444
const textComposerStateSelector = (state: TextComposerState) => ({
45+
command: state.command,
4546
text: state.text,
4647
});
4748

48-
const customComposerDataSelector = (state: CustomDataManagerState) => ({
49-
command: state.custom.command,
49+
const configStateSelector = (state: MessageComposerConfig) => ({
50+
enabled: state.text.enabled,
5051
});
5152

5253
const MAX_NUMBER_OF_LINES = 5;
@@ -56,9 +57,9 @@ const AutoCompleteInputWithContext = (props: AutoCompleteInputPropsWithContext)
5657
const [localText, setLocalText] = useState('');
5758
const [textHeight, setTextHeight] = useState(0);
5859
const messageComposer = useMessageComposer();
59-
const { customDataManager, textComposer } = messageComposer;
60-
const { text } = useStateStore(textComposer.state, textComposerStateSelector);
61-
const { command } = useStateStore(customDataManager.state, customComposerDataSelector);
60+
const { textComposer } = messageComposer;
61+
const { command, text } = useStateStore(textComposer.state, textComposerStateSelector);
62+
const { enabled } = useStateStore(messageComposer.configState, configStateSelector);
6263

6364
const maxMessageLength = useMemo(() => {
6465
return channel.getConfig()?.max_message_length;
@@ -118,6 +119,7 @@ const AutoCompleteInputWithContext = (props: AutoCompleteInputPropsWithContext)
118119
return (
119120
<TextInput
120121
autoFocus={!!command}
122+
editable={enabled}
121123
maxLength={maxMessageLength}
122124
multiline
123125
onChangeText={onChangeTextHandler}

package/src/components/MessageInput/InputButtons.tsx

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React, { useCallback, useEffect, useState } from 'react';
22
import { StyleSheet, View } from 'react-native';
33

4-
import { CustomDataManagerState, TextComposerState } from 'stream-chat';
4+
import { TextComposerState } from 'stream-chat';
55

66
import { AttachmentPickerContextValue, useAttachmentPickerContext } from '../../contexts';
77
import { useAttachmentManagerState } from '../../contexts/messageInputContext/hooks/useAttachmentManagerState';
@@ -30,13 +30,10 @@ export type InputButtonsWithContextProps = Pick<
3030
Pick<AttachmentPickerContextValue, 'selectedPicker'>;
3131

3232
const textComposerStateSelector = (state: TextComposerState) => ({
33+
command: state.command,
3334
text: state.text,
3435
});
3536

36-
const customComposerDataSelector = (state: CustomDataManagerState) => ({
37-
command: state.custom.command,
38-
});
39-
4037
export const InputButtonsWithContext = (props: InputButtonsWithContextProps) => {
4138
const {
4239
AttachButton,
@@ -47,9 +44,9 @@ export const InputButtonsWithContext = (props: InputButtonsWithContextProps) =>
4744
hasImagePicker,
4845
MoreOptionsButton,
4946
} = props;
50-
const { customDataManager, textComposer } = useMessageComposer();
51-
const { text } = useStateStore(textComposer.state, textComposerStateSelector);
52-
const { command } = useStateStore(customDataManager.state, customComposerDataSelector);
47+
const { textComposer } = useMessageComposer();
48+
const { command, text } = useStateStore(textComposer.state, textComposerStateSelector);
49+
5350
const [showMoreOptions, setShowMoreOptions] = useState(true);
5451
const { attachments } = useAttachmentManagerState();
5552

package/src/components/MessageInput/MessageInput.tsx

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import Animated, {
1717
} from 'react-native-reanimated';
1818

1919
import {
20-
type CustomDataManagerState,
2120
FileReference,
2221
isLocalImageAttachment,
2322
type MessageComposerState,
@@ -155,15 +154,12 @@ type MessageInputPropsWithContext = Pick<
155154
Pick<TranslationContextValue, 't'>;
156155

157156
const textComposerStateSelector = (state: TextComposerState) => ({
157+
command: state.command,
158158
mentionedUsers: state.mentionedUsers,
159159
suggestions: state.suggestions,
160160
text: state.text,
161161
});
162162

163-
const customComposerDataSelector = (state: CustomDataManagerState) => ({
164-
command: state.custom.command,
165-
});
166-
167163
const messageComposerStateStoreSelector = (state: MessageComposerState) => ({
168164
quotedMessage: state.quotedMessage,
169165
});
@@ -218,9 +214,11 @@ const MessageInputWithContext = (props: MessageInputPropsWithContext) => {
218214
const [hasResetFiles, setHasResetFiles] = useState(false);
219215

220216
const messageComposer = useMessageComposer();
221-
const { attachmentManager, customDataManager, textComposer } = messageComposer;
222-
const { mentionedUsers, text } = useStateStore(textComposer.state, textComposerStateSelector);
223-
const { command } = useStateStore(customDataManager.state, customComposerDataSelector);
217+
const { attachmentManager, textComposer } = messageComposer;
218+
const { command, mentionedUsers, text } = useStateStore(
219+
textComposer.state,
220+
textComposerStateSelector,
221+
);
224222
const { quotedMessage } = useStateStore(messageComposer.state, messageComposerStateStoreSelector);
225223
const { attachments, availableUploadSlots } = useAttachmentManagerState();
226224
const hasSendableData = useMessageComposerHasSendableData();

0 commit comments

Comments
 (0)