stream-chat-react-native-core 8.13.15 → 8.13.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js +38 -9
- package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js +38 -9
- package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/AutoCompleteInput/AutoCompleteInput.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/AutoCompleteInput/AutoCompleteInput.tsx +51 -11
- package/src/components/AutoCompleteInput/__tests__/AutoCompleteInput.test.js +118 -0
- package/src/version.json +1 -1
|
@@ -55,6 +55,31 @@ var AutoCompleteInputWithContext = function AutoCompleteInputWithContext(props)
|
|
|
55
55
|
text = _useStateStore.text;
|
|
56
56
|
var _useStateStore2 = (0, _useStateStore3.useStateStore)(messageComposer.configState, configStateSelector),
|
|
57
57
|
enabled = _useStateStore2.enabled;
|
|
58
|
+
var latestTextRef = (0, _react.useRef)('');
|
|
59
|
+
var latestSelectionRef = (0, _react.useRef)({
|
|
60
|
+
end: 0,
|
|
61
|
+
start: 0
|
|
62
|
+
});
|
|
63
|
+
var flushHandleRef = (0, _react.useRef)(null);
|
|
64
|
+
var flushChange = (0, _react.useCallback)(function () {
|
|
65
|
+
flushHandleRef.current = null;
|
|
66
|
+
textComposer.handleChange({
|
|
67
|
+
selection: latestSelectionRef.current,
|
|
68
|
+
text: latestTextRef.current
|
|
69
|
+
});
|
|
70
|
+
}, [textComposer]);
|
|
71
|
+
var scheduleChange = (0, _react.useCallback)(function () {
|
|
72
|
+
if (flushHandleRef.current !== null) return;
|
|
73
|
+
flushHandleRef.current = setTimeout(flushChange, 0);
|
|
74
|
+
}, [flushChange]);
|
|
75
|
+
(0, _react.useEffect)(function () {
|
|
76
|
+
return function () {
|
|
77
|
+
if (flushHandleRef.current !== null) {
|
|
78
|
+
clearTimeout(flushHandleRef.current);
|
|
79
|
+
flushHandleRef.current = null;
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
}, []);
|
|
58
83
|
var maxMessageLength = (0, _react.useMemo)(function () {
|
|
59
84
|
var _channel$getConfig;
|
|
60
85
|
return (_channel$getConfig = channel.getConfig()) == null ? void 0 : _channel$getConfig.max_message_length;
|
|
@@ -65,21 +90,25 @@ var AutoCompleteInputWithContext = function AutoCompleteInputWithContext(props)
|
|
|
65
90
|
}, [props.numberOfLines]);
|
|
66
91
|
(0, _react.useEffect)(function () {
|
|
67
92
|
setLocalText(text);
|
|
93
|
+
if (text !== latestTextRef.current) {
|
|
94
|
+
latestTextRef.current = text;
|
|
95
|
+
latestSelectionRef.current = {
|
|
96
|
+
end: text.length,
|
|
97
|
+
start: text.length
|
|
98
|
+
};
|
|
99
|
+
}
|
|
68
100
|
}, [text]);
|
|
69
101
|
var handleSelectionChange = (0, _react.useCallback)(function (e) {
|
|
70
102
|
var selection = e.nativeEvent.selection;
|
|
103
|
+
latestSelectionRef.current = selection;
|
|
71
104
|
textComposer.setSelection(selection);
|
|
72
|
-
|
|
105
|
+
scheduleChange();
|
|
106
|
+
}, [scheduleChange, textComposer]);
|
|
73
107
|
var onChangeTextHandler = (0, _react.useCallback)(function (newText) {
|
|
74
108
|
setLocalText(newText);
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
start: newText.length
|
|
79
|
-
},
|
|
80
|
-
text: newText
|
|
81
|
-
});
|
|
82
|
-
}, [textComposer]);
|
|
109
|
+
latestTextRef.current = newText;
|
|
110
|
+
scheduleChange();
|
|
111
|
+
}, [scheduleChange]);
|
|
83
112
|
var _useTheme = (0, _ThemeContext.useTheme)(),
|
|
84
113
|
_useTheme$theme = _useTheme.theme,
|
|
85
114
|
_useTheme$theme$color = _useTheme$theme.colors,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_ChannelContext","_useMessageComposer","_MessageInputContext","_ThemeContext","_TranslationContext","_useStateStore3","_jsxRuntime","_excluded","_this","_jsxFileName","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","textComposerStateSelector","state","command","text","configStateSelector","enabled","MAX_NUMBER_OF_LINES","AutoCompleteInputWithContext","props","channel","_props$cooldownActive","cooldownActive","setInputBoxRef","_props$TextInputCompo","TextInputComponent","RNTextInput","rest","_objectWithoutProperties2","_useState","useState","_useState2","_slicedToArray2","localText","setLocalText","_useState3","_useState4","textHeight","setTextHeight","messageComposer","useMessageComposer","textComposer","_useStateStore","useStateStore","_useStateStore2","configState","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_ChannelContext","_useMessageComposer","_MessageInputContext","_ThemeContext","_TranslationContext","_useStateStore3","_jsxRuntime","_excluded","_this","_jsxFileName","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","textComposerStateSelector","state","command","text","configStateSelector","enabled","MAX_NUMBER_OF_LINES","AutoCompleteInputWithContext","props","channel","_props$cooldownActive","cooldownActive","setInputBoxRef","_props$TextInputCompo","TextInputComponent","RNTextInput","rest","_objectWithoutProperties2","_useState","useState","_useState2","_slicedToArray2","localText","setLocalText","_useState3","_useState4","textHeight","setTextHeight","messageComposer","useMessageComposer","textComposer","_useStateStore","useStateStore","_useStateStore2","configState","latestTextRef","useRef","latestSelectionRef","end","start","flushHandleRef","flushChange","useCallback","current","handleChange","selection","scheduleChange","setTimeout","useEffect","clearTimeout","maxMessageLength","useMemo","_channel$getConfig","getConfig","max_message_length","numberOfLines","_props$numberOfLines","length","handleSelectionChange","nativeEvent","setSelection","onChangeTextHandler","newText","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$color","colors","black","grey","inputBox","messageInput","placeholderText","handleContentSizeChange","_ref","contentSize","height","jsx","assign","autoFocus","editable","maxLength","multiline","onChangeText","onContentSizeChange","onSelectionChange","placeholder","placeholderTextColor","ref","style","styles","color","maxHeight","paddingHorizontal","textAlign","I18nManager","isRTL","testID","value","areEqual","prevProps","nextProps","prevChannel","prevCooldownActive","prevT","nextChannel","nextCooldownActive","nextT","tEqual","cooldownActiveEqual","channelEqual","cid","MemoizedAutoCompleteInput","React","memo","AutoCompleteInput","exports","_useMessageInputConte","useMessageInputContext","_useTranslationContex","useTranslationContext","_useChannelContext","useChannelContext","StyleSheet","create","flex","fontSize","includeFontPadding","paddingVertical","textAlignVertical","displayName"],"sourceRoot":"../../../../src","sources":["components/AutoCompleteInput/AutoCompleteInput.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -55,6 +55,31 @@ var AutoCompleteInputWithContext = function AutoCompleteInputWithContext(props)
|
|
|
55
55
|
text = _useStateStore.text;
|
|
56
56
|
var _useStateStore2 = (0, _useStateStore3.useStateStore)(messageComposer.configState, configStateSelector),
|
|
57
57
|
enabled = _useStateStore2.enabled;
|
|
58
|
+
var latestTextRef = (0, _react.useRef)('');
|
|
59
|
+
var latestSelectionRef = (0, _react.useRef)({
|
|
60
|
+
end: 0,
|
|
61
|
+
start: 0
|
|
62
|
+
});
|
|
63
|
+
var flushHandleRef = (0, _react.useRef)(null);
|
|
64
|
+
var flushChange = (0, _react.useCallback)(function () {
|
|
65
|
+
flushHandleRef.current = null;
|
|
66
|
+
textComposer.handleChange({
|
|
67
|
+
selection: latestSelectionRef.current,
|
|
68
|
+
text: latestTextRef.current
|
|
69
|
+
});
|
|
70
|
+
}, [textComposer]);
|
|
71
|
+
var scheduleChange = (0, _react.useCallback)(function () {
|
|
72
|
+
if (flushHandleRef.current !== null) return;
|
|
73
|
+
flushHandleRef.current = setTimeout(flushChange, 0);
|
|
74
|
+
}, [flushChange]);
|
|
75
|
+
(0, _react.useEffect)(function () {
|
|
76
|
+
return function () {
|
|
77
|
+
if (flushHandleRef.current !== null) {
|
|
78
|
+
clearTimeout(flushHandleRef.current);
|
|
79
|
+
flushHandleRef.current = null;
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
}, []);
|
|
58
83
|
var maxMessageLength = (0, _react.useMemo)(function () {
|
|
59
84
|
var _channel$getConfig;
|
|
60
85
|
return (_channel$getConfig = channel.getConfig()) == null ? void 0 : _channel$getConfig.max_message_length;
|
|
@@ -65,21 +90,25 @@ var AutoCompleteInputWithContext = function AutoCompleteInputWithContext(props)
|
|
|
65
90
|
}, [props.numberOfLines]);
|
|
66
91
|
(0, _react.useEffect)(function () {
|
|
67
92
|
setLocalText(text);
|
|
93
|
+
if (text !== latestTextRef.current) {
|
|
94
|
+
latestTextRef.current = text;
|
|
95
|
+
latestSelectionRef.current = {
|
|
96
|
+
end: text.length,
|
|
97
|
+
start: text.length
|
|
98
|
+
};
|
|
99
|
+
}
|
|
68
100
|
}, [text]);
|
|
69
101
|
var handleSelectionChange = (0, _react.useCallback)(function (e) {
|
|
70
102
|
var selection = e.nativeEvent.selection;
|
|
103
|
+
latestSelectionRef.current = selection;
|
|
71
104
|
textComposer.setSelection(selection);
|
|
72
|
-
|
|
105
|
+
scheduleChange();
|
|
106
|
+
}, [scheduleChange, textComposer]);
|
|
73
107
|
var onChangeTextHandler = (0, _react.useCallback)(function (newText) {
|
|
74
108
|
setLocalText(newText);
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
start: newText.length
|
|
79
|
-
},
|
|
80
|
-
text: newText
|
|
81
|
-
});
|
|
82
|
-
}, [textComposer]);
|
|
109
|
+
latestTextRef.current = newText;
|
|
110
|
+
scheduleChange();
|
|
111
|
+
}, [scheduleChange]);
|
|
83
112
|
var _useTheme = (0, _ThemeContext.useTheme)(),
|
|
84
113
|
_useTheme$theme = _useTheme.theme,
|
|
85
114
|
_useTheme$theme$color = _useTheme$theme.colors,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_ChannelContext","_useMessageComposer","_MessageInputContext","_ThemeContext","_TranslationContext","_useStateStore3","_jsxRuntime","_excluded","_this","_jsxFileName","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","textComposerStateSelector","state","command","text","configStateSelector","enabled","MAX_NUMBER_OF_LINES","AutoCompleteInputWithContext","props","channel","_props$cooldownActive","cooldownActive","setInputBoxRef","_props$TextInputCompo","TextInputComponent","RNTextInput","rest","_objectWithoutProperties2","_useState","useState","_useState2","_slicedToArray2","localText","setLocalText","_useState3","_useState4","textHeight","setTextHeight","messageComposer","useMessageComposer","textComposer","_useStateStore","useStateStore","_useStateStore2","configState","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_ChannelContext","_useMessageComposer","_MessageInputContext","_ThemeContext","_TranslationContext","_useStateStore3","_jsxRuntime","_excluded","_this","_jsxFileName","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","textComposerStateSelector","state","command","text","configStateSelector","enabled","MAX_NUMBER_OF_LINES","AutoCompleteInputWithContext","props","channel","_props$cooldownActive","cooldownActive","setInputBoxRef","_props$TextInputCompo","TextInputComponent","RNTextInput","rest","_objectWithoutProperties2","_useState","useState","_useState2","_slicedToArray2","localText","setLocalText","_useState3","_useState4","textHeight","setTextHeight","messageComposer","useMessageComposer","textComposer","_useStateStore","useStateStore","_useStateStore2","configState","latestTextRef","useRef","latestSelectionRef","end","start","flushHandleRef","flushChange","useCallback","current","handleChange","selection","scheduleChange","setTimeout","useEffect","clearTimeout","maxMessageLength","useMemo","_channel$getConfig","getConfig","max_message_length","numberOfLines","_props$numberOfLines","length","handleSelectionChange","nativeEvent","setSelection","onChangeTextHandler","newText","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$color","colors","black","grey","inputBox","messageInput","placeholderText","handleContentSizeChange","_ref","contentSize","height","jsx","assign","autoFocus","editable","maxLength","multiline","onChangeText","onContentSizeChange","onSelectionChange","placeholder","placeholderTextColor","ref","style","styles","color","maxHeight","paddingHorizontal","textAlign","I18nManager","isRTL","testID","value","areEqual","prevProps","nextProps","prevChannel","prevCooldownActive","prevT","nextChannel","nextCooldownActive","nextT","tEqual","cooldownActiveEqual","channelEqual","cid","MemoizedAutoCompleteInput","React","memo","AutoCompleteInput","exports","_useMessageInputConte","useMessageInputContext","_useTranslationContex","useTranslationContext","_useChannelContext","useChannelContext","StyleSheet","create","flex","fontSize","includeFontPadding","paddingVertical","textAlignVertical","displayName"],"sourceRoot":"../../../../src","sources":["components/AutoCompleteInput/AutoCompleteInput.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/version.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoCompleteInput.d.ts","sourceRoot":"","sources":["../../../../src/components/AutoCompleteInput/AutoCompleteInput.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"AutoCompleteInput.d.ts","sourceRoot":"","sources":["../../../../src/components/AutoCompleteInput/AutoCompleteInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AACjF,OAAO,EAEL,SAAS,IAAI,WAAW,EAGxB,cAAc,EAEf,MAAM,cAAc,CAAC;AAItB,OAAO,EACL,mBAAmB,EAEpB,MAAM,8CAA8C,CAAC;AAEtD,OAAO,EACL,wBAAwB,EAEzB,MAAM,wDAAwD,CAAC;AAEhE,OAAO,EACL,uBAAuB,EAExB,MAAM,sDAAsD,CAAC;AAI9D,KAAK,iCAAiC,GAAG,cAAc,GACrD,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,GACpC,IAAI,CAAC,wBAAwB,EAAE,gBAAgB,CAAC,GAChD,IAAI,CAAC,uBAAuB,EAAE,GAAG,CAAC,GAAG;IACnC;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,KAAK,CAAC,aAAa,CACtC,cAAc,GAAG;QACf,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;KACzC,CACF,CAAC;CACH,CAAC;AAEJ,KAAK,sBAAsB,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;AAqLzE,eAAO,MAAM,iBAAiB;YAAW,sBAAsB;;CAe9D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stream-chat-react-native-core",
|
|
3
3
|
"description": "The official React Native and Expo components for Stream Chat, a service for building chat applications",
|
|
4
|
-
"version": "8.13.
|
|
4
|
+
"version": "8.13.16",
|
|
5
5
|
"author": {
|
|
6
6
|
"company": "Stream.io Inc",
|
|
7
7
|
"name": "Stream.io Inc"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
1
|
+
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
2
2
|
import {
|
|
3
3
|
I18nManager,
|
|
4
4
|
TextInput as RNTextInput,
|
|
@@ -72,6 +72,42 @@ const AutoCompleteInputWithContext = (props: AutoCompleteInputPropsWithContext)
|
|
|
72
72
|
const { command, text } = useStateStore(textComposer.state, textComposerStateSelector);
|
|
73
73
|
const { enabled } = useStateStore(messageComposer.configState, configStateSelector);
|
|
74
74
|
|
|
75
|
+
// RN's onChangeText doesn't carry cursor info, and iOS / Android fire
|
|
76
|
+
// onChangeText vs onSelectionChange in different orders. Rather than derive
|
|
77
|
+
// the caret from a text-length delta (fragile — gets clobbered by re-renders
|
|
78
|
+
// and varies across platforms), we hold the latest values reported by native
|
|
79
|
+
// and call into the LLC once both have settled.
|
|
80
|
+
const latestTextRef = useRef('');
|
|
81
|
+
const latestSelectionRef = useRef<{ end: number; start: number }>({
|
|
82
|
+
end: 0,
|
|
83
|
+
start: 0,
|
|
84
|
+
});
|
|
85
|
+
const flushHandleRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
|
86
|
+
|
|
87
|
+
const flushChange = useCallback(() => {
|
|
88
|
+
flushHandleRef.current = null;
|
|
89
|
+
textComposer.handleChange({
|
|
90
|
+
selection: latestSelectionRef.current,
|
|
91
|
+
text: latestTextRef.current,
|
|
92
|
+
});
|
|
93
|
+
}, [textComposer]);
|
|
94
|
+
|
|
95
|
+
// Defer to the next task so onChangeText and onSelectionChange both land
|
|
96
|
+
// before we forward to the LLC, regardless of platform ordering.
|
|
97
|
+
const scheduleChange = useCallback(() => {
|
|
98
|
+
if (flushHandleRef.current !== null) return;
|
|
99
|
+
flushHandleRef.current = setTimeout(flushChange, 0);
|
|
100
|
+
}, [flushChange]);
|
|
101
|
+
|
|
102
|
+
useEffect(() => {
|
|
103
|
+
return () => {
|
|
104
|
+
if (flushHandleRef.current !== null) {
|
|
105
|
+
clearTimeout(flushHandleRef.current);
|
|
106
|
+
flushHandleRef.current = null;
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
}, []);
|
|
110
|
+
|
|
75
111
|
const maxMessageLength = useMemo(() => {
|
|
76
112
|
return channel.getConfig()?.max_message_length;
|
|
77
113
|
}, [channel]);
|
|
@@ -82,29 +118,33 @@ const AutoCompleteInputWithContext = (props: AutoCompleteInputPropsWithContext)
|
|
|
82
118
|
|
|
83
119
|
useEffect(() => {
|
|
84
120
|
setLocalText(text);
|
|
121
|
+
// Only resync the refs when the text change came from outside (clear after
|
|
122
|
+
// send, draft restore, programmatic setText). For changes we triggered
|
|
123
|
+
// ourselves, latestTextRef is already up to date and overwriting the
|
|
124
|
+
// selection would clobber what onSelectionChange just told us.
|
|
125
|
+
if (text !== latestTextRef.current) {
|
|
126
|
+
latestTextRef.current = text;
|
|
127
|
+
latestSelectionRef.current = { end: text.length, start: text.length };
|
|
128
|
+
}
|
|
85
129
|
}, [text]);
|
|
86
130
|
|
|
87
131
|
const handleSelectionChange = useCallback(
|
|
88
132
|
(e: TextInputSelectionChangeEvent) => {
|
|
89
133
|
const { selection } = e.nativeEvent;
|
|
134
|
+
latestSelectionRef.current = selection;
|
|
90
135
|
textComposer.setSelection(selection);
|
|
136
|
+
scheduleChange();
|
|
91
137
|
},
|
|
92
|
-
[textComposer],
|
|
138
|
+
[scheduleChange, textComposer],
|
|
93
139
|
);
|
|
94
140
|
|
|
95
141
|
const onChangeTextHandler = useCallback(
|
|
96
142
|
(newText: string) => {
|
|
97
143
|
setLocalText(newText);
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
selection: {
|
|
101
|
-
end: newText.length,
|
|
102
|
-
start: newText.length,
|
|
103
|
-
},
|
|
104
|
-
text: newText,
|
|
105
|
-
});
|
|
144
|
+
latestTextRef.current = newText;
|
|
145
|
+
scheduleChange();
|
|
106
146
|
},
|
|
107
|
-
[
|
|
147
|
+
[scheduleChange],
|
|
108
148
|
);
|
|
109
149
|
|
|
110
150
|
const {
|
|
@@ -99,8 +99,13 @@ describe('AutoCompleteInput', () => {
|
|
|
99
99
|
|
|
100
100
|
const input = queryByTestId('auto-complete-text-input');
|
|
101
101
|
|
|
102
|
+
// RN fires both events for every keystroke; we forward to the LLC once
|
|
103
|
+
// both have settled, so the test mirrors that.
|
|
102
104
|
act(() => {
|
|
103
105
|
fireEvent.changeText(input, 'hello');
|
|
106
|
+
fireEvent(input, 'selectionChange', {
|
|
107
|
+
nativeEvent: { selection: { end: 5, start: 5 } },
|
|
108
|
+
});
|
|
104
109
|
});
|
|
105
110
|
|
|
106
111
|
await waitFor(() => {
|
|
@@ -113,6 +118,119 @@ describe('AutoCompleteInput', () => {
|
|
|
113
118
|
});
|
|
114
119
|
});
|
|
115
120
|
|
|
121
|
+
it('forwards the real caret position to handleChange when typing in the middle of multi-line text', async () => {
|
|
122
|
+
// Regression: when the user inserts a character somewhere other than the
|
|
123
|
+
// end of the text (e.g. typing "@" between paragraphs), the original
|
|
124
|
+
// implementation passed selection.end = newText.length, which caused the
|
|
125
|
+
// LLC mention-trigger regex to miss "@" on multi-line input because it
|
|
126
|
+
// only tolerates one whitespace between "@" and end-of-string.
|
|
127
|
+
const { textComposer } = channel.messageComposer;
|
|
128
|
+
const spyHandleChange = jest.spyOn(textComposer, 'handleChange');
|
|
129
|
+
|
|
130
|
+
renderComponent({ channelProps: { channel }, client, props: {} });
|
|
131
|
+
|
|
132
|
+
const input = screen.getByTestId('auto-complete-text-input');
|
|
133
|
+
|
|
134
|
+
// Seed the input with some multi-line text and place the caret between
|
|
135
|
+
// the two leading newlines (position 6 — right after "asdf\n\n", before
|
|
136
|
+
// the trailing "\n\n dsfa").
|
|
137
|
+
const seeded = 'asdf\n\n\n\n dsfa';
|
|
138
|
+
const caret = 6;
|
|
139
|
+
act(() => {
|
|
140
|
+
fireEvent.changeText(input, seeded);
|
|
141
|
+
fireEvent(input, 'selectionChange', {
|
|
142
|
+
nativeEvent: { selection: { end: caret, start: caret } },
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
await waitFor(() => {
|
|
147
|
+
expect(spyHandleChange).toHaveBeenCalledWith({
|
|
148
|
+
selection: { end: caret, start: caret },
|
|
149
|
+
text: seeded,
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
spyHandleChange.mockClear();
|
|
154
|
+
|
|
155
|
+
// User types "@" at the caret. Both events fire in a single keystroke.
|
|
156
|
+
const inserted = 'asdf\n\n@\n\n dsfa';
|
|
157
|
+
const newCaret = caret + 1;
|
|
158
|
+
act(() => {
|
|
159
|
+
fireEvent.changeText(input, inserted);
|
|
160
|
+
fireEvent(input, 'selectionChange', {
|
|
161
|
+
nativeEvent: { selection: { end: newCaret, start: newCaret } },
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
await waitFor(() => {
|
|
166
|
+
// Must land right after the inserted "@", not at end-of-string —
|
|
167
|
+
// otherwise the LLC mention regex misses "@" because of the trailing
|
|
168
|
+
// "\n\n dsfa".
|
|
169
|
+
expect(spyHandleChange).toHaveBeenCalledWith({
|
|
170
|
+
selection: { end: newCaret, start: newCaret },
|
|
171
|
+
text: inserted,
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
it('forwards the real caret to handleChange when the user deletes "@" and retypes it', async () => {
|
|
177
|
+
// Regression: deleting "@" and retyping it on the same single line caused
|
|
178
|
+
// the picker to stay hidden on iOS — and on Android even with newlines.
|
|
179
|
+
// The bug was that we derived the caret from a text-length delta plus a
|
|
180
|
+
// stale ref; the coalesced flush now uses whatever native actually
|
|
181
|
+
// reported via onSelectionChange.
|
|
182
|
+
const { textComposer } = channel.messageComposer;
|
|
183
|
+
const spyHandleChange = jest.spyOn(textComposer, 'handleChange');
|
|
184
|
+
|
|
185
|
+
renderComponent({ channelProps: { channel }, client, props: {} });
|
|
186
|
+
|
|
187
|
+
const input = screen.getByTestId('auto-complete-text-input');
|
|
188
|
+
|
|
189
|
+
// 1. Seed "asdf @ dsfa" with the caret right after "@".
|
|
190
|
+
act(() => {
|
|
191
|
+
fireEvent.changeText(input, 'asdf @ dsfa');
|
|
192
|
+
fireEvent(input, 'selectionChange', {
|
|
193
|
+
nativeEvent: { selection: { end: 6, start: 6 } },
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
await waitFor(() => {
|
|
198
|
+
expect(spyHandleChange).toHaveBeenCalledWith({
|
|
199
|
+
selection: { end: 6, start: 6 },
|
|
200
|
+
text: 'asdf @ dsfa',
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
// 2. Delete the "@" — text shrinks by one, caret moves to position 5.
|
|
205
|
+
act(() => {
|
|
206
|
+
fireEvent.changeText(input, 'asdf dsfa');
|
|
207
|
+
fireEvent(input, 'selectionChange', {
|
|
208
|
+
nativeEvent: { selection: { end: 5, start: 5 } },
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
spyHandleChange.mockClear();
|
|
213
|
+
|
|
214
|
+
// 3. Retype "@" at position 5.
|
|
215
|
+
act(() => {
|
|
216
|
+
fireEvent.changeText(input, 'asdf @ dsfa');
|
|
217
|
+
fireEvent(input, 'selectionChange', {
|
|
218
|
+
nativeEvent: { selection: { end: 6, start: 6 } },
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
|
|
222
|
+
await waitFor(() => {
|
|
223
|
+
// The cursor must be reported at 6 (right after the new "@"), not
|
|
224
|
+
// somewhere stale. With a wrong caret, the LLC slice would include
|
|
225
|
+
// " dsfa" after the "@" and the query would be " dsfa" instead of "",
|
|
226
|
+
// which returns zero users → picker stays hidden.
|
|
227
|
+
expect(spyHandleChange).toHaveBeenCalledWith({
|
|
228
|
+
selection: { end: 6, start: 6 },
|
|
229
|
+
text: 'asdf @ dsfa',
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
|
|
116
234
|
it('should style the text input with maxHeight that is set by the layout', async () => {
|
|
117
235
|
const channelProps = { channel };
|
|
118
236
|
const props = { numberOfLines: 10 };
|
package/src/version.json
CHANGED