stream-chat-react-native-core 5.8.0-beta.3 → 5.8.0-beta.4

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.
@@ -44,6 +44,12 @@ var getChannelPreviewDisplayName = function getChannelPreviewDisplayName(_ref) {
44
44
  return remainingNumberOfMembers <= 1 ? "" + ELLIPSIS : "," + ELLIPSIS + "+" + remainingNumberOfMembers;
45
45
  };
46
46
 
47
+ if (otherMembers.length === 1) {
48
+ var _name = getMemberName(otherMembers[0]);
49
+
50
+ return _name.length > characterLimit ? "" + _name.slice(0, characterLimit - ELLIPSIS.length) + ELLIPSIS : _name;
51
+ }
52
+
47
53
  var name = otherMembers.reduce(function (result, currentMember, index, originalArray) {
48
54
  if (result.length >= characterLimit) {
49
55
  return result;
@@ -53,11 +59,11 @@ var getChannelPreviewDisplayName = function getChannelPreviewDisplayName(_ref) {
53
59
  var resultHasSpaceForCurrentMemberName = result.length + (currentMemberName.length + ELLIPSIS.length) < characterLimit;
54
60
 
55
61
  if (resultHasSpaceForCurrentMemberName) {
56
- return result.length > 0 ? result + ", " + currentMemberName + ", " : currentMemberName;
62
+ return result.length > 0 ? result + ", " + currentMemberName : "" + currentMemberName;
57
63
  } else {
58
64
  var remainingNumberOfMembers = originalArray.length - index;
59
65
  var truncateLimit = characterLimit - (ELLIPSIS.length + result.length);
60
- var tuncatedCurrentMemberName = "" + currentMemberName.slice(0, truncateLimit);
66
+ var tuncatedCurrentMemberName = ", " + currentMemberName.slice(0, truncateLimit);
61
67
  var channelNameSuffix = createChannelNameSuffix(remainingNumberOfMembers);
62
68
  return "" + result + tuncatedCurrentMemberName + channelNameSuffix;
63
69
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["useChannelPreviewDisplayName.ts"],"names":["DEFAULT_MAX_CHARACTER_LENGTH","ELLIPSIS","getMemberName","member","user","name","id","getChannelPreviewDisplayName","channelName","characterLimit","currentUserId","members","channelMembers","Object","values","otherMembers","filter","sort","prevUser","nextUser","toLowerCase","localeCompare","toLocaleUpperCase","createChannelNameSuffix","remainingNumberOfMembers","reduce","result","currentMember","index","originalArray","length","currentMemberName","resultHasSpaceForCurrentMemberName","truncateLimit","tuncatedCurrentMemberName","slice","channelNameSuffix","useChannelPreviewDisplayName","channel","characterLength","client","userID","state","numOfMembers","keys","data","displayName","setDisplayName"],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { Channel, ChannelMemberResponse } from 'stream-chat';\n\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { vw } from '../../../utils/utils';\n\nconst DEFAULT_MAX_CHARACTER_LENGTH = (vw(100) - 16) / 6;\n\nconst ELLIPSIS = `...`;\n\nconst getMemberName = (member: ChannelMemberResponse) =>\n member.user?.name || member.user?.id || 'Unknown User';\n\nexport const getChannelPreviewDisplayName = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n channelName,\n characterLimit,\n currentUserId,\n members,\n}: {\n characterLimit: number;\n channelName?: string;\n currentUserId?: string;\n members?: Channel<StreamChatGenerics>['state']['members'];\n}): string => {\n if (channelName) return channelName;\n\n const channelMembers = Object.values(members || {});\n\n const otherMembers = channelMembers.filter((member) => member.user?.id !== currentUserId);\n otherMembers.sort((prevUser, nextUser) =>\n (prevUser?.user?.name ?? '')\n .toLowerCase()\n .localeCompare((nextUser?.user?.name ?? '').toLocaleUpperCase()),\n );\n\n const createChannelNameSuffix = (remainingNumberOfMembers: number) =>\n remainingNumberOfMembers <= 1 ? `${ELLIPSIS}` : `,${ELLIPSIS}+${remainingNumberOfMembers}`;\n\n const name = otherMembers.reduce((result, currentMember, index, originalArray) => {\n if (result.length >= characterLimit) {\n return result;\n }\n\n const currentMemberName = getMemberName(currentMember);\n\n const resultHasSpaceForCurrentMemberName =\n result.length + (currentMemberName.length + ELLIPSIS.length) < characterLimit;\n if (resultHasSpaceForCurrentMemberName) {\n return result.length > 0 ? `${result}, ${currentMemberName}, ` : currentMemberName;\n } else {\n const remainingNumberOfMembers = originalArray.length - index;\n const truncateLimit = characterLimit - (ELLIPSIS.length + result.length);\n const tuncatedCurrentMemberName = `${currentMemberName.slice(0, truncateLimit)}`;\n\n const channelNameSuffix = createChannelNameSuffix(remainingNumberOfMembers);\n\n return `${result}${tuncatedCurrentMemberName}${channelNameSuffix}`;\n }\n }, '');\n\n return name;\n};\n\nexport const useChannelPreviewDisplayName = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel?: Channel<StreamChatGenerics>,\n characterLength?: number,\n) => {\n const { client } = useChatContext<StreamChatGenerics>();\n\n const currentUserId = client?.userID;\n const members = channel?.state?.members;\n const numOfMembers = Object.keys(members || {}).length;\n const channelName = channel?.data?.name;\n const characterLimit = characterLength || DEFAULT_MAX_CHARACTER_LENGTH;\n const [displayName, setDisplayName] = useState(\n getChannelPreviewDisplayName({\n channelName,\n characterLimit,\n currentUserId,\n members,\n }),\n );\n\n useEffect(() => {\n setDisplayName(\n getChannelPreviewDisplayName({\n channelName,\n characterLimit,\n currentUserId,\n members,\n }),\n );\n }, [channelName, currentUserId, characterLimit, numOfMembers]);\n\n return displayName;\n};\n"]}
1
+ {"version":3,"sources":["useChannelPreviewDisplayName.ts"],"names":["DEFAULT_MAX_CHARACTER_LENGTH","ELLIPSIS","getMemberName","member","user","name","id","getChannelPreviewDisplayName","channelName","characterLimit","currentUserId","members","channelMembers","Object","values","otherMembers","filter","sort","prevUser","nextUser","toLowerCase","localeCompare","toLocaleUpperCase","createChannelNameSuffix","remainingNumberOfMembers","length","slice","reduce","result","currentMember","index","originalArray","currentMemberName","resultHasSpaceForCurrentMemberName","truncateLimit","tuncatedCurrentMemberName","channelNameSuffix","useChannelPreviewDisplayName","channel","characterLength","client","userID","state","numOfMembers","keys","data","displayName","setDisplayName"],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { Channel, ChannelMemberResponse } from 'stream-chat';\n\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { vw } from '../../../utils/utils';\n\nconst DEFAULT_MAX_CHARACTER_LENGTH = (vw(100) - 16) / 6;\n\nconst ELLIPSIS = `...`;\n\nconst getMemberName = (member: ChannelMemberResponse) =>\n member.user?.name || member.user?.id || 'Unknown User';\n\nexport const getChannelPreviewDisplayName = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n channelName,\n characterLimit,\n currentUserId,\n members,\n}: {\n characterLimit: number;\n channelName?: string;\n currentUserId?: string;\n members?: Channel<StreamChatGenerics>['state']['members'];\n}): string => {\n if (channelName) return channelName;\n\n const channelMembers = Object.values(members || {});\n\n const otherMembers = channelMembers.filter((member) => member.user?.id !== currentUserId);\n otherMembers.sort((prevUser, nextUser) =>\n (prevUser?.user?.name ?? '')\n .toLowerCase()\n .localeCompare((nextUser?.user?.name ?? '').toLocaleUpperCase()),\n );\n\n const createChannelNameSuffix = (remainingNumberOfMembers: number) =>\n remainingNumberOfMembers <= 1 ? `${ELLIPSIS}` : `,${ELLIPSIS}+${remainingNumberOfMembers}`;\n\n if (otherMembers.length === 1) {\n const name = getMemberName(otherMembers[0]);\n return name.length > characterLimit\n ? `${name.slice(0, characterLimit - ELLIPSIS.length)}${ELLIPSIS}`\n : name;\n }\n\n const name = otherMembers.reduce((result, currentMember, index, originalArray) => {\n if (result.length >= characterLimit) {\n return result;\n }\n\n const currentMemberName = getMemberName(currentMember);\n\n const resultHasSpaceForCurrentMemberName =\n result.length + (currentMemberName.length + ELLIPSIS.length) < characterLimit;\n\n if (resultHasSpaceForCurrentMemberName) {\n return result.length > 0 ? `${result}, ${currentMemberName}` : `${currentMemberName}`;\n } else {\n const remainingNumberOfMembers = originalArray.length - index;\n const truncateLimit = characterLimit - (ELLIPSIS.length + result.length);\n const tuncatedCurrentMemberName = `, ${currentMemberName.slice(0, truncateLimit)}`;\n\n const channelNameSuffix = createChannelNameSuffix(remainingNumberOfMembers);\n\n return `${result}${tuncatedCurrentMemberName}${channelNameSuffix}`;\n }\n }, '');\n\n return name;\n};\n\nexport const useChannelPreviewDisplayName = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel?: Channel<StreamChatGenerics>,\n characterLength?: number,\n) => {\n const { client } = useChatContext<StreamChatGenerics>();\n\n const currentUserId = client?.userID;\n const members = channel?.state?.members;\n const numOfMembers = Object.keys(members || {}).length;\n const channelName = channel?.data?.name;\n const characterLimit = characterLength || DEFAULT_MAX_CHARACTER_LENGTH;\n const [displayName, setDisplayName] = useState(\n getChannelPreviewDisplayName({\n channelName,\n characterLimit,\n currentUserId,\n members,\n }),\n );\n\n useEffect(() => {\n setDisplayName(\n getChannelPreviewDisplayName({\n channelName,\n characterLimit,\n currentUserId,\n members,\n }),\n );\n }, [channelName, currentUserId, characterLimit, numOfMembers]);\n\n return displayName;\n};\n"]}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.8.0-beta.3"
2
+ "version": "5.8.0-beta.4"
3
3
  }
