@messenger-box/platform-mobile 0.0.1-alpha.362 → 0.0.1-alpha.365
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/CHANGELOG.md +8 -0
- package/lib/index.js +2281 -553
- package/lib/index.js.map +1 -1
- package/lib/screens/inbox/DialogThreadMessages.d.ts +7 -0
- package/lib/screens/inbox/DialogThreads.d.ts +6 -0
- package/lib/screens/inbox/components/SupportServiceDialogsListItem.d.ts +21 -0
- package/lib/screens/inbox/components/ThreadsViewItem.d.ts +18 -0
- package/lib/screens/inbox/config/config.d.ts +2 -0
- package/lib/screens/inbox/containers/Dialogs.d.ts +1 -0
- package/lib/screens/inbox/containers/SupportServiceDialogs.d.ts +6 -0
- package/lib/screens/inbox/containers/ThreadConversationView.d.ts +11 -0
- package/lib/screens/inbox/containers/ThreadsView.d.ts +8 -0
- package/lib/screens/index.d.ts +2 -0
- package/package.json +4 -4
- package/src/navigation/InboxNavigation.tsx +63 -0
- package/src/screens/inbox/DialogThreadMessages.tsx +90 -0
- package/src/screens/inbox/DialogThreads.tsx +107 -0
- package/src/screens/inbox/Inbox.tsx +5 -3
- package/src/screens/inbox/components/DialogsListItem.tsx +7 -3
- package/src/screens/inbox/components/SlackMessageContainer/SlackBubble.tsx +5 -5
- package/src/screens/inbox/components/SupportServiceDialogsListItem.tsx +295 -0
- package/src/screens/inbox/components/ThreadsViewItem.tsx +236 -0
- package/src/screens/inbox/config/config.ts +4 -0
- package/src/screens/inbox/containers/ConversationView.tsx +440 -156
- package/src/screens/inbox/containers/Dialogs.tsx +2 -1
- package/src/screens/inbox/containers/SupportServiceDialogs.tsx +119 -0
- package/src/screens/inbox/containers/ThreadConversationView.tsx +764 -0
- package/src/screens/inbox/containers/ThreadsView.tsx +205 -0
- package/src/screens/index.ts +3 -1
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { IChannel, IUserAccount } from '@messenger-box/platform-client';
|
|
3
|
+
export interface IDialogListChannel extends IChannel {
|
|
4
|
+
users: IUserAccount[];
|
|
5
|
+
}
|
|
6
|
+
export interface IDialogListItemProps {
|
|
7
|
+
currentUser?: any;
|
|
8
|
+
users?: any;
|
|
9
|
+
selectedChannelId?: any;
|
|
10
|
+
channel?: any;
|
|
11
|
+
onOpen: (id: any, title: any, postParentId?: any) => void;
|
|
12
|
+
refreshing: boolean;
|
|
13
|
+
role: any;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* TODO:
|
|
17
|
+
* - Get Reservation info: reservation date, status
|
|
18
|
+
* - Add ability to get property information: name, logo
|
|
19
|
+
*/
|
|
20
|
+
export declare const SupportServiceDialogsListItemComponent: React.FC<IDialogListItemProps>;
|
|
21
|
+
export declare const SupportServiceDialogsListItem: React.NamedExoticComponent<IDialogListItemProps>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { IChannel, IUserAccount } from '@messenger-box/platform-client';
|
|
3
|
+
export interface IDialogListChannel extends IChannel {
|
|
4
|
+
users: IUserAccount[];
|
|
5
|
+
}
|
|
6
|
+
export interface IDialogListItemProps {
|
|
7
|
+
currentUser?: any;
|
|
8
|
+
users?: any;
|
|
9
|
+
thread?: any;
|
|
10
|
+
onOpen: (id: any, title: any, postParentId?: any) => void;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* TODO:
|
|
14
|
+
* - Get Reservation info: reservation date, status
|
|
15
|
+
* - Add ability to get property information: name, logo
|
|
16
|
+
*/
|
|
17
|
+
export declare const ThreadViewItemComponent: React.FC<IDialogListItemProps>;
|
|
18
|
+
export declare const ThreadViewItem: React.NamedExoticComponent<IDialogListItemProps>;
|
|
@@ -2,6 +2,8 @@ export declare const config: Readonly<{
|
|
|
2
2
|
MESSAGES_PER_PAGE: number;
|
|
3
3
|
FILES_PER_MESSAGE: number;
|
|
4
4
|
INBOX_MESSEGE_PATH: string;
|
|
5
|
+
THREAD_MESSEGE_PATH: string;
|
|
6
|
+
THREADS_PATH: string;
|
|
5
7
|
CALL_TO_ACTION_PATH: string;
|
|
6
8
|
CALL_TO_ACTION_BOX_BGCOLOR: string;
|
|
7
9
|
CALL_TO_ACTION_BUTTON_BORDERCOLOR: string;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface AlertMessageAttachmentsInterface {
|
|
3
|
+
title: string;
|
|
4
|
+
isTitleHtml: boolean;
|
|
5
|
+
icon: string;
|
|
6
|
+
callToAction: {
|
|
7
|
+
title: string;
|
|
8
|
+
link: string;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export declare const ThreadConversationView: React.MemoExoticComponent<({ channelId, postParentId, isPostParentIdThread, role }: any) => JSX.Element>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface ThreadsViewProps {
|
|
3
|
+
channelId?: string;
|
|
4
|
+
role?: string;
|
|
5
|
+
channelsDetail?: any;
|
|
6
|
+
refetchChannelDetail: (id: any) => Promise<any>;
|
|
7
|
+
}
|
|
8
|
+
export declare const ThreadsView: React.MemoExoticComponent<({ channelId, role, channelsDetail, refetchChannelDetail }: ThreadsViewProps) => JSX.Element>;
|
package/lib/screens/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@messenger-box/platform-mobile",
|
|
3
|
-
"version": "0.0.1-alpha.
|
|
3
|
+
"version": "0.0.1-alpha.365",
|
|
4
4
|
"description": "Sample core for higher packages to depend on",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "CDMBase LLC",
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
"watch": "yarn build:lib:watch"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@messenger-box/core": "0.0.1-alpha.
|
|
23
|
-
"@messenger-box/platform-client": "0.0.1-alpha.
|
|
22
|
+
"@messenger-box/core": "0.0.1-alpha.365",
|
|
23
|
+
"@messenger-box/platform-client": "0.0.1-alpha.365",
|
|
24
24
|
"base-64": "1.0.0",
|
|
25
25
|
"react-native-gifted-chat": "1.0.4"
|
|
26
26
|
},
|
|
@@ -40,5 +40,5 @@
|
|
|
40
40
|
"typescript": {
|
|
41
41
|
"definition": "lib/index.d.ts"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "52c2335b1abc0d3317a5a4a821963becf5509c70"
|
|
44
44
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { Feature } from '@common-stack/client-react';
|
|
3
3
|
import { DialogMessages } from '../screens/inbox/DialogMessages';
|
|
4
|
+
import { DialogThreads } from '../screens/inbox/DialogThreads';
|
|
5
|
+
import { DialogThreadMessages } from '../screens/inbox/DialogThreadMessages';
|
|
4
6
|
import { IconButton, Icon } from 'native-base';
|
|
5
7
|
import { MaterialIcons } from '@expo/vector-icons';
|
|
6
8
|
|
|
@@ -28,6 +30,67 @@ const inboxConfig = {
|
|
|
28
30
|
},
|
|
29
31
|
},
|
|
30
32
|
},
|
|
33
|
+
['//thread']: {
|
|
34
|
+
exact: true,
|
|
35
|
+
name: 'Thread',
|
|
36
|
+
props: {
|
|
37
|
+
initialParams: { channelId: null, postParentId: null,role:null },
|
|
38
|
+
component: (props: any) => (
|
|
39
|
+
<DialogThreads
|
|
40
|
+
{...props}
|
|
41
|
+
channelId={props?.route?.params?.channelId}
|
|
42
|
+
postParentId={props?.route?.params?.postParentId}
|
|
43
|
+
role={props?.route?.params?.role}
|
|
44
|
+
/>
|
|
45
|
+
),
|
|
46
|
+
options: ({ navigation }: any) => {
|
|
47
|
+
return {
|
|
48
|
+
headerShown: true,
|
|
49
|
+
title: 'Thread',
|
|
50
|
+
headerBackTitleVisible: false,
|
|
51
|
+
gestureEnabled: false,
|
|
52
|
+
swipeEnabled: false,
|
|
53
|
+
headerLeft: (props: any) => (
|
|
54
|
+
<IconButton
|
|
55
|
+
onPress={() => navigation.goBack()}
|
|
56
|
+
icon={<Icon size={'lg'} as={MaterialIcons} name="arrow-back-ios" color={'black'} />}
|
|
57
|
+
/>
|
|
58
|
+
),
|
|
59
|
+
};
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
['//threadmessage']: {
|
|
64
|
+
exact: true,
|
|
65
|
+
name: 'ThreadMessage',
|
|
66
|
+
props: {
|
|
67
|
+
initialParams: { channelId: null, postParentId: null, isPostParentIdThread: null,role:null },
|
|
68
|
+
component: (props: any) => (
|
|
69
|
+
<DialogThreadMessages
|
|
70
|
+
{...props}
|
|
71
|
+
channelId={props?.route?.params?.channelId}
|
|
72
|
+
postParentId={props?.route?.params?.postParentId}
|
|
73
|
+
isPostParentIdThread={props?.route?.params?.isPostParentIdThread}
|
|
74
|
+
role={props?.route?.params?.role}
|
|
75
|
+
/>
|
|
76
|
+
),
|
|
77
|
+
options: ({ navigation }: any) => {
|
|
78
|
+
return {
|
|
79
|
+
headerShown: true,
|
|
80
|
+
title: 'Inbox',
|
|
81
|
+
headerBackTitleVisible: false,
|
|
82
|
+
gestureEnabled: false,
|
|
83
|
+
swipeEnabled: false,
|
|
84
|
+
headerLeft: (props: any) => (
|
|
85
|
+
<IconButton
|
|
86
|
+
onPress={() => navigation.goBack()}
|
|
87
|
+
icon={<Icon size={'lg'} as={MaterialIcons} name="arrow-back-ios" color={'black'} />}
|
|
88
|
+
/>
|
|
89
|
+
),
|
|
90
|
+
};
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
},
|
|
31
94
|
};
|
|
32
95
|
|
|
33
96
|
export const inboxFeature = new Feature({
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Box, Spinner, Text } from 'native-base';
|
|
3
|
+
import { ThreadConversationView } from './containers/ThreadConversationView';
|
|
4
|
+
import { ThreadsView } from './containers/ThreadsView';
|
|
5
|
+
import { useViewChannelDetailQuery, useSendThreadMessageMutation } from '@messenger-box/platform-client';
|
|
6
|
+
import { useFocusEffect } from '@react-navigation/native';
|
|
7
|
+
import { useSelector } from 'react-redux';
|
|
8
|
+
|
|
9
|
+
export function DialogThreadMessages({ channelId, postParentId, isPostParentIdThread, role }) {
|
|
10
|
+
const {
|
|
11
|
+
data,
|
|
12
|
+
loading: channelLoading,
|
|
13
|
+
refetch,
|
|
14
|
+
} = useViewChannelDetailQuery({
|
|
15
|
+
variables: {
|
|
16
|
+
id: channelId?.toString(),
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
const [sendThreadMessage] = useSendThreadMessageMutation();
|
|
21
|
+
const [loading, setLoading] = React.useState<boolean>(true);
|
|
22
|
+
const [channel, setChannel] = React.useState<any>(null);
|
|
23
|
+
const [parentId, setParentId] = React.useState<any>(postParentId);
|
|
24
|
+
|
|
25
|
+
const refetchChannelDetail = React.useCallback(
|
|
26
|
+
(id: string) => {
|
|
27
|
+
return refetch({ id: id?.toString() });
|
|
28
|
+
},
|
|
29
|
+
[channelId],
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
useFocusEffect(
|
|
33
|
+
React.useCallback(() => {
|
|
34
|
+
// Do something when the screen is focused
|
|
35
|
+
refetchChannelDetail(channelId);
|
|
36
|
+
return () => {};
|
|
37
|
+
}, []),
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
React.useEffect(() => {
|
|
41
|
+
setParentId(postParentId);
|
|
42
|
+
}, [postParentId]);
|
|
43
|
+
|
|
44
|
+
React.useEffect(() => {
|
|
45
|
+
if (data?.viewChannelDetail) setChannel(data?.viewChannelDetail);
|
|
46
|
+
}, [data]);
|
|
47
|
+
|
|
48
|
+
React.useEffect(() => {
|
|
49
|
+
async function sendInitialMessage(channel: any) {
|
|
50
|
+
const content = `Welcome to ${channel?.title}`;
|
|
51
|
+
const createdBy = channel?.creator?.id;
|
|
52
|
+
await sendThreadMessage({
|
|
53
|
+
variables: {
|
|
54
|
+
channelId,
|
|
55
|
+
threadMessageInput: {
|
|
56
|
+
content,
|
|
57
|
+
role,
|
|
58
|
+
},
|
|
59
|
+
responderId: createdBy,
|
|
60
|
+
},
|
|
61
|
+
update: (cache, { data, errors }: any) => {
|
|
62
|
+
if (!data) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
setParentId(data?.sendThreadMessage?.lastMessage?.id);
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
if ((!parentId || parentId == 0) && channel) {
|
|
70
|
+
sendInitialMessage(channel);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (parentId) setLoading(false);
|
|
74
|
+
}, [parentId, channel]);
|
|
75
|
+
|
|
76
|
+
return (
|
|
77
|
+
<Box bg={'white'} flex={1}>
|
|
78
|
+
{loading && !parentId ? (
|
|
79
|
+
<Spinner />
|
|
80
|
+
) : (
|
|
81
|
+
<ThreadConversationView
|
|
82
|
+
channelId={channelId}
|
|
83
|
+
postParentId={parentId}
|
|
84
|
+
isPostParentIdThread={isPostParentIdThread}
|
|
85
|
+
role={role}
|
|
86
|
+
/>
|
|
87
|
+
)}
|
|
88
|
+
</Box>
|
|
89
|
+
);
|
|
90
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Box, Spinner, Text } from 'native-base';
|
|
3
|
+
import { ThreadConversationView } from './containers/ThreadConversationView';
|
|
4
|
+
import { ThreadsView } from './containers/ThreadsView';
|
|
5
|
+
import { useViewChannelDetailQuery } from '@messenger-box/platform-client';
|
|
6
|
+
import { useFocusEffect } from '@react-navigation/native';
|
|
7
|
+
import { useSelector } from 'react-redux';
|
|
8
|
+
|
|
9
|
+
export function DialogThreads({ channelId, postParentId,role }) {
|
|
10
|
+
const {
|
|
11
|
+
data,
|
|
12
|
+
loading: channelLoading,
|
|
13
|
+
refetch,
|
|
14
|
+
} = useViewChannelDetailQuery({
|
|
15
|
+
variables: {
|
|
16
|
+
id: channelId?.toString(),
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
const channelsDetail = React.useMemo(() => {
|
|
21
|
+
if (!data?.viewChannelDetail) return null;
|
|
22
|
+
return data?.viewChannelDetail;
|
|
23
|
+
}, [data]);
|
|
24
|
+
|
|
25
|
+
const refetchChannelDetail = React.useCallback(
|
|
26
|
+
(id: string) => {
|
|
27
|
+
return refetch({ id: id?.toString() });
|
|
28
|
+
},
|
|
29
|
+
[channelId],
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
useFocusEffect(
|
|
33
|
+
React.useCallback(() => {
|
|
34
|
+
// Do something when the screen is focused
|
|
35
|
+
refetchChannelDetail(channelId);
|
|
36
|
+
return () => {};
|
|
37
|
+
}, []),
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
// <Box bg={'white'} flex={1} pt={5}>
|
|
42
|
+
<>
|
|
43
|
+
{channelLoading ? (
|
|
44
|
+
<Spinner />
|
|
45
|
+
) : (
|
|
46
|
+
<>
|
|
47
|
+
<Box
|
|
48
|
+
flex={1}
|
|
49
|
+
_dark={{
|
|
50
|
+
borderColor: 'coolGray.600',
|
|
51
|
+
backgroundColor: 'gray.700',
|
|
52
|
+
}}
|
|
53
|
+
_light={{
|
|
54
|
+
backgroundColor: 'gray.50',
|
|
55
|
+
}}
|
|
56
|
+
>
|
|
57
|
+
<ThreadsView
|
|
58
|
+
channelId={channelId}
|
|
59
|
+
role={role}
|
|
60
|
+
channelsDetail={channelsDetail}
|
|
61
|
+
refetchChannelDetail={refetchChannelDetail}
|
|
62
|
+
/>
|
|
63
|
+
</Box>
|
|
64
|
+
</>
|
|
65
|
+
)}
|
|
66
|
+
</>
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
// return (
|
|
70
|
+
// // <Box bg={'white'} flex={1} pt={5}>
|
|
71
|
+
// <>
|
|
72
|
+
// {channelLoading ? (
|
|
73
|
+
// <Spinner />
|
|
74
|
+
// ) : (
|
|
75
|
+
// <>
|
|
76
|
+
// {postParentId || postParentId == 0 ? (
|
|
77
|
+
// <Box bg={'white'} flex={1}>
|
|
78
|
+
// <ThreadConversationView
|
|
79
|
+
// channelId={channelId}
|
|
80
|
+
// postParentId={postParentId}
|
|
81
|
+
// channelsDetail={channelsDetail}
|
|
82
|
+
// refetchChannelDetail={refetchChannelDetail}
|
|
83
|
+
// />
|
|
84
|
+
// </Box>
|
|
85
|
+
// ) : (
|
|
86
|
+
// <Box
|
|
87
|
+
// flex={1}
|
|
88
|
+
// _dark={{
|
|
89
|
+
// borderColor: 'coolGray.600',
|
|
90
|
+
// backgroundColor: 'gray.700',
|
|
91
|
+
// }}
|
|
92
|
+
// _light={{
|
|
93
|
+
// backgroundColor: 'gray.50',
|
|
94
|
+
// }}
|
|
95
|
+
// >
|
|
96
|
+
// <ThreadsView
|
|
97
|
+
// channelId={channelId}
|
|
98
|
+
// channelsDetail={channelsDetail}
|
|
99
|
+
// refetchChannelDetail={refetchChannelDetail}
|
|
100
|
+
// />
|
|
101
|
+
// </Box>
|
|
102
|
+
// )}
|
|
103
|
+
// </>
|
|
104
|
+
// )}
|
|
105
|
+
// </>
|
|
106
|
+
// );
|
|
107
|
+
}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { Box } from 'native-base';
|
|
2
|
+
import { Box, Text } from 'native-base';
|
|
3
3
|
|
|
4
4
|
import { Dialogs } from './containers/Dialogs';
|
|
5
|
+
import { SupportServiceDialogs } from './containers/SupportServiceDialogs';
|
|
5
6
|
|
|
6
|
-
export const Inbox = (props:any) => {
|
|
7
|
-
const { channelFilters, channelRole } = props;
|
|
7
|
+
export const Inbox = (props: any) => {
|
|
8
|
+
const { channelFilters, channelRole, supportServices } = props;
|
|
8
9
|
return (
|
|
9
10
|
<Box bg={'white'} flex={1}>
|
|
11
|
+
{supportServices && <SupportServiceDialogs channelFilters={channelFilters} channelRole={channelRole} {...props} />}
|
|
10
12
|
<Dialogs channelFilters={channelFilters} channelRole={channelRole} {...props} />
|
|
11
13
|
</Box>
|
|
12
14
|
);
|
|
@@ -37,6 +37,7 @@ export const DialogsListItemComponent: React.FC<IDialogListItemProps> = function
|
|
|
37
37
|
channel,
|
|
38
38
|
onOpen,
|
|
39
39
|
}) {
|
|
40
|
+
const parentId:any = null;
|
|
40
41
|
const {
|
|
41
42
|
data: messagesQuery,
|
|
42
43
|
loading: messageLoading,
|
|
@@ -44,7 +45,8 @@ export const DialogsListItemComponent: React.FC<IDialogListItemProps> = function
|
|
|
44
45
|
} = useMessagesQuery({
|
|
45
46
|
variables: {
|
|
46
47
|
channelId: channel?.id?.toString(),
|
|
47
|
-
|
|
48
|
+
parentId: parentId,
|
|
49
|
+
limit: 25,
|
|
48
50
|
},
|
|
49
51
|
fetchPolicy: 'cache-and-network',
|
|
50
52
|
});
|
|
@@ -52,7 +54,7 @@ export const DialogsListItemComponent: React.FC<IDialogListItemProps> = function
|
|
|
52
54
|
useFocusEffect(
|
|
53
55
|
React.useCallback(() => {
|
|
54
56
|
// Do something when the screen is focused
|
|
55
|
-
refetchMessages({ channelId: channel?.id?.toString(), limit:
|
|
57
|
+
refetchMessages({ channelId: channel?.id?.toString(),parentId:parentId, limit: 25 });
|
|
56
58
|
|
|
57
59
|
return () => {
|
|
58
60
|
// Do something when the screen is unfocused
|
|
@@ -66,7 +68,9 @@ export const DialogsListItemComponent: React.FC<IDialogListItemProps> = function
|
|
|
66
68
|
return null;
|
|
67
69
|
}
|
|
68
70
|
const { data } = messagesQuery.messages;
|
|
69
|
-
|
|
71
|
+
const filteredData = data?.filter((p: any) => p?.message !== '');
|
|
72
|
+
return filteredData[0];
|
|
73
|
+
//return data[data.length - 1];
|
|
70
74
|
}, [messagesQuery]);
|
|
71
75
|
|
|
72
76
|
const channelMembers = useMemo(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable no-underscore-dangle, no-use-before-define */
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import { Text, StyleSheet, TouchableOpacity, View, Platform, Dimensions } from 'react-native';
|
|
3
|
+
import { Text, StyleSheet, TouchableOpacity,TouchableHighlight, View, Platform, Dimensions } from 'react-native';
|
|
4
4
|
|
|
5
5
|
import { MessageText, MessageImage, Time, utils } from 'react-native-gifted-chat';
|
|
6
6
|
import CachedImage from '../CachedImage';
|
|
@@ -64,7 +64,7 @@ export default class Bubble extends React.Component<any> {
|
|
|
64
64
|
const { image, _id } = messageImageProps?.currentMessage;
|
|
65
65
|
|
|
66
66
|
return (
|
|
67
|
-
<
|
|
67
|
+
<TouchableHighlight underlayColor={'#c0c0c0'} style={{width:'100%'}} onPress={() => this.props.setImageViewer(messageImageProps?.currentMessage, true)}>
|
|
68
68
|
<View
|
|
69
69
|
style={{
|
|
70
70
|
width: windowWidth - (windowWidth - 150),
|
|
@@ -87,7 +87,7 @@ export default class Bubble extends React.Component<any> {
|
|
|
87
87
|
alt={'image'}
|
|
88
88
|
/>
|
|
89
89
|
</View>
|
|
90
|
-
</
|
|
90
|
+
</TouchableHighlight>
|
|
91
91
|
);
|
|
92
92
|
}
|
|
93
93
|
return null;
|
|
@@ -173,7 +173,7 @@ export default class Bubble extends React.Component<any> {
|
|
|
173
173
|
|
|
174
174
|
return (
|
|
175
175
|
<View style={[styles.container, this.props.containerStyle]}>
|
|
176
|
-
<
|
|
176
|
+
<TouchableHighlight style={{width:'100%'}} underlayColor={'#c0c0c0'} disabled={true} accessibilityTraits="text" {...this.props.touchableProps}>
|
|
177
177
|
<View style={[styles.wrapper, this.props.wrapperStyle]}>
|
|
178
178
|
<View>
|
|
179
179
|
{this.renderCustomView()}
|
|
@@ -182,7 +182,7 @@ export default class Bubble extends React.Component<any> {
|
|
|
182
182
|
{this.renderMessageText()}
|
|
183
183
|
</View>
|
|
184
184
|
</View>
|
|
185
|
-
</
|
|
185
|
+
</TouchableHighlight>
|
|
186
186
|
</View>
|
|
187
187
|
);
|
|
188
188
|
}
|