stream-chat-react-native-core 5.3.0 → 5.3.1-beta.1
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/Message/MessageSimple/utils/parseLinks.js +8 -2
- package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.test.js +4 -0
- package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.test.js.map +1 -1
- package/lib/commonjs/components/MessageList/MessageList.js +26 -30
- package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
- package/lib/commonjs/components/MessageList/hooks/useMessageList.js +7 -2
- package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
- package/lib/commonjs/components/MessageList/utils/getDateSeparators.js +4 -2
- package/lib/commonjs/components/MessageList/utils/getDateSeparators.js.map +1 -1
- package/lib/commonjs/contexts/messagesContext/MessagesContext.js +2 -2
- package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Message/MessageSimple/utils/parseLinks.js +8 -2
- package/lib/module/components/Message/MessageSimple/utils/parseLinks.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/utils/parseLinks.test.js +4 -0
- package/lib/module/components/Message/MessageSimple/utils/parseLinks.test.js.map +1 -1
- package/lib/module/components/MessageList/MessageList.js +26 -30
- package/lib/module/components/MessageList/MessageList.js.map +1 -1
- package/lib/module/components/MessageList/hooks/useMessageList.js +7 -2
- package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
- package/lib/module/components/MessageList/utils/getDateSeparators.js +4 -2
- package/lib/module/components/MessageList/utils/getDateSeparators.js.map +1 -1
- package/lib/module/contexts/messagesContext/MessagesContext.js +2 -2
- package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/MessageList/MessageList.d.ts +1 -1
- package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts +2 -1
- package/lib/typescript/components/MessageList/utils/__tests__/getDateSeparators.test.d.ts +1 -0
- package/lib/typescript/components/MessageList/utils/getDateSeparators.d.ts +2 -0
- package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +2 -1
- package/package.json +1 -1
- package/src/components/Message/MessageSimple/utils/parseLinks.test.ts +6 -0
- package/src/components/Message/MessageSimple/utils/parseLinks.ts +11 -2
- package/src/components/MessageList/MessageList.tsx +0 -5
- package/src/components/MessageList/hooks/useMessageList.ts +8 -2
- package/src/components/MessageList/utils/__tests__/getDateSeparators.test.ts +71 -0
- package/src/components/MessageList/utils/getDateSeparators.ts +10 -2
- package/src/contexts/messagesContext/MessagesContext.tsx +2 -1
- package/src/version.json +1 -1
|
@@ -22,9 +22,15 @@ var removeMarkdownLinksFromText = function removeMarkdownLinksFromText(input) {
|
|
|
22
22
|
return input.replace(/\[[\w\s]+\]\(.*\)/g, '');
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
+
var removeUserNamesFromText = function removeUserNamesFromText(input) {
|
|
26
|
+
return input.replace(/^@\w+\.?\w/, '');
|
|
27
|
+
};
|
|
28
|
+
|
|
25
29
|
var parseLinksFromText = function parseLinksFromText(input) {
|
|
26
30
|
var matches;
|
|
27
|
-
var
|
|
31
|
+
var strippedInput = [removeMarkdownLinksFromText, removeUserNamesFromText].reduce(function (acc, fn) {
|
|
32
|
+
return fn(acc);
|
|
33
|
+
}, input);
|
|
28
34
|
var results = [];
|
|
29
35
|
var emailRegExp = new RegExp(emailPattern, 'gi');
|
|
30
36
|
|
|
@@ -45,7 +51,7 @@ var parseLinksFromText = function parseLinksFromText(input) {
|
|
|
45
51
|
|
|
46
52
|
var linkRegex = new RegExp(fqdnLinkPattern + "|" + schemePrefixedLinkPattern, 'gi');
|
|
47
53
|
|
|
48
|
-
while ((matches = linkRegex.exec(
|
|
54
|
+
while ((matches = linkRegex.exec(strippedInput)) !== null) {
|
|
49
55
|
var _matches3 = matches,
|
|
50
56
|
_matches4 = (0, _slicedToArray2["default"])(_matches3, 9),
|
|
51
57
|
_raw = _matches4[0],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["parseLinks.ts"],"names":["emailUserName","schema","domain","port","path","queryString","fragment","emailPattern","schemePrefixedLinkPattern","fqdnLinkPattern","removeMarkdownLinksFromText","input","replace","parseLinksFromText","matches","
|
|
1
|
+
{"version":3,"sources":["parseLinks.ts"],"names":["emailUserName","schema","domain","port","path","queryString","fragment","emailPattern","schemePrefixedLinkPattern","fqdnLinkPattern","removeMarkdownLinksFromText","input","replace","removeUserNamesFromText","parseLinksFromText","matches","strippedInput","reduce","acc","fn","results","emailRegExp","RegExp","exec","raw","scheme","displayValue","push","encoded","encodeURI","linkRegex","fqdnScheme","fqdnDomainName","fqdnPort","fqdnPath","fqdnQueryStraing","fqdnFragment","schemePrefixedScheme","schemePrefixedPath","join"],"mappings":"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","sourcesContent":["/**\n * 📣 Note: Do not use named capture groups, as\n * it is not yet available in Hermes.\n *\n * These helpers indend to make it easier to skim read\n * the patterns below, but note that some are optional,\n * specified in the patterns these are added to.\n * */\nconst emailUserName = '[\\\\w+\\\\.~$_-]+';\nconst schema = `(\\\\w{2,15}:\\\\/\\\\/)`;\n// something.tld OR 123.123.123.123\nconst domain = `((?:\\\\w+\\\\.[a-zA-Z]+)+(?:[^:\\\\/\\\\s]+)|(?:\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}))`;\nconst port = `(:[0-9]{1,5})`;\nconst path = `((?:\\\\/)?[^?\\\\s]+)`;\nconst queryString = `(\\\\?[^#\\\\s]+)`;\nconst fragment = `(#[\\\\w_-]+)`;\n\n/**\n * Match any email address, with and without `mailto:`\n */\nconst emailPattern = `(mailto:)?((?:${emailUserName})@(?:${domain}))`;\n\n/**\n * Match any string starting with something that seems like it's a schema.\n * */\nconst schemePrefixedLinkPattern = `${schema}(\\\\S+)`;\n\n/**\n * Match as much as possible of a fqdn, at least with a domain name formed as\n * something.tld\n */\nconst fqdnLinkPattern = `${schema}?${domain}${port}?${path}?${queryString}?${fragment}?`;\n\ninterface Link {\n encoded: string;\n raw: string;\n scheme: string;\n}\n\n/**\n * This is done separately because of the version of javascript run\n * for expo\n * */\nconst removeMarkdownLinksFromText = (input: string) => input.replace(/\\[[\\w\\s]+\\]\\(.*\\)/g, '');\n\n/**\n * Hermes doesn't support lookbehind, so this is done separately to avoid\n * parsing user names as links.\n * */\nconst removeUserNamesFromText = (input: string) => input.replace(/^@\\w+\\.?\\w/, '');\n\nexport const parseLinksFromText = (input: string): Link[] => {\n let matches;\n\n const strippedInput = [removeMarkdownLinksFromText, removeUserNamesFromText].reduce(\n (acc, fn) => fn(acc),\n input,\n );\n\n const results: Link[] = [];\n\n const emailRegExp = new RegExp(emailPattern, 'gi');\n while ((matches = emailRegExp.exec(input)) !== null) {\n const [raw, scheme = 'mailto:', displayValue] = matches;\n results.push({ encoded: encodeURI(displayValue), raw, scheme });\n }\n\n /**\n * The two link patterns are checked with an \"or\" (`|`)\n * to avoid overlapping matches being duplicated in the output.\n * */\n const linkRegex = new RegExp(`${fqdnLinkPattern}|${schemePrefixedLinkPattern}`, 'gi');\n while ((matches = linkRegex.exec(strippedInput)) !== null) {\n const [\n raw,\n fqdnScheme = '',\n fqdnDomainName = '',\n fqdnPort = '',\n fqdnPath = '',\n fqdnQueryStraing = '',\n fqdnFragment = '',\n schemePrefixedScheme = '',\n schemePrefixedPath = '',\n ] = matches;\n\n if (schemePrefixedScheme !== '') {\n results.push({\n encoded: encodeURI(schemePrefixedPath),\n raw,\n scheme: schemePrefixedScheme,\n });\n continue;\n }\n\n results.push({\n encoded: encodeURI(\n [fqdnDomainName, fqdnPort, fqdnPath, fqdnQueryStraing, fqdnFragment].join(''),\n ),\n raw,\n scheme: fqdnScheme,\n });\n }\n\n return results;\n};\n"]}
|
|
@@ -47,5 +47,9 @@ describe('parseLinksFromText', function () {
|
|
|
47
47
|
var result = (0, _parseLinks.parseLinksFromText)(input);
|
|
48
48
|
expect(result).toHaveLength(0);
|
|
49
49
|
});
|
|
50
|
+
it.each([['@user'], ['@user.name']])('does not parse %p as a URL', function (input) {
|
|
51
|
+
var result = (0, _parseLinks.parseLinksFromText)(input);
|
|
52
|
+
expect(result).toHaveLength(0);
|
|
53
|
+
});
|
|
50
54
|
});
|
|
51
55
|
//# sourceMappingURL=parseLinks.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["parseLinks.test.ts"],"names":["describe","it","each","link","expected","result","expect","encoded","toBe","input","toEqual","raw","scheme","email","toHaveLength"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["parseLinks.test.ts"],"names":["describe","it","each","link","expected","result","expect","encoded","toBe","input","toEqual","raw","scheme","email","toHaveLength"],"mappings":"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","sourcesContent":["import { parseLinksFromText } from './parseLinks';\n\ndescribe('parseLinksFromText', () => {\n it.each([\n ['www.getstream.io', 'www.getstream.io'],\n ['getstream.io', 'getstream.io'],\n ['scrn://team-chat', 'team-chat'],\n ['https://localhost', 'localhost'],\n [\n 'https://localhost/with/path?and=query&multiple=params',\n 'localhost/with/path?and=query&multiple=params',\n ],\n ['https://localhost/with/path?and=query#fragment', 'localhost/with/path?and=query#fragment'],\n ['reactnative.stream', 'reactnative.stream'],\n [\n 'https://zh.wikipedia.org/wiki/挪威牛油危機',\n 'zh.wikipedia.org/wiki/%E6%8C%AA%E5%A8%81%E7%89%9B%E6%B2%B9%E5%8D%B1%E6%A9%9F',\n ],\n [\n 'https://getstream.io/chat/docs/react-native/?language=javascript',\n 'getstream.io/chat/docs/react-native/?language=javascript',\n ],\n ['127.0.0.1/local_(development)_server', '127.0.0.1/local_(development)_server'],\n ['https://a.co:8999/ab.php?p=12', 'a.co:8999/ab.php?p=12'],\n [\n 'http://help.apple.com/xcode/mac/current/#/devba7f53ad4',\n 'help.apple.com/xcode/mac/current/#/devba7f53ad4',\n ],\n ])('Returns the encoded value of %p as %p', (link, expected) => {\n const result = parseLinksFromText(link);\n\n expect(result[0].encoded).toBe(expected);\n });\n\n it('parses fqdn', () => {\n const input = `We have put the apim bol,\ntemporarily so :sj: we can later put the monitors on my grasp\non reality right now is\nhttps://www.contrived-example.com:8080/sub/page.php?p1=1🇳🇴&p2=2#fragment-identifier\n:)`;\n\n const result = parseLinksFromText(input);\n\n expect(result).toEqual([\n {\n encoded:\n 'www.contrived-example.com:8080/sub/page.php?p1=1%F0%9F%87%B3%F0%9F%87%B4&p2=2#fragment-identifier',\n raw: 'https://www.contrived-example.com:8080/sub/page.php?p1=1🇳🇴&p2=2#fragment-identifier',\n scheme: 'https://',\n },\n ]);\n });\n\n it.each([\n ['support+rn@getstream.io'],\n ['support.rn@getstream.io'],\n ['support-rn@getstream.io'],\n ['support_rn@getstream.io'],\n ])('Can parse the email address %p', (email) => {\n const result = parseLinksFromText(email);\n\n expect(result[0].encoded).toBe(email);\n expect(result[0].scheme).toBe('mailto:');\n });\n\n it(\"doesn't double the mailto prefix\", () => {\n const input = 'mailto:support@getstream.io';\n\n const result = parseLinksFromText(input);\n\n expect(result[0]).toEqual({\n encoded: 'support@getstream.io',\n raw: input,\n scheme: 'mailto:',\n });\n });\n\n it('Does not falsely parse LINKs from text content', () => {\n const input = `#This string exists to test that we don't produce false positives\n\nExisting links:\n[already a parsed link](https://getstream.io/blog/react-native-how-to-build-bidirectional-infinite-scroll/)\n[even a bogus one]( should not match )\n\n## These should, however, be parsed:\nwww.getstream.io\ngetstream.io\n`;\n const result = parseLinksFromText(input);\n\n expect(result).toHaveLength(2);\n });\n\n it('Encodes incomplete emoji unicode', () => {\n const input = 'https://getstream.io/�';\n const result = parseLinksFromText(input);\n\n expect(result[0]).toEqual({\n encoded: 'getstream.io/%EF%BF%BD',\n raw: 'https://getstream.io/�',\n scheme: 'https://',\n });\n });\n\n it('does not parse a decimal number as a URL', () => {\n const input = '123.456';\n const result = parseLinksFromText(input);\n\n expect(result).toHaveLength(0);\n });\n\n it.each([['@user'], ['@user.name']])('does not parse %p as a URL', (input) => {\n const result = parseLinksFromText(input);\n\n expect(result).toHaveLength(0);\n });\n});\n"]}
|
|
@@ -106,7 +106,6 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
106
106
|
client = props.client,
|
|
107
107
|
closePicker = props.closePicker,
|
|
108
108
|
DateHeader = props.DateHeader,
|
|
109
|
-
deletedMessagesVisibilityType = props.deletedMessagesVisibilityType,
|
|
110
109
|
disabled = props.disabled,
|
|
111
110
|
disableTypingIndicator = props.disableTypingIndicator,
|
|
112
111
|
EmptyStateIndicator = props.EmptyStateIndicator,
|
|
@@ -172,7 +171,6 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
172
171
|
});
|
|
173
172
|
}, [myMessageTheme, theme]);
|
|
174
173
|
var messageList = (0, _useMessageList.useMessageList)({
|
|
175
|
-
deletedMessagesVisibilityType: deletedMessagesVisibilityType,
|
|
176
174
|
inverted: inverted,
|
|
177
175
|
noGroupByUser: noGroupByUser,
|
|
178
176
|
threadList: threadList
|
|
@@ -336,7 +334,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
336
334
|
__self: _this,
|
|
337
335
|
__source: {
|
|
338
336
|
fileName: _jsxFileName,
|
|
339
|
-
lineNumber:
|
|
337
|
+
lineNumber: 545,
|
|
340
338
|
columnNumber: 11
|
|
341
339
|
}
|
|
342
340
|
}, _react["default"].createElement(MessageSystem, {
|
|
@@ -345,14 +343,14 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
345
343
|
__self: _this,
|
|
346
344
|
__source: {
|
|
347
345
|
fileName: _jsxFileName,
|
|
348
|
-
lineNumber:
|
|
346
|
+
lineNumber: 546,
|
|
349
347
|
columnNumber: 13
|
|
350
348
|
}
|
|
351
349
|
})), insertInlineUnreadIndicator && _react["default"].createElement(InlineUnreadIndicator, {
|
|
352
350
|
__self: _this,
|
|
353
351
|
__source: {
|
|
354
352
|
fileName: _jsxFileName,
|
|
355
|
-
lineNumber:
|
|
353
|
+
lineNumber: 548,
|
|
356
354
|
columnNumber: 43
|
|
357
355
|
}
|
|
358
356
|
}));
|
|
@@ -364,7 +362,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
364
362
|
__self: _this,
|
|
365
363
|
__source: {
|
|
366
364
|
fileName: _jsxFileName,
|
|
367
|
-
lineNumber:
|
|
365
|
+
lineNumber: 556,
|
|
368
366
|
columnNumber: 9
|
|
369
367
|
}
|
|
370
368
|
}, _react["default"].createElement(_reactNative.View, {
|
|
@@ -372,7 +370,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
372
370
|
__self: _this,
|
|
373
371
|
__source: {
|
|
374
372
|
fileName: _jsxFileName,
|
|
375
|
-
lineNumber:
|
|
373
|
+
lineNumber: 557,
|
|
376
374
|
columnNumber: 11
|
|
377
375
|
}
|
|
378
376
|
}, _react["default"].createElement(Message, {
|
|
@@ -388,7 +386,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
388
386
|
__self: _this,
|
|
389
387
|
__source: {
|
|
390
388
|
fileName: _jsxFileName,
|
|
391
|
-
lineNumber:
|
|
389
|
+
lineNumber: 558,
|
|
392
390
|
columnNumber: 13
|
|
393
391
|
}
|
|
394
392
|
}))), (0, _useMessageList.isMessageWithStylesReadByAndDateSeparator)(message) && message.dateSeparator && _react["default"].createElement(InlineDateSeparator, {
|
|
@@ -396,14 +394,14 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
396
394
|
__self: _this,
|
|
397
395
|
__source: {
|
|
398
396
|
fileName: _jsxFileName,
|
|
399
|
-
lineNumber:
|
|
397
|
+
lineNumber: 574,
|
|
400
398
|
columnNumber: 11
|
|
401
399
|
}
|
|
402
400
|
}), insertInlineUnreadIndicator && _react["default"].createElement(InlineUnreadIndicator, {
|
|
403
401
|
__self: _this,
|
|
404
402
|
__source: {
|
|
405
403
|
fileName: _jsxFileName,
|
|
406
|
-
lineNumber:
|
|
404
|
+
lineNumber: 577,
|
|
407
405
|
columnNumber: 41
|
|
408
406
|
}
|
|
409
407
|
})) : _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_reactNative.View, {
|
|
@@ -411,7 +409,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
411
409
|
__self: _this,
|
|
412
410
|
__source: {
|
|
413
411
|
fileName: _jsxFileName,
|
|
414
|
-
lineNumber:
|
|
412
|
+
lineNumber: 581,
|
|
415
413
|
columnNumber: 9
|
|
416
414
|
}
|
|
417
415
|
}, _react["default"].createElement(Message, {
|
|
@@ -427,7 +425,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
427
425
|
__self: _this,
|
|
428
426
|
__source: {
|
|
429
427
|
fileName: _jsxFileName,
|
|
430
|
-
lineNumber:
|
|
428
|
+
lineNumber: 582,
|
|
431
429
|
columnNumber: 11
|
|
432
430
|
}
|
|
433
431
|
})), (0, _useMessageList.isMessageWithStylesReadByAndDateSeparator)(message) && message.dateSeparator && _react["default"].createElement(InlineDateSeparator, {
|
|
@@ -435,14 +433,14 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
435
433
|
__self: _this,
|
|
436
434
|
__source: {
|
|
437
435
|
fileName: _jsxFileName,
|
|
438
|
-
lineNumber:
|
|
436
|
+
lineNumber: 601,
|
|
439
437
|
columnNumber: 11
|
|
440
438
|
}
|
|
441
439
|
}), insertInlineUnreadIndicator && _react["default"].createElement(InlineUnreadIndicator, {
|
|
442
440
|
__self: _this,
|
|
443
441
|
__source: {
|
|
444
442
|
fileName: _jsxFileName,
|
|
445
|
-
lineNumber:
|
|
443
|
+
lineNumber: 604,
|
|
446
444
|
columnNumber: 41
|
|
447
445
|
}
|
|
448
446
|
}));
|
|
@@ -797,7 +795,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
797
795
|
__self: _this,
|
|
798
796
|
__source: {
|
|
799
797
|
fileName: _jsxFileName,
|
|
800
|
-
lineNumber:
|
|
798
|
+
lineNumber: 952,
|
|
801
799
|
columnNumber: 5
|
|
802
800
|
}
|
|
803
801
|
}, _react["default"].createElement(EmptyStateIndicator, {
|
|
@@ -805,7 +803,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
805
803
|
__self: _this,
|
|
806
804
|
__source: {
|
|
807
805
|
fileName: _jsxFileName,
|
|
808
|
-
lineNumber:
|
|
806
|
+
lineNumber: 953,
|
|
809
807
|
columnNumber: 7
|
|
810
808
|
}
|
|
811
809
|
}));
|
|
@@ -819,7 +817,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
819
817
|
__self: _this,
|
|
820
818
|
__source: {
|
|
821
819
|
fileName: _jsxFileName,
|
|
822
|
-
lineNumber:
|
|
820
|
+
lineNumber: 961,
|
|
823
821
|
columnNumber: 7
|
|
824
822
|
}
|
|
825
823
|
}, _react["default"].createElement(LoadingIndicator, {
|
|
@@ -827,7 +825,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
827
825
|
__self: _this,
|
|
828
826
|
__source: {
|
|
829
827
|
fileName: _jsxFileName,
|
|
830
|
-
lineNumber:
|
|
828
|
+
lineNumber: 962,
|
|
831
829
|
columnNumber: 9
|
|
832
830
|
}
|
|
833
831
|
}));
|
|
@@ -841,7 +839,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
841
839
|
__self: _this,
|
|
842
840
|
__source: {
|
|
843
841
|
fileName: _jsxFileName,
|
|
844
|
-
lineNumber:
|
|
842
|
+
lineNumber: 968,
|
|
845
843
|
columnNumber: 5
|
|
846
844
|
}
|
|
847
845
|
}, _react["default"].createElement(FlatList, (0, _extends2["default"])({
|
|
@@ -875,7 +873,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
875
873
|
__self: _this,
|
|
876
874
|
__source: {
|
|
877
875
|
fileName: _jsxFileName,
|
|
878
|
-
lineNumber:
|
|
876
|
+
lineNumber: 972,
|
|
879
877
|
columnNumber: 7
|
|
880
878
|
}
|
|
881
879
|
})), !loading && _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_reactNative.View, {
|
|
@@ -883,7 +881,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
883
881
|
__self: _this,
|
|
884
882
|
__source: {
|
|
885
883
|
fileName: _jsxFileName,
|
|
886
|
-
lineNumber:
|
|
884
|
+
lineNumber: 1004,
|
|
887
885
|
columnNumber: 11
|
|
888
886
|
}
|
|
889
887
|
}, stickyHeaderDateToRender && (StickyHeader ? _react["default"].createElement(StickyHeader, {
|
|
@@ -891,7 +889,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
891
889
|
__self: _this,
|
|
892
890
|
__source: {
|
|
893
891
|
fileName: _jsxFileName,
|
|
894
|
-
lineNumber:
|
|
892
|
+
lineNumber: 1007,
|
|
895
893
|
columnNumber: 17
|
|
896
894
|
}
|
|
897
895
|
}) : messageListLengthAfterUpdate ? _react["default"].createElement(DateHeader, {
|
|
@@ -899,21 +897,21 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
899
897
|
__self: _this,
|
|
900
898
|
__source: {
|
|
901
899
|
fileName: _jsxFileName,
|
|
902
|
-
lineNumber:
|
|
900
|
+
lineNumber: 1009,
|
|
903
901
|
columnNumber: 17
|
|
904
902
|
}
|
|
905
903
|
}) : null)), !disableTypingIndicator && TypingIndicator && _react["default"].createElement(TypingIndicatorContainer, {
|
|
906
904
|
__self: _this,
|
|
907
905
|
__source: {
|
|
908
906
|
fileName: _jsxFileName,
|
|
909
|
-
lineNumber:
|
|
907
|
+
lineNumber: 1013,
|
|
910
908
|
columnNumber: 13
|
|
911
909
|
}
|
|
912
910
|
}, _react["default"].createElement(TypingIndicator, {
|
|
913
911
|
__self: _this,
|
|
914
912
|
__source: {
|
|
915
913
|
fileName: _jsxFileName,
|
|
916
|
-
lineNumber:
|
|
914
|
+
lineNumber: 1014,
|
|
917
915
|
columnNumber: 15
|
|
918
916
|
}
|
|
919
917
|
})), _react["default"].createElement(ScrollToBottomButton, {
|
|
@@ -923,14 +921,14 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
923
921
|
__self: _this,
|
|
924
922
|
__source: {
|
|
925
923
|
fileName: _jsxFileName,
|
|
926
|
-
lineNumber:
|
|
924
|
+
lineNumber: 1017,
|
|
927
925
|
columnNumber: 11
|
|
928
926
|
}
|
|
929
927
|
})), _react["default"].createElement(NetworkDownIndicator, {
|
|
930
928
|
__self: _this,
|
|
931
929
|
__source: {
|
|
932
930
|
fileName: _jsxFileName,
|
|
933
|
-
lineNumber:
|
|
931
|
+
lineNumber: 1024,
|
|
934
932
|
columnNumber: 7
|
|
935
933
|
}
|
|
936
934
|
}));
|
|
@@ -969,7 +967,6 @@ var MessageList = function MessageList(props) {
|
|
|
969
967
|
|
|
970
968
|
var _useMessagesContext = (0, _MessagesContext.useMessagesContext)(),
|
|
971
969
|
DateHeader = _useMessagesContext.DateHeader,
|
|
972
|
-
deletedMessagesVisibilityType = _useMessagesContext.deletedMessagesVisibilityType,
|
|
973
970
|
disableTypingIndicator = _useMessagesContext.disableTypingIndicator,
|
|
974
971
|
FlatList = _useMessagesContext.FlatList,
|
|
975
972
|
initialScrollToFirstUnreadMessage = _useMessagesContext.initialScrollToFirstUnreadMessage,
|
|
@@ -1004,7 +1001,6 @@ var MessageList = function MessageList(props) {
|
|
|
1004
1001
|
client: client,
|
|
1005
1002
|
closePicker: closePicker,
|
|
1006
1003
|
DateHeader: DateHeader,
|
|
1007
|
-
deletedMessagesVisibilityType: deletedMessagesVisibilityType,
|
|
1008
1004
|
disabled: disabled,
|
|
1009
1005
|
disableTypingIndicator: disableTypingIndicator,
|
|
1010
1006
|
EmptyStateIndicator: EmptyStateIndicator,
|
|
@@ -1049,7 +1045,7 @@ var MessageList = function MessageList(props) {
|
|
|
1049
1045
|
__self: _this,
|
|
1050
1046
|
__source: {
|
|
1051
1047
|
fileName: _jsxFileName,
|
|
1052
|
-
lineNumber:
|
|
1048
|
+
lineNumber: 1082,
|
|
1053
1049
|
columnNumber: 5
|
|
1054
1050
|
}
|
|
1055
1051
|
}));
|