@smart-link/rn-im 1.0.22 → 1.0.24
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/api/addressList.js +6 -17
- package/dist/api/backup.js +8 -20
- package/dist/api/file.js +6 -35
- package/dist/api/user.js +6 -16
- package/dist/components/CachedImage.js +14 -42
- package/dist/components/Camera/Camera.js +26 -54
- package/dist/components/Camera/CameraCapture.js +99 -128
- package/dist/components/Camera/CameraResult.js +33 -61
- package/dist/components/ChatAvatar/ChatAvatar.d.ts +1 -1
- package/dist/components/ChatAvatar/ChatAvatar.js +34 -62
- package/dist/components/ChatAvatar/ChatAvatarId.d.ts +2 -2
- package/dist/components/ChatAvatar/ChatAvatarId.js +26 -51
- package/dist/components/ChatAvatar/ChatAvatarLocal.d.ts +2 -2
- package/dist/components/ChatAvatar/ChatAvatarLocal.js +23 -25
- package/dist/components/ChatAvatar/index.js +2 -23
- package/dist/components/Favicon.js +6 -34
- package/dist/components/FormatTimeText.js +5 -10
- package/dist/components/Highlighter.js +9 -34
- package/dist/components/IndicatorText.js +14 -39
- package/dist/components/LocalImage.js +7 -32
- package/dist/components/NetworkUnconnected.js +14 -42
- package/dist/components/PopoverWrapper.js +22 -47
- package/dist/components/VideoPlayer.js +111 -138
- package/dist/components/styles.js +10 -13
- package/dist/default-assets.d.ts +1 -0
- package/dist/default-assets.js +8 -10
- package/dist/hooks/useDownloadSource.js +7 -12
- package/dist/hooks/useFormatMsgTime.js +5 -13
- package/dist/hooks/useImReady.js +7 -10
- package/dist/hooks/useImSelector.js +34 -48
- package/dist/hooks/useTranslation.js +5 -10
- package/dist/index.d.ts +1 -0
- package/dist/index.js +8 -28
- package/dist/init.js +30 -40
- package/dist/interface.js +1 -2
- package/dist/locales/en/addressList.js +1 -3
- package/dist/locales/index.js +4 -27
- package/dist/locales/lao/addressList.js +1 -3
- package/dist/locales/zh/addressList.js +1 -3
- package/dist/pages/address-list/AddressList.js +33 -61
- package/dist/pages/address-list/CardInfo.js +10 -18
- package/dist/pages/address-list/ChooseContact.js +50 -78
- package/dist/pages/address-list/Icons.js +7 -14
- package/dist/pages/address-list/Organization.js +59 -89
- package/dist/pages/address-list/UserDetail.js +55 -83
- package/dist/pages/address-list/UserJobs.js +31 -33
- package/dist/pages/address-list/UserSearch.js +29 -54
- package/dist/pages/address-list/addressList.routes.js +11 -16
- package/dist/pages/collection/Collection.js +53 -81
- package/dist/pages/collection/ContentFactory.js +53 -82
- package/dist/pages/collection/collection.routes.js +3 -9
- package/dist/pages/conversation/ForwardToConversation.js +63 -91
- package/dist/pages/conversation/List.js +74 -102
- package/dist/pages/conversation/components/ConversationCard.js +52 -81
- package/dist/pages/conversation/components/ConversationOption.js +27 -55
- package/dist/pages/conversation/conversation.routes.js +17 -23
- package/dist/pages/conversation/setting/GroupTransfer.js +32 -60
- package/dist/pages/conversation/setting/OptionAvatars.js +62 -90
- package/dist/pages/conversation/setting/OptionCancelGroup.js +14 -42
- package/dist/pages/conversation/setting/OptionConversation.js +20 -48
- package/dist/pages/conversation/setting/OptionGroup.js +20 -48
- package/dist/pages/conversation/setting/OptionGroupManage.js +21 -49
- package/dist/pages/conversation/setting/OptionGroupMoreMember.js +48 -53
- package/dist/pages/conversation/setting/OptionGroupNameOrNoticeEdit.js +49 -77
- package/dist/pages/conversation/setting/Setting.js +49 -54
- package/dist/pages/conversation/setting/SettingChatBg.js +26 -54
- package/dist/pages/index.js +7 -27
- package/dist/pages/message/ChooseMember.js +56 -84
- package/dist/pages/message/MessageBackup/Bar.js +18 -43
- package/dist/pages/message/MessageBackup/MessageBackup.js +42 -72
- package/dist/pages/message/MessageBackup/RestoreBackupPage.js +48 -76
- package/dist/pages/message/MessageBackup/StartBackupPage.js +48 -76
- package/dist/pages/message/MessageBackup/index.js +3 -12
- package/dist/pages/message/MessageBackup/utils.js +14 -22
- package/dist/pages/message/MessageList.js +141 -134
- package/dist/pages/message/MessageRecord.js +49 -73
- package/dist/pages/message/components/BusiNotifyCard.js +60 -85
- package/dist/pages/message/components/ChatBg.js +11 -36
- package/dist/pages/message/components/MessageItem.js +82 -110
- package/dist/pages/message/components/MessageItemQuote.js +30 -58
- package/dist/pages/message/components/MessageItemTips.js +27 -55
- package/dist/pages/message/components/MessageOption.js +96 -120
- package/dist/pages/message/components/MessagePayload.js +36 -64
- package/dist/pages/message/components/MessagePictureAlbum.js +32 -60
- package/dist/pages/message/components/MessageReceiptStatus.js +18 -43
- package/dist/pages/message/components/MessageUndo.js +18 -48
- package/dist/pages/message/components/MultipleBar/index.js +48 -76
- package/dist/pages/message/components/Payload/PayloadContact.js +30 -58
- package/dist/pages/message/components/Payload/PayloadFile.js +41 -65
- package/dist/pages/message/components/Payload/PayloadMultiple.js +38 -66
- package/dist/pages/message/components/Payload/PayloadNotify.js +28 -56
- package/dist/pages/message/components/Payload/PayloadPicture.js +21 -49
- package/dist/pages/message/components/Payload/PayloadShare.js +39 -67
- package/dist/pages/message/components/Payload/PayloadText.js +39 -67
- package/dist/pages/message/components/Payload/PayloadVideo.js +28 -56
- package/dist/pages/message/components/Payload/PayloadVoice.js +80 -93
- package/dist/pages/message/components/Payload/PayloadWrapper.js +18 -43
- package/dist/pages/message/components/Payload/type.js +1 -2
- package/dist/pages/message/components/ReceiptBack.js +31 -61
- package/dist/pages/message/components/TextMixMessage.js +13 -38
- package/dist/pages/message/components/TextMixQuote.js +129 -158
- package/dist/pages/message/components/TextMixQuoteMessage.js +16 -44
- package/dist/pages/message/components/UploadProgress.js +12 -37
- package/dist/pages/message/components/messageBar/EmojiPanel.js +25 -50
- package/dist/pages/message/components/messageBar/Icons.js +56 -74
- package/dist/pages/message/components/messageBar/MessageBar.js +84 -115
- package/dist/pages/message/components/messageBar/MessageInput.js +30 -55
- package/dist/pages/message/components/messageBar/OptionPanel.js +54 -82
- package/dist/pages/message/components/messageBar/VoiceBar.js +122 -100
- package/dist/pages/message/components/messageBar/index.js +2 -23
- package/dist/pages/message/message.routes.js +11 -40
- package/dist/pages/search/Search.js +38 -66
- package/dist/pages/search/SearchChatRecords.js +64 -92
- package/dist/pages/search/SearchFile.js +68 -96
- package/dist/pages/search/SearchManager.js +60 -65
- package/dist/pages/search/SearchPicturePage.js +16 -44
- package/dist/pages/search/components/ChatRecords.js +46 -74
- package/dist/pages/search/components/MyGroupChat.js +41 -69
- package/dist/pages/search/components/PictureMulipleBar.js +35 -63
- package/dist/pages/search/components/SearchFileList.js +59 -64
- package/dist/pages/search/components/SearchPictures.js +68 -98
- package/dist/pages/search/components/SearchShareLinkList.js +50 -55
- package/dist/pages/search/components/SearchUser.js +25 -53
- package/dist/pages/search/components/useSearchMessage.js +12 -16
- package/dist/pages/search/search.routes.js +11 -17
- package/dist/pages/search/utils.js +4 -12
- package/dist/pages/types.js +1 -2
- package/dist/slice/contact/contact.action.js +1 -2
- package/dist/slice/contact/contact.slice.js +7 -11
- package/dist/slice/index.js +7 -13
- package/dist/slice/panel/panel.slice.d.ts +2 -1
- package/dist/slice/panel/panel.slice.js +8 -7
- package/dist/slice/video/video.action.d.ts +1 -0
- package/dist/slice/video/video.action.js +56 -38
- package/dist/slice/video/video.slice.d.ts +1 -1
- package/dist/slice/video/video.slice.js +7 -8
- package/dist/utils/audio.d.ts +3 -0
- package/dist/utils/audio.js +10 -0
- package/dist/utils/color.js +2 -9
- package/dist/utils/common-action-sheet.js +9 -14
- package/dist/utils/cookie.js +6 -14
- package/dist/utils/emoji.js +9 -12
- package/dist/utils/file-icon.js +33 -60
- package/dist/utils/file-operate.js +1 -2
- package/dist/utils/file.d.ts +1 -1
- package/dist/utils/file.js +74 -87
- package/dist/utils/golden-rectangle.js +3 -7
- package/dist/utils/phone.js +13 -22
- package/dist/utils/request.js +7 -15
- package/dist/utils/scroll.js +5 -9
- package/dist/utils/summary.js +4 -11
- package/dist/utils/take-camera.js +12 -19
- package/dist/utils/text-mix.js +4 -11
- package/dist/utils/upload.js +20 -41
- package/package.json +6 -7
@@ -1,86 +1,58 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
}
|
8
|
-
Object.defineProperty(o, k2, desc);
|
9
|
-
}) : (function(o, m, k, k2) {
|
10
|
-
if (k2 === undefined) k2 = k;
|
11
|
-
o[k2] = m[k];
|
12
|
-
}));
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
-
}) : function(o, v) {
|
16
|
-
o["default"] = v;
|
17
|
-
});
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
-
if (mod && mod.__esModule) return mod;
|
20
|
-
var result = {};
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
-
__setModuleDefault(result, mod);
|
23
|
-
return result;
|
24
|
-
};
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
27
|
-
};
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
29
|
-
const useTranslation_1 = __importDefault(require("../../../../hooks/useTranslation"));
|
30
|
-
const rn_ui_1 = require("@smart-link/rn-ui");
|
31
|
-
const react_1 = __importStar(require("react"));
|
32
|
-
const react_native_1 = require("react-native");
|
33
|
-
const PayloadWrapper_1 = __importDefault(require("./PayloadWrapper"));
|
34
|
-
const ChatAvatar_1 = __importDefault(require("../../../../components/ChatAvatar/ChatAvatar"));
|
1
|
+
import useTranslation from '../../../../hooks/useTranslation';
|
2
|
+
import { dp, useNavigation } from '@smart-link/rn-ui';
|
3
|
+
import React, { memo } from 'react';
|
4
|
+
import { View, Text, StyleSheet } from 'react-native';
|
5
|
+
import PayloadWrapper from './PayloadWrapper';
|
6
|
+
import ChatAvatar from '../../../../components/ChatAvatar/ChatAvatar';
|
35
7
|
const PayloadContact = ({ payload, direction, style, showArrow = true, onLongPress }) => {
|
36
|
-
const { t } = (
|
8
|
+
const { t } = useTranslation();
|
37
9
|
const contact = payload.contact;
|
38
|
-
const navigation =
|
39
|
-
return (<
|
10
|
+
const navigation = useNavigation();
|
11
|
+
return (<PayloadWrapper direction={direction} showArrow={showArrow} style={[style, styles.contact]} onPress={() => {
|
40
12
|
navigation.navigate('UserDetail', { userId: contact.userId });
|
41
13
|
}} onLongPress={onLongPress}>
|
42
|
-
<
|
43
|
-
<
|
44
|
-
<
|
45
|
-
<
|
46
|
-
<
|
14
|
+
<View style={styles.content}>
|
15
|
+
<ChatAvatar id={contact.userId} url={contact.avatars} name={contact.userName}/>
|
16
|
+
<View style={styles.info}>
|
17
|
+
<Text style={styles.name}>{contact.userName}</Text>
|
18
|
+
<Text style={styles.group} numberOfLines={2}>
|
47
19
|
{contact.groupNamePaths}
|
48
|
-
</
|
49
|
-
</
|
50
|
-
</
|
51
|
-
<
|
52
|
-
</
|
20
|
+
</Text>
|
21
|
+
</View>
|
22
|
+
</View>
|
23
|
+
<Text style={styles.footer}>{t('contact')}</Text>
|
24
|
+
</PayloadWrapper>);
|
53
25
|
};
|
54
|
-
const styles =
|
26
|
+
const styles = StyleSheet.create({
|
55
27
|
contact: {
|
56
28
|
flexDirection: 'column',
|
57
|
-
padding:
|
58
|
-
borderRadius:
|
59
|
-
width:
|
29
|
+
padding: dp(6),
|
30
|
+
borderRadius: dp(8),
|
31
|
+
width: dp(240),
|
60
32
|
},
|
61
33
|
content: {
|
62
34
|
flex: 1,
|
63
35
|
flexDirection: 'row',
|
64
36
|
borderBottomColor: '#eee',
|
65
|
-
borderBottomWidth:
|
66
|
-
paddingBottom:
|
37
|
+
borderBottomWidth: dp(1),
|
38
|
+
paddingBottom: dp(6),
|
67
39
|
},
|
68
40
|
info: {
|
69
41
|
flex: 1,
|
70
42
|
flexDirection: 'column',
|
71
|
-
marginLeft:
|
43
|
+
marginLeft: dp(12),
|
72
44
|
},
|
73
45
|
name: {
|
74
|
-
fontSize:
|
46
|
+
fontSize: dp(16),
|
75
47
|
color: '#333',
|
76
48
|
},
|
77
49
|
group: {
|
78
50
|
color: '#999',
|
79
|
-
fontSize:
|
51
|
+
fontSize: dp(14),
|
80
52
|
},
|
81
53
|
footer: {
|
82
54
|
color: '#999',
|
83
|
-
fontSize:
|
55
|
+
fontSize: dp(12),
|
84
56
|
},
|
85
57
|
});
|
86
|
-
|
58
|
+
export default memo(PayloadContact);
|
@@ -1,27 +1,3 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
-
if (k2 === undefined) k2 = k;
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
-
}
|
8
|
-
Object.defineProperty(o, k2, desc);
|
9
|
-
}) : (function(o, m, k, k2) {
|
10
|
-
if (k2 === undefined) k2 = k;
|
11
|
-
o[k2] = m[k];
|
12
|
-
}));
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
-
}) : function(o, v) {
|
16
|
-
o["default"] = v;
|
17
|
-
});
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
-
if (mod && mod.__esModule) return mod;
|
20
|
-
var result = {};
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
-
__setModuleDefault(result, mod);
|
23
|
-
return result;
|
24
|
-
};
|
25
1
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
26
2
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
27
3
|
return new (P || (P = Promise))(function (resolve, reject) {
|
@@ -31,41 +7,37 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
31
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
32
8
|
});
|
33
9
|
};
|
34
|
-
|
35
|
-
|
36
|
-
};
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
const init_1 = require("../../../../init");
|
46
|
-
const PayloadWrapper_1 = __importDefault(require("./PayloadWrapper"));
|
47
|
-
const file_icon_1 = require("../../../../utils/file-icon");
|
48
|
-
const useTranslation_1 = __importDefault(require("../../../../hooks/useTranslation"));
|
10
|
+
import { dp, Toast } from '@smart-link/rn-ui';
|
11
|
+
import FileViewer from 'react-native-file-viewer';
|
12
|
+
import React, { memo, useRef, useState } from 'react';
|
13
|
+
import { View, Text, StyleSheet, Dimensions, } from 'react-native';
|
14
|
+
import { numberToFileSize } from '../../../../utils/file';
|
15
|
+
import { MessageStatus } from '@smart-link/im-base';
|
16
|
+
import UploadProgress from '../UploadProgress';
|
17
|
+
import { getImManager } from '../../../../init';
|
18
|
+
import PayloadWrapper from './PayloadWrapper';
|
19
|
+
import { findSvgIcon } from '../../../../utils/file-icon';
|
20
|
+
import useTranslation from "../../../../hooks/useTranslation";
|
49
21
|
const PayloadFile = ({ payload, messageSeq, direction, showArrow = true, isRecord, messageStatus, sendSize, style, onLongPress }) => {
|
50
22
|
const ext = payload.filename.split('.').pop();
|
51
|
-
const Icon =
|
52
|
-
const path =
|
53
|
-
const downloading =
|
54
|
-
const { t } = (
|
55
|
-
const [download, setDownload] =
|
23
|
+
const Icon = findSvgIcon(ext);
|
24
|
+
const path = useRef('');
|
25
|
+
const downloading = useRef(false);
|
26
|
+
const { t } = useTranslation();
|
27
|
+
const [download, setDownload] = useState({
|
56
28
|
progress: 0,
|
57
29
|
status: 'pending',
|
58
30
|
});
|
59
31
|
const openWithLocal = (path) => __awaiter(void 0, void 0, void 0, function* () {
|
60
32
|
try {
|
61
|
-
yield
|
33
|
+
yield FileViewer.open(path);
|
62
34
|
}
|
63
35
|
catch (e) {
|
64
|
-
|
36
|
+
Toast.warning(t('fileOpenFail'));
|
65
37
|
}
|
66
38
|
});
|
67
39
|
const pressFile = () => __awaiter(void 0, void 0, void 0, function* () {
|
68
|
-
const imManager =
|
40
|
+
const imManager = getImManager();
|
69
41
|
const download = () => __awaiter(void 0, void 0, void 0, function* () {
|
70
42
|
try {
|
71
43
|
const localPath = yield imManager.download({
|
@@ -88,7 +60,7 @@ const PayloadFile = ({ payload, messageSeq, direction, showArrow = true, isRecor
|
|
88
60
|
return localPath;
|
89
61
|
}
|
90
62
|
catch (e) {
|
91
|
-
|
63
|
+
Toast.error(t('downloadError'));
|
92
64
|
setDownload({
|
93
65
|
progress: 0,
|
94
66
|
status: 'pending',
|
@@ -108,6 +80,10 @@ const PayloadFile = ({ payload, messageSeq, direction, showArrow = true, isRecor
|
|
108
80
|
return;
|
109
81
|
downloading.current = true;
|
110
82
|
localPath = yield download();
|
83
|
+
setDownload({
|
84
|
+
progress: payload.size,
|
85
|
+
status: 'done',
|
86
|
+
});
|
111
87
|
imManager.updateResource({ url: payload.fileId, localPath });
|
112
88
|
yield openWithLocal(localPath);
|
113
89
|
return;
|
@@ -120,38 +96,38 @@ const PayloadFile = ({ payload, messageSeq, direction, showArrow = true, isRecor
|
|
120
96
|
return;
|
121
97
|
downloading.current = true;
|
122
98
|
const localPath = yield download();
|
123
|
-
|
99
|
+
getImManager().db.updateMessage({
|
124
100
|
messageSeq,
|
125
101
|
payload: Object.assign(Object.assign({}, payload), { localPath: localPath }),
|
126
102
|
});
|
127
103
|
yield openWithLocal(localPath);
|
128
104
|
}
|
129
105
|
});
|
130
|
-
return (<
|
131
|
-
<
|
106
|
+
return (<PayloadWrapper direction={direction} showArrow={showArrow} onLongPress={onLongPress} style={[style, styles.file]} onPress={pressFile}>
|
107
|
+
<View style={{ flexDirection: 'row', alignItems: 'center', flex: 1 }}>
|
132
108
|
<Icon style={styles.fileIcon}/>
|
133
|
-
<
|
134
|
-
<
|
135
|
-
<
|
136
|
-
</
|
137
|
-
</
|
138
|
-
<
|
139
|
-
<
|
140
|
-
</
|
109
|
+
<View style={{ flex: 1 }}>
|
110
|
+
<Text numberOfLines={1} ellipsizeMode="middle">{payload.filename}</Text>
|
111
|
+
<Text style={styles.size}>{numberToFileSize(payload.size)}{payload.localPath ? t('downloaded') : ''}</Text>
|
112
|
+
</View>
|
113
|
+
</View>
|
114
|
+
<UploadProgress show={download.status === 'downloading'} width={200} sendSize={download.progress} totalSize={payload.size}/>
|
115
|
+
<UploadProgress show={messageStatus === MessageStatus.EMITTING} width={200} sendSize={sendSize || 0} totalSize={payload.size}/>
|
116
|
+
</PayloadWrapper>);
|
141
117
|
};
|
142
|
-
const styles =
|
118
|
+
const styles = StyleSheet.create({
|
143
119
|
file: {
|
144
120
|
minWidth: 200,
|
145
121
|
alignItems: 'center',
|
146
|
-
padding:
|
147
|
-
borderRadius:
|
148
|
-
width:
|
122
|
+
padding: dp(6),
|
123
|
+
borderRadius: dp(8),
|
124
|
+
width: Dimensions.get('window').width * 0.75,
|
149
125
|
},
|
150
126
|
fileIcon: {
|
151
|
-
marginRight:
|
127
|
+
marginRight: dp(8),
|
152
128
|
},
|
153
129
|
size: {
|
154
130
|
color: '#999',
|
155
131
|
},
|
156
132
|
});
|
157
|
-
|
133
|
+
export default memo(PayloadFile);
|
@@ -1,103 +1,75 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
}));
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
-
}) : function(o, v) {
|
16
|
-
o["default"] = v;
|
17
|
-
});
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
-
if (mod && mod.__esModule) return mod;
|
20
|
-
var result = {};
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
-
__setModuleDefault(result, mod);
|
23
|
-
return result;
|
24
|
-
};
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
27
|
-
};
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
29
|
-
const styles_1 = require("../../../../components/styles");
|
30
|
-
const useTranslation_1 = __importDefault(require("../../../../hooks/useTranslation"));
|
31
|
-
const init_1 = require("../../../../init");
|
32
|
-
const im_base_1 = require("@smart-link/im-base");
|
33
|
-
const rn_ui_1 = require("@smart-link/rn-ui");
|
34
|
-
const react_1 = __importStar(require("react"));
|
35
|
-
const react_native_1 = require("react-native");
|
36
|
-
const PayloadWrapper_1 = __importDefault(require("./PayloadWrapper"));
|
37
|
-
const { width } = react_native_1.Dimensions.get('window');
|
38
|
-
const PayloadMultiple = (0, react_1.memo)(({ payload, messageSeq, direction, showArrow = true, style, onLongPress }) => {
|
39
|
-
const navigation = (0, rn_ui_1.useNavigation)();
|
1
|
+
import { borderStyle, shadowStyle } from '../../../../components/styles';
|
2
|
+
import useTranslation from '../../../../hooks/useTranslation';
|
3
|
+
import { getImManager } from '../../../../init';
|
4
|
+
import { buildSimpleText, ConversationType } from '@smart-link/im-base';
|
5
|
+
import { dp, useNavigation } from '@smart-link/rn-ui';
|
6
|
+
import React, { memo } from 'react';
|
7
|
+
import { View, StyleSheet, Text, Dimensions } from 'react-native';
|
8
|
+
import PayloadWrapper from './PayloadWrapper';
|
9
|
+
const { width } = Dimensions.get('window');
|
10
|
+
const PayloadMultiple = memo(({ payload, messageSeq, direction, showArrow = true, style, onLongPress }) => {
|
11
|
+
const navigation = useNavigation();
|
40
12
|
const { type, toName, fromName, selectedMessages } = payload;
|
41
|
-
const { t } = (
|
42
|
-
const imManager =
|
13
|
+
const { t } = useTranslation();
|
14
|
+
const imManager = getImManager();
|
43
15
|
const messages = selectedMessages.length > 4 ? [...selectedMessages.slice(0, 4), 'more'] : selectedMessages;
|
44
|
-
const title = type ===
|
16
|
+
const title = type === ConversationType.C2C
|
45
17
|
? t('multipleChatRecordTitle', { fromName, toName })
|
46
18
|
: t('multipleChatRecordTitleGroup');
|
47
|
-
return (<
|
19
|
+
return (<PayloadWrapper direction={direction} showArrow={showArrow} style={[style, styles.wrap]} onPress={() => {
|
48
20
|
navigation.navigate('MessageRecord', {
|
49
21
|
messageSeq,
|
50
22
|
messages: selectedMessages,
|
51
23
|
title,
|
52
24
|
});
|
53
25
|
}} onLongPress={onLongPress}>
|
54
|
-
<
|
26
|
+
<Text style={styles.titleText} numberOfLines={2}>
|
55
27
|
{title}
|
56
|
-
</
|
57
|
-
<
|
28
|
+
</Text>
|
29
|
+
<View style={styles.content}>
|
58
30
|
{messages.map((message, index) => {
|
59
|
-
return message === 'more' ? (<
|
31
|
+
return message === 'more' ? (<Text key={index} style={styles.itemTextMore}>
|
60
32
|
......
|
61
|
-
</
|
62
|
-
{message.messageFromName + ': ' +
|
63
|
-
</
|
33
|
+
</Text>) : (<Text key={index} style={styles.itemText} numberOfLines={1} ellipsizeMode="middle">
|
34
|
+
{message.messageFromName + ': ' + buildSimpleText(imManager, message.payloadType, message.payload)}
|
35
|
+
</Text>);
|
64
36
|
})}
|
65
|
-
</
|
66
|
-
<
|
67
|
-
<
|
68
|
-
</
|
37
|
+
</View>
|
38
|
+
<View style={styles.line}/>
|
39
|
+
<Text style={styles.footerText}>{t('multipleChatRecord')}</Text>
|
40
|
+
</PayloadWrapper>);
|
69
41
|
});
|
70
|
-
const styles =
|
71
|
-
wrap: Object.assign(Object.assign({ minWidth:
|
42
|
+
const styles = StyleSheet.create({
|
43
|
+
wrap: Object.assign(Object.assign({ minWidth: dp(200), maxWidth: width - 120, padding: dp(12), paddingBottom: dp(6) }, borderStyle), shadowStyle),
|
72
44
|
titleText: {
|
73
45
|
color: '#333',
|
74
|
-
fontSize:
|
75
|
-
lineHeight:
|
46
|
+
fontSize: dp(14),
|
47
|
+
lineHeight: dp(18),
|
76
48
|
},
|
77
49
|
content: {
|
78
|
-
paddingVertical:
|
50
|
+
paddingVertical: dp(5),
|
79
51
|
},
|
80
52
|
item: {
|
81
53
|
justifyContent: 'center',
|
82
54
|
},
|
83
55
|
itemText: {
|
84
56
|
color: '#999',
|
85
|
-
fontSize:
|
57
|
+
fontSize: dp(13),
|
86
58
|
},
|
87
59
|
itemTextMore: {
|
88
60
|
color: '#999',
|
89
|
-
fontSize:
|
61
|
+
fontSize: dp(13),
|
90
62
|
},
|
91
63
|
footerText: {
|
92
64
|
color: '#777',
|
93
|
-
fontSize:
|
65
|
+
fontSize: dp(13),
|
94
66
|
},
|
95
67
|
line: {
|
96
|
-
marginTop:
|
97
|
-
marginBottom:
|
68
|
+
marginTop: dp(5),
|
69
|
+
marginBottom: dp(5),
|
98
70
|
backgroundColor: '#eee',
|
99
71
|
width: '100%',
|
100
|
-
height:
|
72
|
+
height: dp(1),
|
101
73
|
},
|
102
74
|
});
|
103
|
-
|
75
|
+
export default PayloadMultiple;
|
@@ -1,99 +1,71 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
-
}
|
8
|
-
Object.defineProperty(o, k2, desc);
|
9
|
-
}) : (function(o, m, k, k2) {
|
10
|
-
if (k2 === undefined) k2 = k;
|
11
|
-
o[k2] = m[k];
|
12
|
-
}));
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
-
}) : function(o, v) {
|
16
|
-
o["default"] = v;
|
17
|
-
});
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
-
if (mod && mod.__esModule) return mod;
|
20
|
-
var result = {};
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
-
__setModuleDefault(result, mod);
|
23
|
-
return result;
|
24
|
-
};
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
27
|
-
};
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
29
|
-
const useTranslation_1 = __importDefault(require("../../../../hooks/useTranslation"));
|
30
|
-
const im_base_1 = require("@smart-link/im-base");
|
31
|
-
const react_1 = __importStar(require("react"));
|
32
|
-
const react_native_1 = require("react-native");
|
1
|
+
import useTranslation from '../../../../hooks/useTranslation';
|
2
|
+
import { PayloadType } from '@smart-link/im-base';
|
3
|
+
import React, { memo } from 'react';
|
4
|
+
import { View, Text, StyleSheet } from 'react-native';
|
33
5
|
const DetailChange = ({ payload }) => {
|
34
|
-
const { t } = (
|
6
|
+
const { t } = useTranslation();
|
35
7
|
const changeKeys = {
|
36
8
|
noticeChange: 'chatGroupNoticeChange',
|
37
9
|
nameChange: 'chatGroupNameChange',
|
38
10
|
};
|
39
|
-
return <
|
11
|
+
return <Text style={styles.text}>{t(changeKeys[payload.changeKey], payload)}</Text>;
|
40
12
|
};
|
41
13
|
const MemberInvite = ({ payload }) => {
|
42
|
-
const { t } = (
|
43
|
-
return (<
|
14
|
+
const { t } = useTranslation();
|
15
|
+
return (<Text style={styles.text}>
|
44
16
|
{t('chatGroupInviteMember', { userName: payload.inviterName, content: payload.inviteesName.join('、') })}
|
45
|
-
</
|
17
|
+
</Text>);
|
46
18
|
};
|
47
19
|
const MemberRemove = ({ payload }) => {
|
48
|
-
const { t } = (
|
49
|
-
return <
|
20
|
+
const { t } = useTranslation();
|
21
|
+
return <Text style={styles.text}>{t('chatGroupRemoveMember', { content: payload.names.join('、') })}</Text>;
|
50
22
|
};
|
51
23
|
const MemberBeenRemove = ({ payload }) => {
|
52
|
-
const { t } = (
|
53
|
-
return <
|
24
|
+
const { t } = useTranslation();
|
25
|
+
return <Text style={styles.text}>{t('chatGroupBeenRemoveMember')}</Text>;
|
54
26
|
};
|
55
27
|
const MemberLeave = ({ payload }) => {
|
56
|
-
const { t } = (
|
57
|
-
return <
|
28
|
+
const { t } = useTranslation();
|
29
|
+
return <Text style={styles.text}>{t('chatGroupMemberLeave', { userName: payload.userName })}</Text>;
|
58
30
|
};
|
59
31
|
const GroupInviteSwitch = ({ payload }) => {
|
60
|
-
const { t } = (
|
32
|
+
const { t } = useTranslation();
|
61
33
|
console.log('GroupInviteSwitch:');
|
62
|
-
return (<
|
34
|
+
return (<Text style={styles.text}>
|
63
35
|
{t(payload.switchCode === 'on' ? 'groupInviteValidateEnable' : 'groupInviteValidateDisable')}
|
64
|
-
</
|
36
|
+
</Text>);
|
65
37
|
};
|
66
38
|
const PayloadNotify = ({ payload, payloadType }) => {
|
67
39
|
console.log('PayloadNotify: ', payload, payloadType);
|
68
40
|
const { content: text } = payload;
|
69
41
|
let content;
|
70
42
|
switch (payloadType) {
|
71
|
-
case
|
43
|
+
case PayloadType.GROUP_DETAIL_CHANGE:
|
72
44
|
content = <DetailChange payload={payload}/>;
|
73
45
|
break;
|
74
|
-
case
|
46
|
+
case PayloadType.GROUP_MEMBER_INVITE:
|
75
47
|
content = <MemberInvite payload={payload}/>;
|
76
48
|
break;
|
77
|
-
case
|
49
|
+
case PayloadType.GROUP_MEMBER_REMOVE_NOTICE:
|
78
50
|
content = <MemberRemove payload={payload}/>;
|
79
51
|
break;
|
80
|
-
case
|
52
|
+
case PayloadType.GROUP_MEMBER_BEEN_REMOVED:
|
81
53
|
content = <MemberBeenRemove payload={payload}/>;
|
82
54
|
break;
|
83
|
-
case
|
55
|
+
case PayloadType.GROUP_INVITE_VALIDATE_SWITCH:
|
84
56
|
content = <GroupInviteSwitch payload={payload}/>;
|
85
57
|
break;
|
86
|
-
case
|
58
|
+
case PayloadType.GROUP_MEMBER_LEAVE:
|
87
59
|
content = <MemberLeave payload={payload}/>;
|
88
60
|
break;
|
89
61
|
default:
|
90
|
-
content = <
|
62
|
+
content = <Text style={styles.text}>{text}</Text>;
|
91
63
|
break;
|
92
64
|
}
|
93
|
-
return <
|
65
|
+
return <View style={styles.content}>{content}</View>;
|
94
66
|
};
|
95
|
-
const styles =
|
67
|
+
const styles = StyleSheet.create({
|
96
68
|
content: { marginHorizontal: '10%', paddingVertical: 10, alignItems: 'center' },
|
97
69
|
text: { color: '#999', textAlign: 'center' },
|
98
70
|
});
|
99
|
-
|
71
|
+
export default memo(PayloadNotify);
|