@@ -44,6 +44,12 @@ var getChannelPreviewDisplayName = function getChannelPreviewDisplayName(_ref) {
44
44
  return remainingNumberOfMembers <= 1 ? "" + ELLIPSIS : "," + ELLIPSIS + "+" + remainingNumberOfMembers;
45
45
  };
46
46
 
47
+ if (otherMembers.length === 1) {
48
+ var _name = getMemberName(otherMembers[0]);
49
+
50
+ return _name.length > characterLimit ? "" + _name.slice(0, characterLimit - ELLIPSIS.length) + ELLIPSIS : _name;
51
+ }
52
+
47
53
  var name = otherMembers.reduce(function (result, currentMember, index, originalArray) {
48
54
  if (result.length >= characterLimit) {
49
55
  return result;
@@ -53,11 +59,11 @@ var getChannelPreviewDisplayName = function getChannelPreviewDisplayName(_ref) {
53
59
  var resultHasSpaceForCurrentMemberName = result.length + (currentMemberName.length + ELLIPSIS.length) < characterLimit;
54
60
 
55
61
  if (resultHasSpaceForCurrentMemberName) {
56
- return result.length > 0 ? result + ", " + currentMemberName + ", " : currentMemberName;
62
+ return result.length > 0 ? result + ", " + currentMemberName : "" + currentMemberName;
57
63
  } else {
58
64
  var remainingNumberOfMembers = originalArray.length - index;
59
65
  var truncateLimit = characterLimit - (ELLIPSIS.length + result.length);
60
- var tuncatedCurrentMemberName = "" + currentMemberName.slice(0, truncateLimit);
66
+ var tuncatedCurrentMemberName = ", " + currentMemberName.slice(0, truncateLimit);
61
67
  var channelNameSuffix = createChannelNameSuffix(remainingNumberOfMembers);
62
68
  return "" + result + tuncatedCurrentMemberName + channelNameSuffix;
63
69
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["useChannelPreviewDisplayName.ts"],"names":["DEFAULT_MAX_CHARACTER_LENGTH","ELLIPSIS","getMemberName","member","user","name","id","getChannelPreviewDisplayName","channelName","characterLimit","currentUserId","members","channelMembers","Object","values","otherMembers","filter","sort","prevUser","nextUser","toLowerCase","localeCompare","toLocaleUpperCase","createChannelNameSuffix","remainingNumberOfMembers","reduce","result","currentMember","index","originalArray","length","currentMemberName","resultHasSpaceForCurrentMemberName","truncateLimit","tuncatedCurrentMemberName","slice","channelNameSuffix","useChannelPreviewDisplayName","channel","characterLength","client","userID","state","numOfMembers","keys","data","displayName","setDisplayName"],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { Channel, ChannelMemberResponse } from 'stream-chat';\n\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { vw } from '../../../utils/utils';\n\nconst DEFAULT_MAX_CHARACTER_LENGTH = (vw(100) - 16) / 6;\n\nconst ELLIPSIS = `...`;\n\nconst getMemberName = (member: ChannelMemberResponse) =>\n member.user?.name || member.user?.id || 'Unknown User';\n\nexport const getChannelPreviewDisplayName = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n channelName,\n characterLimit,\n currentUserId,\n members,\n}: {\n characterLimit: number;\n channelName?: string;\n currentUserId?: string;\n members?: Channel<StreamChatGenerics>['state']['members'];\n}): string => {\n if (channelName) return channelName;\n\n const channelMembers = Object.values(members || {});\n\n const otherMembers = channelMembers.filter((member) => member.user?.id !== currentUserId);\n otherMembers.sort((prevUser, nextUser) =>\n (prevUser?.user?.name ?? '')\n .toLowerCase()\n .localeCompare((nextUser?.user?.name ?? '').toLocaleUpperCase()),\n );\n\n const createChannelNameSuffix = (remainingNumberOfMembers: number) =>\n remainingNumberOfMembers <= 1 ? `${ELLIPSIS}` : `,${ELLIPSIS}+${remainingNumberOfMembers}`;\n\n const name = otherMembers.reduce((result, currentMember, index, originalArray) => {\n if (result.length >= characterLimit) {\n return result;\n }\n\n const currentMemberName = getMemberName(currentMember);\n\n const resultHasSpaceForCurrentMemberName =\n result.length + (currentMemberName.length + ELLIPSIS.length) < characterLimit;\n if (resultHasSpaceForCurrentMemberName) {\n return result.length > 0 ? `${result}, ${currentMemberName}, ` : currentMemberName;\n } else {\n const remainingNumberOfMembers = originalArray.length - index;\n const truncateLimit = characterLimit - (ELLIPSIS.length + result.length);\n const tuncatedCurrentMemberName = `${currentMemberName.slice(0, truncateLimit)}`;\n\n const channelNameSuffix = createChannelNameSuffix(remainingNumberOfMembers);\n\n return `${result}${tuncatedCurrentMemberName}${channelNameSuffix}`;\n }\n }, '');\n\n return name;\n};\n\nexport const useChannelPreviewDisplayName = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel?: Channel<StreamChatGenerics>,\n characterLength?: number,\n) => {\n const { client } = useChatContext<StreamChatGenerics>();\n\n const currentUserId = client?.userID;\n const members = channel?.state?.members;\n const numOfMembers = Object.keys(members || {}).length;\n const channelName = channel?.data?.name;\n const characterLimit = characterLength || DEFAULT_MAX_CHARACTER_LENGTH;\n const [displayName, setDisplayName] = useState(\n getChannelPreviewDisplayName({\n channelName,\n characterLimit,\n currentUserId,\n members,\n }),\n );\n\n useEffect(() => {\n setDisplayName(\n getChannelPreviewDisplayName({\n channelName,\n characterLimit,\n currentUserId,\n members,\n }),\n );\n }, [channelName, currentUserId, characterLimit, numOfMembers]);\n\n return displayName;\n};\n"]}
1
+ {"version":3,"sources":["useChannelPreviewDisplayName.ts"],"names":["DEFAULT_MAX_CHARACTER_LENGTH","ELLIPSIS","getMemberName","member","user","name","id","getChannelPreviewDisplayName","channelName","characterLimit","currentUserId","members","channelMembers","Object","values","otherMembers","filter","sort","prevUser","nextUser","toLowerCase","localeCompare","toLocaleUpperCase","createChannelNameSuffix","remainingNumberOfMembers","length","slice","reduce","result","currentMember","index","originalArray","currentMemberName","resultHasSpaceForCurrentMemberName","truncateLimit","tuncatedCurrentMemberName","channelNameSuffix","useChannelPreviewDisplayName","channel","characterLength","client","userID","state","numOfMembers","keys","data","displayName","setDisplayName"],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { Channel, ChannelMemberResponse } from 'stream-chat';\n\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { vw } from '../../../utils/utils';\n\nconst DEFAULT_MAX_CHARACTER_LENGTH = (vw(100) - 16) / 6;\n\nconst ELLIPSIS = `...`;\n\nconst getMemberName = (member: ChannelMemberResponse) =>\n member.user?.name || member.user?.id || 'Unknown User';\n\nexport const getChannelPreviewDisplayName = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n channelName,\n characterLimit,\n currentUserId,\n members,\n}: {\n characterLimit: number;\n channelName?: string;\n currentUserId?: string;\n members?: Channel<StreamChatGenerics>['state']['members'];\n}): string => {\n if (channelName) return channelName;\n\n const channelMembers = Object.values(members || {});\n\n const otherMembers = channelMembers.filter((member) => member.user?.id !== currentUserId);\n otherMembers.sort((prevUser, nextUser) =>\n (prevUser?.user?.name ?? '')\n .toLowerCase()\n .localeCompare((nextUser?.user?.name ?? '').toLocaleUpperCase()),\n );\n\n const createChannelNameSuffix = (remainingNumberOfMembers: number) =>\n remainingNumberOfMembers <= 1 ? `${ELLIPSIS}` : `,${ELLIPSIS}+${remainingNumberOfMembers}`;\n\n if (otherMembers.length === 1) {\n const name = getMemberName(otherMembers[0]);\n return name.length > characterLimit\n ? `${name.slice(0, characterLimit - ELLIPSIS.length)}${ELLIPSIS}`\n : name;\n }\n\n const name = otherMembers.reduce((result, currentMember, index, originalArray) => {\n if (result.length >= characterLimit) {\n return result;\n }\n\n const currentMemberName = getMemberName(currentMember);\n\n const resultHasSpaceForCurrentMemberName =\n result.length + (currentMemberName.length + ELLIPSIS.length) < characterLimit;\n\n if (resultHasSpaceForCurrentMemberName) {\n return result.length > 0 ? `${result}, ${currentMemberName}` : `${currentMemberName}`;\n } else {\n const remainingNumberOfMembers = originalArray.length - index;\n const truncateLimit = characterLimit - (ELLIPSIS.length + result.length);\n const tuncatedCurrentMemberName = `, ${currentMemberName.slice(0, truncateLimit)}`;\n\n const channelNameSuffix = createChannelNameSuffix(remainingNumberOfMembers);\n\n return `${result}${tuncatedCurrentMemberName}${channelNameSuffix}`;\n }\n }, '');\n\n return name;\n};\n\nexport const useChannelPreviewDisplayName = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n channel?: Channel<StreamChatGenerics>,\n characterLength?: number,\n) => {\n const { client } = useChatContext<StreamChatGenerics>();\n\n const currentUserId = client?.userID;\n const members = channel?.state?.members;\n const numOfMembers = Object.keys(members || {}).length;\n const channelName = channel?.data?.name;\n const characterLimit = characterLength || DEFAULT_MAX_CHARACTER_LENGTH;\n const [displayName, setDisplayName] = useState(\n getChannelPreviewDisplayName({\n channelName,\n characterLimit,\n currentUserId,\n members,\n }),\n );\n\n useEffect(() => {\n setDisplayName(\n getChannelPreviewDisplayName({\n channelName,\n characterLimit,\n currentUserId,\n members,\n }),\n );\n }, [channelName, currentUserId, characterLimit, numOfMembers]);\n\n return displayName;\n};\n"]}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.8.0-beta.3"
2
+ "version": "5.8.0-beta.4"
3
3
  }
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": "5.8.0-beta.3",
4
+ "version": "5.8.0-beta.4",
5
5
  "author": {
6
6
  "company": "Stream.io Inc",
7
7
  "name": "Stream.io Inc"
@@ -62,9 +62,9 @@ describe('useChannelPreviewDisplayName', () => {
62
62
  });
63
63
 
64
64
  it.each([
65
- [CHARACTER_LENGTH, GROUP_CHANNEL_MEMBERS_MOCK, 'okechukwu nwagba', 'ben, nick, q,...+2'],
65
+ [CHARACTER_LENGTH, GROUP_CHANNEL_MEMBERS_MOCK, 'okechukwu nwagba', 'ben, nick, qat,...+2'],
66
66
  [CHARACTER_LENGTH, ONE_CHANNEL_MEMBER_MOCK, 'okechukwu nwagba', 'okechukwu nw...'],
67
- [CHARACTER_LENGTH, ONE_MEMBER_WITH_EMPTY_USER_MOCK, 'okechukwu nwagba', 'Unknown User...'],
67
+ [CHARACTER_LENGTH, ONE_MEMBER_WITH_EMPTY_USER_MOCK, 'okechukwu nwagba', 'Unknown User'],
68
68
  ])(
69
69
  'getChannelPreviewDisplayName(%i, %p, %s) result in %s',
70
70
  (characterLength, members, currentUserId, expected) => {
@@ -41,6 +41,13 @@ export const getChannelPreviewDisplayName = <
41
41
  const createChannelNameSuffix = (remainingNumberOfMembers: number) =>
42
42
  remainingNumberOfMembers <= 1 ? `${ELLIPSIS}` : `,${ELLIPSIS}+${remainingNumberOfMembers}`;
43
43
 
44
+ if (otherMembers.length === 1) {
45
+ const name = getMemberName(otherMembers[0]);
46
+ return name.length > characterLimit
47
+ ? `${name.slice(0, characterLimit - ELLIPSIS.length)}${ELLIPSIS}`
48
+ : name;
49
+ }
50
+
44
51
  const name = otherMembers.reduce((result, currentMember, index, originalArray) => {
45
52
  if (result.length >= characterLimit) {
46
53
  return result;
@@ -50,12 +57,13 @@ export const getChannelPreviewDisplayName = <
50
57
 
51
58
  const resultHasSpaceForCurrentMemberName =
52
59
  result.length + (currentMemberName.length + ELLIPSIS.length) < characterLimit;
60
+
53
61
  if (resultHasSpaceForCurrentMemberName) {
54
- return result.length > 0 ? `${result}, ${currentMemberName}, ` : currentMemberName;
62
+ return result.length > 0 ? `${result}, ${currentMemberName}` : `${currentMemberName}`;
55
63
  } else {
56
64
  const remainingNumberOfMembers = originalArray.length - index;
57
65
  const truncateLimit = characterLimit - (ELLIPSIS.length + result.length);
58
- const tuncatedCurrentMemberName = `${currentMemberName.slice(0, truncateLimit)}`;
66
+ const tuncatedCurrentMemberName = `, ${currentMemberName.slice(0, truncateLimit)}`;
59
67
 
60
68
  const channelNameSuffix = createChannelNameSuffix(remainingNumberOfMembers);
61
69
 
package/src/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.8.0-beta.3"
2
+ "version": "5.8.0-beta.4"
3
3
  }