@linktr.ee/messaging-react 1.40.1 → 2.0.0
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/dist/{Card-QrKCxqCI.js → Card-BHknCeHw.js} +2 -2
- package/dist/{Card-QrKCxqCI.js.map → Card-BHknCeHw.js.map} +1 -1
- package/dist/{Card-CmnkZNNQ.js → Card-DT7_ms2p.js} +2 -2
- package/dist/{Card-CmnkZNNQ.js.map → Card-DT7_ms2p.js.map} +1 -1
- package/dist/assets/index.css +1 -1
- package/dist/index-Brz9orsI.js +3053 -0
- package/dist/index-Brz9orsI.js.map +1 -0
- package/dist/index.d.ts +24 -2
- package/dist/index.js +15 -12
- package/package.json +2 -2
- package/src/components/ChannelInfoDialog/ChannelInfoDialog.test.tsx +2 -14
- package/src/components/ChannelInfoDialog/index.tsx +4 -8
- package/src/components/ChannelList/ChannelListContext.tsx +2 -0
- package/src/components/ChannelList/CustomChannelPreview.tsx +14 -3
- package/src/components/ChannelList/index.tsx +9 -1
- package/src/components/ChannelView.tsx +10 -2
- package/src/components/CustomMessage/CustomMessage.stories.tsx +28 -0
- package/src/components/CustomMessage/index.tsx +34 -13
- package/src/components/MediaMessage/index.tsx +5 -3
- package/src/components/MessagingShell/index.tsx +4 -4
- package/src/index.ts +14 -2
- package/src/stories/mocks.tsx +2 -9
- package/src/styles.css +1 -4
- package/src/types.ts +11 -1
- package/src/utils/getMessageDisplayText.test.ts +44 -0
- package/src/utils/getMessageDisplayText.ts +27 -0
- package/dist/index-8ZuHtwFb.js +0 -2990
- package/dist/index-8ZuHtwFb.js.map +0 -1
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest'
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
getMessageDisplayText,
|
|
5
|
+
normalizeLanguageCode,
|
|
6
|
+
} from './getMessageDisplayText'
|
|
7
|
+
|
|
8
|
+
describe('getMessageDisplayText', () => {
|
|
9
|
+
it('returns translated text for the viewer language', () => {
|
|
10
|
+
expect(
|
|
11
|
+
getMessageDisplayText({
|
|
12
|
+
message: {
|
|
13
|
+
text: 'Bonjour',
|
|
14
|
+
i18n: {
|
|
15
|
+
language: 'fr',
|
|
16
|
+
en_text: 'Hello',
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
viewerLanguage: 'en-US',
|
|
20
|
+
})
|
|
21
|
+
).toBe('Hello')
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
it('falls back to the original message text when no translation exists', () => {
|
|
25
|
+
expect(
|
|
26
|
+
getMessageDisplayText({
|
|
27
|
+
message: {
|
|
28
|
+
text: 'Bonjour',
|
|
29
|
+
i18n: {
|
|
30
|
+
language: 'fr',
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
viewerLanguage: 'es',
|
|
34
|
+
})
|
|
35
|
+
).toBe('Bonjour')
|
|
36
|
+
})
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
describe('normalizeLanguageCode', () => {
|
|
40
|
+
it('normalizes locale-style language codes to their primary subtag', () => {
|
|
41
|
+
expect(normalizeLanguageCode('fr-FR')).toBe('fr')
|
|
42
|
+
expect(normalizeLanguageCode('en_US')).toBe('en')
|
|
43
|
+
})
|
|
44
|
+
})
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { LocalMessage } from 'stream-chat'
|
|
2
|
+
|
|
3
|
+
type MessageWithI18n = Pick<LocalMessage, 'text'> & {
|
|
4
|
+
i18n?: Record<string, string> | null
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export function normalizeLanguageCode(language?: string): string | undefined {
|
|
8
|
+
const normalized = language?.trim().toLowerCase().split(/[-_]/)[0]
|
|
9
|
+
return normalized || undefined
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export function getMessageDisplayText({
|
|
13
|
+
message,
|
|
14
|
+
viewerLanguage,
|
|
15
|
+
}: {
|
|
16
|
+
message?: MessageWithI18n | null
|
|
17
|
+
viewerLanguage?: string
|
|
18
|
+
}): string | undefined {
|
|
19
|
+
const fallbackText = message?.text
|
|
20
|
+
const normalizedLanguage = normalizeLanguageCode(viewerLanguage)
|
|
21
|
+
|
|
22
|
+
if (!normalizedLanguage) {
|
|
23
|
+
return fallbackText
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return message?.i18n?.[`${normalizedLanguage}_text`] ?? fallbackText
|
|
27
|
+
}
|