stream-chat-react-native-core 5.22.0-beta.1 → 5.22.0-beta.3
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/Attachment/FileAttachment.js +10 -7
- package/lib/commonjs/components/Attachment/FileAttachment.js.map +1 -1
- package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +8 -6
- package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js +20 -16
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js +16 -14
- package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js +4 -2
- package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/ImageGallery.js +28 -25
- package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js +7 -5
- package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js +10 -8
- package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGrid.js +10 -8
- package/lib/commonjs/components/ImageGallery/components/ImageGrid.js.map +1 -1
- package/lib/commonjs/components/Indicators/EmptyStateIndicator.js +17 -12
- package/lib/commonjs/components/Indicators/EmptyStateIndicator.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +20 -17
- package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/ReactionList.js +18 -17
- package/lib/commonjs/components/Message/MessageSimple/ReactionList.js.map +1 -1
- package/lib/commonjs/components/MessageList/InlineUnreadIndicator.js +13 -11
- package/lib/commonjs/components/MessageList/InlineUnreadIndicator.js.map +1 -1
- package/lib/commonjs/components/MessageOverlay/MessageActionList.js +8 -14
- package/lib/commonjs/components/MessageOverlay/MessageActionList.js.map +1 -1
- package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js +11 -8
- package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js.map +1 -1
- package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +32 -29
- package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -1
- package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js +17 -15
- package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js.map +1 -1
- package/lib/commonjs/contexts/themeContext/utils/theme.js +1 -4
- package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/commonjs/hooks/useViewport.js +47 -0
- package/lib/commonjs/hooks/useViewport.js.map +1 -0
- package/lib/commonjs/i18n/en.json +3 -1
- package/lib/commonjs/i18n/es.json +3 -1
- package/lib/commonjs/i18n/fr.json +53 -51
- package/lib/commonjs/i18n/he.json +3 -1
- package/lib/commonjs/i18n/hi.json +53 -51
- package/lib/commonjs/i18n/it.json +53 -51
- package/lib/commonjs/i18n/ja.json +3 -1
- package/lib/commonjs/i18n/ko.json +3 -1
- package/lib/commonjs/i18n/nl.json +53 -51
- package/lib/commonjs/i18n/ru.json +53 -51
- package/lib/commonjs/i18n/tr.json +53 -51
- package/lib/commonjs/utils/utils.js +1 -15
- package/lib/commonjs/utils/utils.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Attachment/FileAttachment.js +10 -7
- package/lib/module/components/Attachment/FileAttachment.js.map +1 -1
- package/lib/module/components/AttachmentPicker/AttachmentPicker.js +8 -6
- package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
- package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js +20 -16
- package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js +16 -14
- package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
- package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js +4 -2
- package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js.map +1 -1
- package/lib/module/components/ImageGallery/ImageGallery.js +28 -25
- package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
- package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js +7 -5
- package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
- package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js +10 -8
- package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGrid.js +10 -8
- package/lib/module/components/ImageGallery/components/ImageGrid.js.map +1 -1
- package/lib/module/components/Indicators/EmptyStateIndicator.js +17 -12
- package/lib/module/components/Indicators/EmptyStateIndicator.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageContent.js +20 -17
- package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/ReactionList.js +18 -17
- package/lib/module/components/Message/MessageSimple/ReactionList.js.map +1 -1
- package/lib/module/components/MessageList/InlineUnreadIndicator.js +13 -11
- package/lib/module/components/MessageList/InlineUnreadIndicator.js.map +1 -1
- package/lib/module/components/MessageOverlay/MessageActionList.js +8 -14
- package/lib/module/components/MessageOverlay/MessageActionList.js.map +1 -1
- package/lib/module/components/MessageOverlay/MessageActionListItem.js +11 -8
- package/lib/module/components/MessageOverlay/MessageActionListItem.js.map +1 -1
- package/lib/module/components/MessageOverlay/MessageOverlay.js +32 -29
- package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
- package/lib/module/components/Thread/components/ThreadFooterComponent.js +17 -15
- package/lib/module/components/Thread/components/ThreadFooterComponent.js.map +1 -1
- package/lib/module/contexts/themeContext/utils/theme.js +1 -4
- package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/module/hooks/useViewport.js +47 -0
- package/lib/module/hooks/useViewport.js.map +1 -0
- package/lib/module/i18n/en.json +3 -1
- package/lib/module/i18n/es.json +3 -1
- package/lib/module/i18n/fr.json +53 -51
- package/lib/module/i18n/he.json +3 -1
- package/lib/module/i18n/hi.json +53 -51
- package/lib/module/i18n/it.json +53 -51
- package/lib/module/i18n/ja.json +3 -1
- package/lib/module/i18n/ko.json +3 -1
- package/lib/module/i18n/nl.json +53 -51
- package/lib/module/i18n/ru.json +53 -51
- package/lib/module/i18n/tr.json +53 -51
- package/lib/module/utils/utils.js +1 -15
- package/lib/module/utils/utils.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts +1 -1
- package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +1 -1
- package/lib/typescript/contexts/messageContext/MessageContext.d.ts +1 -1
- package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +1 -1
- package/lib/typescript/contexts/themeContext/utils/theme.d.ts +1 -3
- package/lib/typescript/hooks/useViewport.d.ts +11 -0
- package/lib/typescript/i18n/en.json +3 -1
- package/lib/typescript/i18n/es.json +3 -1
- package/lib/typescript/i18n/fr.json +53 -51
- package/lib/typescript/i18n/he.json +3 -1
- package/lib/typescript/i18n/hi.json +53 -51
- package/lib/typescript/i18n/it.json +53 -51
- package/lib/typescript/i18n/ja.json +3 -1
- package/lib/typescript/i18n/ko.json +3 -1
- package/lib/typescript/i18n/nl.json +53 -51
- package/lib/typescript/i18n/ru.json +53 -51
- package/lib/typescript/i18n/tr.json +53 -51
- package/lib/typescript/store/mappers/mapStorableToChannel.d.ts +1 -1
- package/lib/typescript/utils/Streami18n.d.ts +6 -0
- package/lib/typescript/utils/utils.d.ts +0 -2
- package/package.json +1 -1
- package/src/components/Attachment/FileAttachment.tsx +12 -3
- package/src/components/AttachmentPicker/AttachmentPicker.tsx +4 -2
- package/src/components/AttachmentPicker/components/AttachmentPickerItem.tsx +3 -1
- package/src/components/ChannelPreview/ChannelPreviewMessenger.tsx +4 -3
- package/src/components/ChannelPreview/hooks/useChannelPreviewDisplayName.ts +4 -3
- package/src/components/ImageGallery/ImageGallery.tsx +8 -4
- package/src/components/ImageGallery/components/AnimatedGalleryImage.tsx +5 -3
- package/src/components/ImageGallery/components/AnimatedGalleryVideo.tsx +5 -3
- package/src/components/ImageGallery/components/ImageGrid.tsx +2 -1
- package/src/components/Indicators/EmptyStateIndicator.tsx +8 -7
- package/src/components/Message/MessageSimple/MessageContent.tsx +3 -1
- package/src/components/Message/MessageSimple/ReactionList.tsx +2 -1
- package/src/components/MessageList/InlineUnreadIndicator.tsx +2 -1
- package/src/components/MessageOverlay/MessageActionList.tsx +3 -11
- package/src/components/MessageOverlay/MessageActionListItem.tsx +5 -2
- package/src/components/MessageOverlay/MessageOverlay.tsx +5 -3
- package/src/components/Thread/components/ThreadFooterComponent.tsx +2 -1
- package/src/contexts/themeContext/utils/theme.ts +2 -7
- package/src/hooks/useViewport.ts +41 -0
- package/src/i18n/en.json +3 -1
- package/src/i18n/es.json +3 -1
- package/src/i18n/fr.json +53 -51
- package/src/i18n/he.json +3 -1
- package/src/i18n/hi.json +53 -51
- package/src/i18n/it.json +53 -51
- package/src/i18n/ja.json +3 -1
- package/src/i18n/ko.json +3 -1
- package/src/i18n/nl.json +53 -51
- package/src/i18n/ru.json +53 -51
- package/src/i18n/tr.json +53 -51
- package/src/utils/utils.ts +0 -13
- package/src/version.json +1 -1
|
@@ -121,6 +121,7 @@ const ReactionListWithContext = <
|
|
|
121
121
|
avatarWrapper: { leftAlign, spacer },
|
|
122
122
|
reactionList: {
|
|
123
123
|
container,
|
|
124
|
+
iconFillColor,
|
|
124
125
|
middleIcon,
|
|
125
126
|
radius: themeRadius,
|
|
126
127
|
reactionBubble,
|
|
@@ -263,7 +264,7 @@ const ReactionListWithContext = <
|
|
|
263
264
|
{reactions.map((reaction) => (
|
|
264
265
|
<Icon
|
|
265
266
|
key={reaction.type}
|
|
266
|
-
pathFill={reaction.own ? accent_blue : grey}
|
|
267
|
+
pathFill={reaction.own ? iconFillColor || accent_blue : grey}
|
|
267
268
|
size={reactionSize / 2}
|
|
268
269
|
style={middleIcon}
|
|
269
270
|
supportedReactions={supportedReactions}
|
|
@@ -4,7 +4,7 @@ import Svg, { Defs, LinearGradient, Rect, Stop } from 'react-native-svg';
|
|
|
4
4
|
|
|
5
5
|
import { useTheme } from '../../contexts/themeContext/ThemeContext';
|
|
6
6
|
import { useTranslationContext } from '../../contexts/translationContext/TranslationContext';
|
|
7
|
-
import {
|
|
7
|
+
import { useViewport } from '../../hooks/useViewport';
|
|
8
8
|
|
|
9
9
|
const styles = StyleSheet.create({
|
|
10
10
|
container: {
|
|
@@ -28,6 +28,7 @@ export const InlineUnreadIndicator: React.FC = () => {
|
|
|
28
28
|
},
|
|
29
29
|
} = useTheme();
|
|
30
30
|
const { t } = useTranslationContext();
|
|
31
|
+
const { vw } = useViewport();
|
|
31
32
|
|
|
32
33
|
return (
|
|
33
34
|
<View style={[styles.container, container]}>
|
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
} from '../../contexts/messageOverlayContext/MessageOverlayContext';
|
|
11
11
|
import type { OverlayProviderProps } from '../../contexts/overlayContext/OverlayContext';
|
|
12
12
|
import { useTheme } from '../../contexts/themeContext/ThemeContext';
|
|
13
|
+
import { useViewport } from '../../hooks/useViewport';
|
|
13
14
|
import type { DefaultStreamChatGenerics } from '../../types/types';
|
|
14
|
-
import { vw } from '../../utils/utils';
|
|
15
15
|
|
|
16
16
|
export type MessageActionListPropsWithContext<
|
|
17
17
|
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
|
|
@@ -52,6 +52,7 @@ const MessageActionListWithContext = <
|
|
|
52
52
|
message,
|
|
53
53
|
messageReactions,
|
|
54
54
|
};
|
|
55
|
+
const { vw } = useViewport();
|
|
55
56
|
|
|
56
57
|
const {
|
|
57
58
|
theme: {
|
|
@@ -89,7 +90,7 @@ const MessageActionListWithContext = <
|
|
|
89
90
|
width.value = layout.width;
|
|
90
91
|
height.value = layout.height;
|
|
91
92
|
}}
|
|
92
|
-
style={[styles.container, { backgroundColor: white_snow }, showScreenStyle]}
|
|
93
|
+
style={[styles.container, { backgroundColor: white_snow, minWidth: vw(65) }, showScreenStyle]}
|
|
93
94
|
testID='message-action-list'
|
|
94
95
|
>
|
|
95
96
|
{messageActions?.map((messageAction, index) => (
|
|
@@ -154,17 +155,8 @@ const styles = StyleSheet.create({
|
|
|
154
155
|
container: {
|
|
155
156
|
borderRadius: 16,
|
|
156
157
|
marginTop: 8,
|
|
157
|
-
minWidth: vw(65),
|
|
158
158
|
overflow: 'hidden',
|
|
159
159
|
},
|
|
160
|
-
row: {
|
|
161
|
-
alignItems: 'center',
|
|
162
|
-
flexDirection: 'row',
|
|
163
|
-
justifyContent: 'flex-start',
|
|
164
|
-
minWidth: vw(65),
|
|
165
|
-
paddingHorizontal: 20,
|
|
166
|
-
paddingVertical: 10,
|
|
167
|
-
},
|
|
168
160
|
titleStyle: {
|
|
169
161
|
paddingLeft: 20,
|
|
170
162
|
},
|
|
@@ -6,8 +6,8 @@ import Animated from 'react-native-reanimated';
|
|
|
6
6
|
import { useMessageActionAnimation } from './hooks/useMessageActionAnimation';
|
|
7
7
|
|
|
8
8
|
import { useTheme } from '../../contexts/themeContext/ThemeContext';
|
|
9
|
+
import { useViewport } from '../../hooks/useViewport';
|
|
9
10
|
import type { DefaultStreamChatGenerics } from '../../types/types';
|
|
10
|
-
import { vw } from '../../utils/utils';
|
|
11
11
|
import type { MessageOverlayPropsWithContext } from '../MessageOverlay/MessageOverlay';
|
|
12
12
|
|
|
13
13
|
export type ActionType =
|
|
@@ -50,6 +50,7 @@ const MessageActionListItemWithContext = <
|
|
|
50
50
|
props: MessageActionListItemProps<StreamChatGenerics>,
|
|
51
51
|
) => {
|
|
52
52
|
const { action, actionType, icon, index, length, title, titleStyle } = props;
|
|
53
|
+
const { vw } = useViewport();
|
|
53
54
|
|
|
54
55
|
const {
|
|
55
56
|
theme: {
|
|
@@ -65,6 +66,9 @@ const MessageActionListItemWithContext = <
|
|
|
65
66
|
<Animated.View
|
|
66
67
|
style={[
|
|
67
68
|
styles.row,
|
|
69
|
+
{
|
|
70
|
+
minWidth: vw(65),
|
|
71
|
+
},
|
|
68
72
|
index !== length - 1 ? { ...styles.bottomBorder, borderBottomColor: border } : {},
|
|
69
73
|
animatedStyle,
|
|
70
74
|
messageActions.actionContainer,
|
|
@@ -114,7 +118,6 @@ const styles = StyleSheet.create({
|
|
|
114
118
|
alignItems: 'center',
|
|
115
119
|
flexDirection: 'row',
|
|
116
120
|
justifyContent: 'flex-start',
|
|
117
|
-
minWidth: vw(65),
|
|
118
121
|
paddingHorizontal: 20,
|
|
119
122
|
paddingVertical: 10,
|
|
120
123
|
},
|
|
@@ -41,8 +41,8 @@ import {
|
|
|
41
41
|
} from '../../contexts/overlayContext/OverlayContext';
|
|
42
42
|
import { mergeThemes, ThemeProvider, useTheme } from '../../contexts/themeContext/ThemeContext';
|
|
43
43
|
|
|
44
|
+
import { useViewport } from '../../hooks/useViewport';
|
|
44
45
|
import type { DefaultStreamChatGenerics } from '../../types/types';
|
|
45
|
-
import { vh, vw } from '../../utils/utils';
|
|
46
46
|
import { MessageTextContainer } from '../Message/MessageSimple/MessageTextContainer';
|
|
47
47
|
import {
|
|
48
48
|
OverlayReactions as DefaultOverlayReactions,
|
|
@@ -78,8 +78,6 @@ const styles = StyleSheet.create({
|
|
|
78
78
|
scrollView: { overflow: Platform.OS === 'ios' ? 'visible' : 'scroll' },
|
|
79
79
|
});
|
|
80
80
|
|
|
81
|
-
const screenHeight = vh(100);
|
|
82
|
-
const halfScreenHeight = vh(50);
|
|
83
81
|
const DefaultMessageTextNumberOfLines = 5;
|
|
84
82
|
|
|
85
83
|
export type MessageOverlayPropsWithContext<
|
|
@@ -154,6 +152,10 @@ const MessageOverlayWithContext = <
|
|
|
154
152
|
};
|
|
155
153
|
|
|
156
154
|
const { theme } = useTheme();
|
|
155
|
+
const { vh, vw } = useViewport();
|
|
156
|
+
|
|
157
|
+
const screenHeight = vh(100);
|
|
158
|
+
const halfScreenHeight = vh(50);
|
|
157
159
|
|
|
158
160
|
const myMessageTheme = messagesContext?.myMessageTheme;
|
|
159
161
|
const wrapMessageInTheme = clientId === message?.user?.id && !!myMessageTheme;
|
|
@@ -12,8 +12,8 @@ import {
|
|
|
12
12
|
useThreadContext,
|
|
13
13
|
} from '../../../contexts/threadContext/ThreadContext';
|
|
14
14
|
import { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';
|
|
15
|
+
import { useViewport } from '../../../hooks/useViewport';
|
|
15
16
|
import type { DefaultStreamChatGenerics } from '../../../types/types';
|
|
16
|
-
import { vw } from '../../../utils/utils';
|
|
17
17
|
|
|
18
18
|
const styles = StyleSheet.create({
|
|
19
19
|
absolute: { position: 'absolute' },
|
|
@@ -47,6 +47,7 @@ const ThreadFooterComponentWithContext = <
|
|
|
47
47
|
) => {
|
|
48
48
|
const { Message, thread } = props;
|
|
49
49
|
const { t } = useTranslationContext();
|
|
50
|
+
const { vw } = useViewport();
|
|
50
51
|
|
|
51
52
|
const {
|
|
52
53
|
theme: {
|
|
@@ -2,7 +2,6 @@ import type { ImageStyle, TextStyle, ViewStyle } from 'react-native';
|
|
|
2
2
|
import type { CircleProps, Color, StopProps } from 'react-native-svg';
|
|
3
3
|
|
|
4
4
|
import type { IconProps } from '../../../icons/utils/base';
|
|
5
|
-
import { vh } from '../../../utils/utils';
|
|
6
5
|
|
|
7
6
|
export const DEFAULT_STATUS_ICON_SIZE = 16;
|
|
8
7
|
|
|
@@ -302,9 +301,6 @@ export type Theme = {
|
|
|
302
301
|
iconContainer: ViewStyle;
|
|
303
302
|
title: TextStyle;
|
|
304
303
|
};
|
|
305
|
-
container: ViewStyle & {
|
|
306
|
-
maxHeight: number;
|
|
307
|
-
};
|
|
308
304
|
emoji: {
|
|
309
305
|
container: ViewStyle;
|
|
310
306
|
text: TextStyle;
|
|
@@ -480,6 +476,7 @@ export type Theme = {
|
|
|
480
476
|
};
|
|
481
477
|
reactionList: {
|
|
482
478
|
container: ViewStyle;
|
|
479
|
+
iconFillColor: Color;
|
|
483
480
|
middleIcon: ViewStyle;
|
|
484
481
|
radius: number;
|
|
485
482
|
reactionBubble: ViewStyle;
|
|
@@ -809,9 +806,6 @@ export const defaultTheme: Theme = {
|
|
|
809
806
|
iconContainer: {},
|
|
810
807
|
title: {},
|
|
811
808
|
},
|
|
812
|
-
container: {
|
|
813
|
-
maxHeight: vh(25),
|
|
814
|
-
},
|
|
815
809
|
emoji: {
|
|
816
810
|
container: {},
|
|
817
811
|
text: {},
|
|
@@ -1019,6 +1013,7 @@ export const defaultTheme: Theme = {
|
|
|
1019
1013
|
},
|
|
1020
1014
|
reactionList: {
|
|
1021
1015
|
container: {},
|
|
1016
|
+
iconFillColor: '',
|
|
1022
1017
|
middleIcon: {},
|
|
1023
1018
|
radius: 2, // not recommended to change this
|
|
1024
1019
|
reactionBubble: {},
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
2
|
+
import { Dimensions } from 'react-native';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* A custom hook that provides functions to calculate dimensions based on
|
|
6
|
+
* a percentage of the viewport height (vh) and viewport width (vw). It
|
|
7
|
+
* dynamically updates dimensions on changes in device orientation.
|
|
8
|
+
*
|
|
9
|
+
* @returns {Object} An object containing functions vh and vw.
|
|
10
|
+
*/
|
|
11
|
+
export const useViewport = (rounded?: boolean) => {
|
|
12
|
+
const [viewportDimensions, setViewportDimensions] = useState(Dimensions.get('window'));
|
|
13
|
+
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
const subscriptions = Dimensions.addEventListener('change', ({ window }) => {
|
|
16
|
+
setViewportDimensions((prev) => {
|
|
17
|
+
const { height, width } = window;
|
|
18
|
+
if (prev.height !== height || prev.width !== width) {
|
|
19
|
+
return window;
|
|
20
|
+
}
|
|
21
|
+
return prev;
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
return () => subscriptions?.remove();
|
|
26
|
+
}, []);
|
|
27
|
+
|
|
28
|
+
const vw = (percentageWidth: number) => {
|
|
29
|
+
const value = viewportDimensions.width * (percentageWidth / 100);
|
|
30
|
+
return rounded ? Math.round(value) : value;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const vh = (percentageHeight: number) => {
|
|
34
|
+
const value = viewportDimensions.height * (percentageHeight / 100);
|
|
35
|
+
return rounded ? Math.round(value) : value;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const viewportFunctions = useMemo(() => ({ vh, vw }), [vh, vw]);
|
|
39
|
+
|
|
40
|
+
return viewportFunctions;
|
|
41
|
+
};
|
package/src/i18n/en.json
CHANGED
|
@@ -22,8 +22,10 @@
|
|
|
22
22
|
"File type not supported": "File type not supported",
|
|
23
23
|
"Flag": "Flag",
|
|
24
24
|
"Flag Message": "Flag Message",
|
|
25
|
-
"Flag action failed either due to a network issue or the message is already flagged": "Flag action failed either due to a network issue or the message is already flagged",
|
|
25
|
+
"Flag action failed either due to a network issue or the message is already flagged": "Flag action failed either due to a network issue or the message is already flagged.",
|
|
26
|
+
"How about sending your first message to a friend?": "How about sending your first message to a friend?",
|
|
26
27
|
"Instant Commands": "Instant Commands",
|
|
28
|
+
"Let's start chatting!": "Let's start chatting!",
|
|
27
29
|
"Links are disabled": "Links are disabled",
|
|
28
30
|
"Loading channels...": "Loading channels...",
|
|
29
31
|
"Loading messages...": "Loading messages...",
|
package/src/i18n/es.json
CHANGED
|
@@ -68,5 +68,7 @@
|
|
|
68
68
|
"{{ user }} is typing": "{{ user }} está escribiendo",
|
|
69
69
|
"Select More Photos": "Seleccionar más fotos",
|
|
70
70
|
"🏙 Attachment...": "🏙 Adjunto...",
|
|
71
|
-
"Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "El archivo supera el tamaño máximo permitido. Por favor, selecciona un archivo menor a {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB."
|
|
71
|
+
"Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "El archivo supera el tamaño máximo permitido. Por favor, selecciona un archivo menor a {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.",
|
|
72
|
+
"Let's start chatting!": "¡Empecemos a charlar!",
|
|
73
|
+
"How about sending your first message to a friend?": "¿Qué tal enviar tu primer mensaje a un amigo?"
|
|
72
74
|
}
|
package/src/i18n/fr.json
CHANGED
|
@@ -2,70 +2,72 @@
|
|
|
2
2
|
"1 Reply": "1 Réponse",
|
|
3
3
|
"1 Thread Reply": "Réponse à 1 fil",
|
|
4
4
|
"Allow access to your Gallery": "Autoriser l'accès à votre galerie",
|
|
5
|
-
"Also send to channel": "",
|
|
6
|
-
"Are you sure you want to permanently delete this message?": "",
|
|
7
|
-
"Block User": "",
|
|
8
|
-
"Cancel": "",
|
|
9
|
-
"Cannot Flag Message": "",
|
|
10
|
-
"Copy Message": "",
|
|
11
|
-
"Delete": "",
|
|
12
|
-
"Delete Message": "",
|
|
13
|
-
"Do you want to send a copy of this message to a moderator for further investigation?": "",
|
|
14
|
-
"Edit Message": "",
|
|
15
|
-
"Editing Message": "",
|
|
16
|
-
"Emoji matching": "",
|
|
17
|
-
"Empty message...": "",
|
|
18
|
-
"Error loading": "",
|
|
19
|
-
"Error loading channel list...": "",
|
|
20
|
-
"Error loading messages for this channel...": "",
|
|
21
|
-
"Error while loading, please reload/refresh": "",
|
|
22
|
-
"File type not supported": "",
|
|
23
|
-
"Flag": "",
|
|
24
|
-
"Flag Message": "",
|
|
25
|
-
"Flag action failed either due to a network issue or the message is already flagged": "",
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"Loading...": "",
|
|
31
|
-
"
|
|
5
|
+
"Also send to channel": "Envoyer également à la chaîne",
|
|
6
|
+
"Are you sure you want to permanently delete this message?": "Êtes-vous sûr de vouloir supprimer définitivement ce message?",
|
|
7
|
+
"Block User": "Bloquer un utilisateur",
|
|
8
|
+
"Cancel": "Annuler",
|
|
9
|
+
"Cannot Flag Message": "Impossible de signaler le message",
|
|
10
|
+
"Copy Message": "Copier le message",
|
|
11
|
+
"Delete": "Supprimer",
|
|
12
|
+
"Delete Message": "Supprimer un message",
|
|
13
|
+
"Do you want to send a copy of this message to a moderator for further investigation?": "Voulez-vous envoyer une copie de ce message à un modérateur pour une enquête plus approfondie?",
|
|
14
|
+
"Edit Message": "Éditer un message",
|
|
15
|
+
"Editing Message": "Édite un message",
|
|
16
|
+
"Emoji matching": "Correspondance Emoji",
|
|
17
|
+
"Empty message...": "Message vide...",
|
|
18
|
+
"Error loading": "Erreur lors du chargement",
|
|
19
|
+
"Error loading channel list...": "Erreur lors du chargement de la liste de canaux...",
|
|
20
|
+
"Error loading messages for this channel...": "Erreur lors du chargement des messages de ce canal...",
|
|
21
|
+
"Error while loading, please reload/refresh": "Erreur lors du chargement, veuillez recharger/rafraîchir",
|
|
22
|
+
"File type not supported": "Le type de fichier n'est pas pris en charge",
|
|
23
|
+
"Flag": "Signaler",
|
|
24
|
+
"Flag Message": "Signaler le message",
|
|
25
|
+
"Flag action failed either due to a network issue or the message is already flagged": "L'action de signalisation a échoué en raison d'un problème de réseau ou le message est déjà signalé.",
|
|
26
|
+
"How about sending your first message to a friend?": "Et si vous envoyiez votre premier message à un ami ?",
|
|
27
|
+
"Instant Commands": "Commandes Instantanées",
|
|
28
|
+
"Let's start chatting!": "Commençons à discuter !",
|
|
29
|
+
"Links are disabled": "Links are disabled",
|
|
30
|
+
"Loading channels...": "Chargement des canaux...",
|
|
31
|
+
"Loading messages...": "Chargement des messages...",
|
|
32
|
+
"Loading...": "Chargement...",
|
|
33
|
+
"Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "Taille maximale de téléchargement de fichier atteinte. Veuillez télécharger un fichier inférieur à {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} Mo.",
|
|
32
34
|
"Message Reactions": "Réactions aux messages",
|
|
33
|
-
"Message deleted": "",
|
|
34
|
-
"Message flagged": "",
|
|
35
|
-
"Mute User": "",
|
|
36
|
-
"Not supported": "",
|
|
37
|
-
"Nothing yet...": "",
|
|
38
|
-
"Ok": "",
|
|
35
|
+
"Message deleted": "Message supprimé",
|
|
36
|
+
"Message flagged": "Message signalé",
|
|
37
|
+
"Mute User": "Utilisateur muet",
|
|
38
|
+
"Not supported": "Non pris en charge",
|
|
39
|
+
"Nothing yet...": "Aucun message...",
|
|
40
|
+
"Ok": "Ok",
|
|
39
41
|
"Only visible to you": "Seulement visible par vous",
|
|
40
42
|
"Photo": "Photo",
|
|
41
43
|
"Photos and Videos": "Photos et vidéos",
|
|
42
|
-
"Pin to Conversation": "",
|
|
44
|
+
"Pin to Conversation": "Épingler à la conversation",
|
|
43
45
|
"Pinned by": "Épinglé par",
|
|
44
46
|
"Please enable access to your photos and videos so you can share them.": "Veuillez autoriser l'accès à vos photos et vidéos afin de pouvoir les partager.",
|
|
45
|
-
"Please select a channel first": "",
|
|
46
|
-
"Reconnecting...": "",
|
|
47
|
-
"Reply": "",
|
|
48
|
-
"Reply to Message": "",
|
|
49
|
-
"Resend": "",
|
|
50
|
-
"Search GIFs": "",
|
|
47
|
+
"Please select a channel first": "Veuillez d'abord selectionnez un canal",
|
|
48
|
+
"Reconnecting...": "Se Reconnecter...",
|
|
49
|
+
"Reply": "Répondre",
|
|
50
|
+
"Reply to Message": "Répondre au message",
|
|
51
|
+
"Resend": "Renvoyer",
|
|
52
|
+
"Search GIFs": "Rechercher des GIF",
|
|
51
53
|
"Select More Photos": "Sélectionner plus de photos",
|
|
52
|
-
"Send a message": "",
|
|
53
|
-
"Sending links is not allowed in this conversation": "",
|
|
54
|
-
"Slow mode ON": "",
|
|
55
|
-
"The message has been reported to a moderator.": "",
|
|
56
|
-
"Thread Reply": "",
|
|
57
|
-
"Unblock User": "",
|
|
54
|
+
"Send a message": "Envoyer un message",
|
|
55
|
+
"Sending links is not allowed in this conversation": "Sending links is not allowed in this conversation",
|
|
56
|
+
"Slow mode ON": "Mode lent activé",
|
|
57
|
+
"The message has been reported to a moderator.": "Le message a été signalé à un modérateur.",
|
|
58
|
+
"Thread Reply": "Réponse à la discussion",
|
|
59
|
+
"Unblock User": "Débloquer Utilisateur",
|
|
58
60
|
"Unknown User": "Utilisateur inconnu",
|
|
59
|
-
"Unmute User": "",
|
|
60
|
-
"Unpin from Conversation": "",
|
|
61
|
+
"Unmute User": "Activer le son de Utilisateur",
|
|
62
|
+
"Unpin from Conversation": "Décrocher de la conversation",
|
|
61
63
|
"Unread Messages": "Messages non lus",
|
|
62
64
|
"Video": "Vidéo",
|
|
63
|
-
"You": "",
|
|
64
|
-
"You can't send messages in this channel": "",
|
|
65
|
+
"You": "Toi",
|
|
66
|
+
"You can't send messages in this channel": "You can't send messages in this channel",
|
|
65
67
|
"{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} et {{ nonSelfUserLength }} autres sont en train d'écrire",
|
|
66
68
|
"{{ index }} of {{ photoLength }}": "{{ index }} sur {{ photoLength }}",
|
|
67
69
|
"{{ replyCount }} Replies": "{{ replyCount }} Réponses",
|
|
68
70
|
"{{ replyCount }} Thread Replies": "{{replyCount}} Réponses à la discussion",
|
|
69
71
|
"{{ user }} is typing": "{{ user }} est en train d'écrire",
|
|
70
|
-
"🏙 Attachment...": ""
|
|
72
|
+
"🏙 Attachment...": "🏙 Pièce jointe..."
|
|
71
73
|
}
|
package/src/i18n/he.json
CHANGED
|
@@ -68,5 +68,7 @@
|
|
|
68
68
|
"{{ user }} is typing": "{{ user }} מקליד/ה",
|
|
69
69
|
"Select More Photos": "בחר עוד תמונות",
|
|
70
70
|
"🏙 Attachment...": "🏙 קובץ מצורף...",
|
|
71
|
-
"Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "הגעת למגבלת העלאת גודל הקובץ המקסימלית. אנא העלה קובץ מתחת ל-{{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB"
|
|
71
|
+
"Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "הגעת למגבלת העלאת גודל הקובץ המקסימלית. אנא העלה קובץ מתחת ל-{{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB",
|
|
72
|
+
"Let's start chatting!": "בואו נתחיל לשוחח!",
|
|
73
|
+
"How about sending your first message to a friend?": "מה דעתך לשלוח את ההודעה הראשונה שלך לחבר?"
|
|
72
74
|
}
|
package/src/i18n/hi.json
CHANGED
|
@@ -2,70 +2,72 @@
|
|
|
2
2
|
"1 Reply": "1 रिप्लाई",
|
|
3
3
|
"1 Thread Reply": "1 धागा उत्तर",
|
|
4
4
|
"Allow access to your Gallery": "अपनी गैलरी तक पहुँचने की अनुमति दें",
|
|
5
|
-
"Also send to channel": "",
|
|
6
|
-
"Are you sure you want to permanently delete this message?": "",
|
|
7
|
-
"Block User": "",
|
|
8
|
-
"Cancel": "",
|
|
9
|
-
"Cannot Flag Message": "",
|
|
10
|
-
"Copy Message": "",
|
|
11
|
-
"Delete": "",
|
|
12
|
-
"Delete Message": "",
|
|
13
|
-
"Do you want to send a copy of this message to a moderator for further investigation?": "",
|
|
14
|
-
"Edit Message": "",
|
|
15
|
-
"Editing Message": "",
|
|
16
|
-
"Emoji matching": "",
|
|
17
|
-
"Empty message...": "",
|
|
18
|
-
"Error loading": "",
|
|
19
|
-
"Error loading channel list...": "",
|
|
20
|
-
"Error loading messages for this channel...": "",
|
|
21
|
-
"Error while loading, please reload/refresh": "",
|
|
22
|
-
"File type not supported": "",
|
|
23
|
-
"Flag": "",
|
|
24
|
-
"Flag Message": "",
|
|
25
|
-
"Flag action failed either due to a network issue or the message is already flagged": "",
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"Loading...": "",
|
|
31
|
-
"
|
|
5
|
+
"Also send to channel": "चैनल को भी भेजें",
|
|
6
|
+
"Are you sure you want to permanently delete this message?": "क्या आप वाकई इस संदेश को स्थायी रूप से हटाना चाहते हैं?",
|
|
7
|
+
"Block User": "उपयोगकर्ता को रोक देना, ब्लॉक यूजर",
|
|
8
|
+
"Cancel": "रद्द करें",
|
|
9
|
+
"Cannot Flag Message": "मैसेज फ्लैग नहीं किया जा सकता है",
|
|
10
|
+
"Copy Message": "संदेश की प्रतिलिपि बनाएँ",
|
|
11
|
+
"Delete": "हटाएं",
|
|
12
|
+
"Delete Message": "मैसेज को डिलीट करे",
|
|
13
|
+
"Do you want to send a copy of this message to a moderator for further investigation?": "क्या आप इस संदेश की एक प्रति आगे की जाँच के लिए किसी मॉडरेटर को भेजना चाहते हैं?",
|
|
14
|
+
"Edit Message": "मैसेज में बदलाव करे",
|
|
15
|
+
"Editing Message": "मैसेज बदला जा रहा है",
|
|
16
|
+
"Emoji matching": "इमोजी मिलान",
|
|
17
|
+
"Empty message...": "खाली संदेश...",
|
|
18
|
+
"Error loading": "लोड होने मे त्रुटि",
|
|
19
|
+
"Error loading channel list...": "चैनल सूची लोड करने में त्रुटि...",
|
|
20
|
+
"Error loading messages for this channel...": "इस चैनल के लिए मेसेजेस लोड करने में त्रुटि हुई...",
|
|
21
|
+
"Error while loading, please reload/refresh": "एरर, रिफ्रेश करे",
|
|
22
|
+
"File type not supported": "फ़ाइल प्रकार समर्थित नहीं है",
|
|
23
|
+
"Flag": "झंडा",
|
|
24
|
+
"Flag Message": "झंडा संदेश",
|
|
25
|
+
"Flag action failed either due to a network issue or the message is already flagged": "फ़्लैग कार्रवाई या तो नेटवर्क समस्या के कारण विफल हो गई या संदेश पहले से फ़्लैग किया गया है।",
|
|
26
|
+
"How about sending your first message to a friend?": "किसी मित्र को अपना पहला संदेश भेजने के बारे में क्या ख़याल है?",
|
|
27
|
+
"Instant Commands": "त्वरित कमांड",
|
|
28
|
+
"Let's start chatting!": "आइए चैट करना शुरू करें!",
|
|
29
|
+
"Links are disabled": "लिंक अक्षम हैं",
|
|
30
|
+
"Loading channels...": "चैनल लोड हो रहे हैं...",
|
|
31
|
+
"Loading messages...": "मेसेजस लोड हो रहे हैं...",
|
|
32
|
+
"Loading...": "लोड हो रहा है...",
|
|
33
|
+
"Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "अधिकतम फ़ाइल आकार अपलोड सीमा पूरी हो गई। कृपया {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} एमबी से नीचे की फ़ाइल अपलोड करें।",
|
|
32
34
|
"Message Reactions": "संदेश प्रतिक्रियाएँ",
|
|
33
|
-
"Message deleted": "",
|
|
34
|
-
"Message flagged": "",
|
|
35
|
-
"Mute User": "",
|
|
36
|
-
"Not supported": "",
|
|
37
|
-
"Nothing yet...": "",
|
|
38
|
-
"Ok": "",
|
|
35
|
+
"Message deleted": "मैसेज हटा दिया गया",
|
|
36
|
+
"Message flagged": "संदेश को ध्वजांकित किया गया",
|
|
37
|
+
"Mute User": "उपयोगकर्ता को म्यूट करें",
|
|
38
|
+
"Not supported": "समर्थित नहीं",
|
|
39
|
+
"Nothing yet...": "कोई मैसेज नहीं है...",
|
|
40
|
+
"Ok": "ठीक",
|
|
39
41
|
"Only visible to you": "केवल आपको दिखाई दे रहा है",
|
|
40
42
|
"Photo": "तस्वीर",
|
|
41
43
|
"Photos and Videos": "तस्वीरें और वीडियों",
|
|
42
|
-
"Pin to Conversation": "",
|
|
44
|
+
"Pin to Conversation": "बातचीत में पिन करें",
|
|
43
45
|
"Pinned by": "द्वारा पिन किया गया",
|
|
44
46
|
"Please enable access to your photos and videos so you can share them.": "कृपया अपनी फ़ोटो और वीडियो तक पहुंच सक्षम करें ताकि आप उन्हें साझा कर सकें।",
|
|
45
|
-
"Please select a channel first": "",
|
|
46
|
-
"Reconnecting...": "",
|
|
47
|
-
"Reply": "",
|
|
48
|
-
"Reply to Message": "",
|
|
49
|
-
"Resend": "",
|
|
50
|
-
"Search GIFs": "",
|
|
47
|
+
"Please select a channel first": "कृपया पहले एक चैनल चुनें",
|
|
48
|
+
"Reconnecting...": "पुनः कनेक्ट हो...",
|
|
49
|
+
"Reply": "मैसेज को रिप्लाई करे",
|
|
50
|
+
"Reply to Message": "संदेश का जवाब दें",
|
|
51
|
+
"Resend": "पुन: भेजें",
|
|
52
|
+
"Search GIFs": "GIF खोजें",
|
|
51
53
|
"Select More Photos": "अधिक फ़ोटो चुनें",
|
|
52
|
-
"Send a message": "",
|
|
53
|
-
"Sending links is not allowed in this conversation": "",
|
|
54
|
-
"Slow mode ON": "",
|
|
55
|
-
"The message has been reported to a moderator.": "",
|
|
56
|
-
"Thread Reply": "",
|
|
57
|
-
"Unblock User": "",
|
|
54
|
+
"Send a message": "एक संदेश भेजें",
|
|
55
|
+
"Sending links is not allowed in this conversation": "इस बातचीत में लिंक भेजने की अनुमति नहीं है",
|
|
56
|
+
"Slow mode ON": "स्लो मोड चालू",
|
|
57
|
+
"The message has been reported to a moderator.": "संदेश एक मॉडरेटर को सूचित किया गया है।",
|
|
58
|
+
"Thread Reply": "धागा जवाब",
|
|
59
|
+
"Unblock User": "उपयोगकर्ता को अनब्लॉक करें",
|
|
58
60
|
"Unknown User": "अज्ञात उपयोगकर्ता",
|
|
59
|
-
"Unmute User": "",
|
|
60
|
-
"Unpin from Conversation": "",
|
|
61
|
+
"Unmute User": "उपयोगकर्ता को अनम्यूट करें",
|
|
62
|
+
"Unpin from Conversation": "बातचीत से अनपिन करें",
|
|
61
63
|
"Unread Messages": "अपठित संदेश",
|
|
62
64
|
"Video": "वीडियो",
|
|
63
|
-
"You": "",
|
|
64
|
-
"You can't send messages in this channel": "",
|
|
65
|
+
"You": "आप",
|
|
66
|
+
"You can't send messages in this channel": "आप इस चैनल में संदेश नहीं भेज सकते",
|
|
65
67
|
"{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} और {{ nonSelfUserLength }} अधिक टाइप कर रहे हैं",
|
|
66
68
|
"{{ index }} of {{ photoLength }}": "{{ index }} / {{ photoLength }}",
|
|
67
69
|
"{{ replyCount }} Replies": "{{ replyCount }} रिप्लाई",
|
|
68
70
|
"{{ replyCount }} Thread Replies": "{{ replyCount }}} थ्रेड उत्तर",
|
|
69
71
|
"{{ user }} is typing": "{{ user }} टाइप कर रहा है",
|
|
70
|
-
"🏙 Attachment...": ""
|
|
72
|
+
"🏙 Attachment...": "🏙 अटैचमेंट..."
|
|
71
73
|
}
|