@smart-link/rn-im 1.0.23 → 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 +46 -74
- 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 -135
- 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 +4 -8
- 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,39 +1,14 @@
|
|
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
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
26
|
-
const rn_ui_1 = require("@smart-link/rn-ui");
|
27
|
-
const react_1 = __importStar(require("react"));
|
28
|
-
const react_native_1 = require("react-native");
|
29
|
-
const MessageInput = (0, react_1.forwardRef)(({ onChangeText, onKeyPress, style }, ref) => {
|
30
|
-
const inputRef = (0, react_1.useRef)(null);
|
31
|
-
const [text, setText] = (0, react_1.useState)('');
|
32
|
-
const [showSoftInputOnFocus, setShowSoftInputOnFocus] = (0, react_1.useState)(true);
|
33
|
-
const innerText = (0, react_1.useRef)('');
|
34
|
-
const [selection, setSelection] = (0, react_1.useState)({ start: 0, end: 0 });
|
35
|
-
const selectionIos = (0, react_1.useRef)({ start: 0, end: 0 });
|
36
|
-
(0, react_1.useImperativeHandle)(ref, () => ({
|
1
|
+
import { dp } from '@smart-link/rn-ui';
|
2
|
+
import React, { forwardRef, memo, useImperativeHandle, useRef, useState, } from 'react';
|
3
|
+
import { TextInput, View, StyleSheet, Platform } from 'react-native';
|
4
|
+
const MessageInput = forwardRef(({ onChangeText, onKeyPress, style }, ref) => {
|
5
|
+
const inputRef = useRef(null);
|
6
|
+
const [text, setText] = useState('');
|
7
|
+
const [showSoftInputOnFocus, setShowSoftInputOnFocus] = useState(true);
|
8
|
+
const innerText = useRef('');
|
9
|
+
const [selection, setSelection] = useState({ start: 0, end: 0 });
|
10
|
+
const selectionIos = useRef({ start: 0, end: 0 });
|
11
|
+
useImperativeHandle(ref, () => ({
|
37
12
|
isFocused: () => {
|
38
13
|
var _a, _b;
|
39
14
|
return (_b = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.isFocused()) !== null && _b !== void 0 ? _b : false;
|
@@ -75,7 +50,7 @@ const MessageInput = (0, react_1.forwardRef)(({ onChangeText, onKeyPress, style
|
|
75
50
|
start: start + emoji.length,
|
76
51
|
end: start + emoji.length,
|
77
52
|
});
|
78
|
-
if (
|
53
|
+
if (Platform.OS === 'ios') {
|
79
54
|
selectionIos.current = {
|
80
55
|
start: start + emoji.length,
|
81
56
|
end: start + emoji.length,
|
@@ -95,7 +70,7 @@ const MessageInput = (0, react_1.forwardRef)(({ onChangeText, onKeyPress, style
|
|
95
70
|
start: n.length,
|
96
71
|
end: n.length,
|
97
72
|
});
|
98
|
-
if (
|
73
|
+
if (Platform.OS === 'ios') {
|
99
74
|
selectionIos.current = {
|
100
75
|
start: n.length,
|
101
76
|
end: n.length,
|
@@ -163,8 +138,8 @@ const MessageInput = (0, react_1.forwardRef)(({ onChangeText, onKeyPress, style
|
|
163
138
|
}
|
164
139
|
},
|
165
140
|
}), [selection, onChangeText]);
|
166
|
-
return (<
|
167
|
-
<
|
141
|
+
return (<View style={[styles.container, style]}>
|
142
|
+
<TextInput ref={inputRef} selection={Platform.OS === 'android' ? selection : undefined} multiline showSoftInputOnFocus={showSoftInputOnFocus} style={styles.textInput} value={text} onKeyPress={onKeyPress} onChangeText={n => {
|
168
143
|
innerText.current = n;
|
169
144
|
setText(n);
|
170
145
|
onChangeText === null || onChangeText === void 0 ? void 0 : onChangeText(n);
|
@@ -172,32 +147,32 @@ const MessageInput = (0, react_1.forwardRef)(({ onChangeText, onKeyPress, style
|
|
172
147
|
setSelection(nativeEvent.selection);
|
173
148
|
selectionIos.current = nativeEvent.selection;
|
174
149
|
}}/>
|
175
|
-
</
|
150
|
+
</View>);
|
176
151
|
});
|
177
|
-
const styles =
|
152
|
+
const styles = StyleSheet.create({
|
178
153
|
container: {
|
179
154
|
flex: 1,
|
180
155
|
position: 'relative',
|
181
|
-
marginVertical:
|
182
|
-
maxHeight:
|
156
|
+
marginVertical: dp(6),
|
157
|
+
maxHeight: dp(120),
|
183
158
|
},
|
184
159
|
textInput: {
|
185
|
-
borderRadius:
|
160
|
+
borderRadius: dp(4),
|
186
161
|
backgroundColor: '#fff',
|
187
|
-
fontSize:
|
188
|
-
minHeight:
|
189
|
-
ios:
|
190
|
-
android:
|
162
|
+
fontSize: dp(15),
|
163
|
+
minHeight: Platform.select({
|
164
|
+
ios: dp(32),
|
165
|
+
android: dp(28),
|
191
166
|
}),
|
192
|
-
lineHeight:
|
193
|
-
ios:
|
194
|
-
android:
|
167
|
+
lineHeight: Platform.select({
|
168
|
+
ios: dp(20),
|
169
|
+
android: dp(20),
|
195
170
|
}),
|
196
|
-
paddingHorizontal:
|
197
|
-
paddingVertical:
|
171
|
+
paddingHorizontal: dp(5),
|
172
|
+
paddingVertical: Platform.select({
|
198
173
|
ios: 6,
|
199
174
|
android: 4,
|
200
175
|
}),
|
201
176
|
},
|
202
177
|
});
|
203
|
-
|
178
|
+
export default memo(MessageInput);
|
@@ -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,34 +7,30 @@ 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
|
-
|
46
|
-
|
47
|
-
|
48
|
-
const
|
49
|
-
const scroll_1 = require("../../../../utils/scroll");
|
50
|
-
const take_camera_1 = require("../../../../utils/take-camera");
|
51
|
-
const FontAwesome_1 = __importDefault(require("react-native-vector-icons/FontAwesome"));
|
52
|
-
const OPTION_SIZE = (react_native_1.Dimensions.get('screen').width - 20) / 4;
|
10
|
+
import { dp, Toast, useNavigation } from '@smart-link/rn-ui';
|
11
|
+
import * as DocumentPicker from '@react-native-documents/picker';
|
12
|
+
import React, { forwardRef, memo, useImperativeHandle, useState } from 'react';
|
13
|
+
import { View, Text, FlatList, TouchableOpacity, Dimensions, StyleSheet, Animated } from 'react-native';
|
14
|
+
import { useConversation } from '../../../../hooks/useImSelector';
|
15
|
+
import useTranslation from '../../../../hooks/useTranslation';
|
16
|
+
import { getImManager } from '../../../../init';
|
17
|
+
import { FileIcon, PhotosIcon, ShootingIcon, UserIcon } from './Icons';
|
18
|
+
import ImagePicker from 'react-native-image-crop-picker';
|
19
|
+
import { startSendContact } from '../../../../slice/contact/contact.slice';
|
20
|
+
import { copyFile, getExtensionFromMime } from '../../../../utils/file';
|
21
|
+
import { scrollToBottom } from '../../../../utils/scroll';
|
22
|
+
import { takeCamera } from '../../../../utils/take-camera';
|
23
|
+
import FontAwesome from "react-native-vector-icons/FontAwesome";
|
24
|
+
const OPTION_SIZE = (Dimensions.get('screen').width - 20) / 4;
|
53
25
|
const keyExtractor = (item) => item.id;
|
54
|
-
const OptionPanel =
|
55
|
-
const navigation =
|
56
|
-
const [visible, setVisible] =
|
57
|
-
const { currentConversation } =
|
58
|
-
const [heightAnim] =
|
59
|
-
const { t } = (
|
60
|
-
const imManager =
|
61
|
-
|
26
|
+
const OptionPanel = forwardRef((props, ref) => {
|
27
|
+
const navigation = useNavigation();
|
28
|
+
const [visible, setVisible] = useState(false);
|
29
|
+
const { currentConversation } = useConversation();
|
30
|
+
const [heightAnim] = useState(new Animated.Value(0));
|
31
|
+
const { t } = useTranslation();
|
32
|
+
const imManager = getImManager();
|
33
|
+
useImperativeHandle(ref, () => ({
|
62
34
|
getVisible: () => visible,
|
63
35
|
show: height => {
|
64
36
|
heightAnim.setValue(height);
|
@@ -70,21 +42,21 @@ const OptionPanel = (0, react_1.forwardRef)((props, ref) => {
|
|
70
42
|
},
|
71
43
|
}), [visible]);
|
72
44
|
const sendPicture = (data) => __awaiter(void 0, void 0, void 0, function* () {
|
73
|
-
|
74
|
-
yield
|
45
|
+
scrollToBottom();
|
46
|
+
yield getImManager().sendPictureMessage(Object.assign({}, currentConversation), data);
|
75
47
|
});
|
76
48
|
const sendVideo = (data) => __awaiter(void 0, void 0, void 0, function* () {
|
77
|
-
|
78
|
-
yield
|
49
|
+
scrollToBottom();
|
50
|
+
yield getImManager().sendVideoMessage(Object.assign({}, currentConversation), data);
|
79
51
|
});
|
80
52
|
const sendFile = (data) => __awaiter(void 0, void 0, void 0, function* () {
|
81
|
-
|
82
|
-
const destPath = yield
|
83
|
-
yield
|
53
|
+
scrollToBottom();
|
54
|
+
const destPath = yield copyFile(data.localPath, data.filename, 'file');
|
55
|
+
yield getImManager().sendFileMessage(Object.assign({}, currentConversation), Object.assign(Object.assign({}, data), { localPath: destPath }));
|
84
56
|
});
|
85
57
|
const openAlbum = () => __awaiter(void 0, void 0, void 0, function* () {
|
86
58
|
try {
|
87
|
-
const images = yield
|
59
|
+
const images = yield ImagePicker.openPicker({
|
88
60
|
mediaType: 'photo',
|
89
61
|
multiple: true,
|
90
62
|
compressImageQuality: 0.7,
|
@@ -109,7 +81,7 @@ const OptionPanel = (0, react_1.forwardRef)((props, ref) => {
|
|
109
81
|
});
|
110
82
|
const openCamera = () => __awaiter(void 0, void 0, void 0, function* () {
|
111
83
|
try {
|
112
|
-
yield
|
84
|
+
yield takeCamera(currentConversation);
|
113
85
|
}
|
114
86
|
catch (e) {
|
115
87
|
console.log(e);
|
@@ -123,12 +95,12 @@ const OptionPanel = (0, react_1.forwardRef)((props, ref) => {
|
|
123
95
|
const fileInfo = files[0];
|
124
96
|
console.log('chooseFile: ', fileInfo);
|
125
97
|
if (!fileInfo.uri) {
|
126
|
-
|
98
|
+
Toast.error(t("failedToObtainFilePath"));
|
127
99
|
return;
|
128
100
|
}
|
129
|
-
const ext =
|
101
|
+
const ext = getExtensionFromMime(fileInfo.type);
|
130
102
|
if (!ext) {
|
131
|
-
|
103
|
+
Toast.error(t("unsupportedFileTypes"));
|
132
104
|
return;
|
133
105
|
}
|
134
106
|
if (!fileInfo.name.endsWith(ext)) {
|
@@ -150,13 +122,13 @@ const OptionPanel = (0, react_1.forwardRef)((props, ref) => {
|
|
150
122
|
const options = [
|
151
123
|
{
|
152
124
|
id: 'picture-o',
|
153
|
-
icon: <
|
125
|
+
icon: <PhotosIcon size={30}/>,
|
154
126
|
text: t('imgOrDoc'),
|
155
127
|
onPress: openAlbum,
|
156
128
|
},
|
157
129
|
{
|
158
130
|
id: 'camera',
|
159
|
-
icon: <
|
131
|
+
icon: <ShootingIcon size={40}/>,
|
160
132
|
text: t('camera'),
|
161
133
|
onPress: openCamera,
|
162
134
|
},
|
@@ -176,13 +148,13 @@ const OptionPanel = (0, react_1.forwardRef)((props, ref) => {
|
|
176
148
|
// },
|
177
149
|
{
|
178
150
|
id: 'file',
|
179
|
-
icon: <
|
151
|
+
icon: <FileIcon size={40}/>,
|
180
152
|
text: t('file'),
|
181
153
|
onPress: pickFile,
|
182
154
|
},
|
183
155
|
{
|
184
156
|
id: 'star',
|
185
|
-
icon: <
|
157
|
+
icon: <FontAwesome name="star" color="#000" size={32}/>,
|
186
158
|
text: t('collect'),
|
187
159
|
onPress: () => {
|
188
160
|
navigation.navigate('Collection');
|
@@ -190,33 +162,33 @@ const OptionPanel = (0, react_1.forwardRef)((props, ref) => {
|
|
190
162
|
},
|
191
163
|
{
|
192
164
|
id: 'user',
|
193
|
-
icon: <
|
165
|
+
icon: <UserIcon size={34}/>,
|
194
166
|
text: t('contact'),
|
195
167
|
onPress: () => {
|
196
|
-
|
168
|
+
getImManager().store.dispatch(startSendContact());
|
197
169
|
navigation.navigate('ChooseContact', { checkMode: 'single' });
|
198
170
|
},
|
199
171
|
},
|
200
172
|
];
|
201
|
-
const renderItem = ({ item }) => (<
|
202
|
-
<
|
203
|
-
<
|
204
|
-
</
|
205
|
-
return (<
|
173
|
+
const renderItem = ({ item }) => (<TouchableOpacity style={style.item} onPress={item.onPress}>
|
174
|
+
<View style={style.icon}>{item.icon}</View>
|
175
|
+
<Text style={style.text}>{item.text}</Text>
|
176
|
+
</TouchableOpacity>);
|
177
|
+
return (<Animated.View style={{
|
206
178
|
height: heightAnim,
|
207
179
|
position: 'relative',
|
208
180
|
paddingBottom: visible ? 20 : 0,
|
209
181
|
}} pointerEvents="auto">
|
210
|
-
<
|
182
|
+
<FlatList numColumns={4} initialNumToRender={8} data={options} style={{
|
211
183
|
flex: 1,
|
212
184
|
}}
|
213
185
|
// @ts-ignore
|
214
186
|
keyExtractor={keyExtractor} contentContainerStyle={{
|
215
187
|
paddingHorizontal: 10,
|
216
188
|
}} pointerEvents="auto" keyboardShouldPersistTaps={'handled'} renderItem={renderItem} scrollEnabled/>
|
217
|
-
</
|
189
|
+
</Animated.View>);
|
218
190
|
});
|
219
|
-
const style =
|
191
|
+
const style = StyleSheet.create({
|
220
192
|
item: {
|
221
193
|
width: OPTION_SIZE,
|
222
194
|
height: OPTION_SIZE + 5,
|
@@ -227,15 +199,15 @@ const style = react_native_1.StyleSheet.create({
|
|
227
199
|
display: 'flex',
|
228
200
|
alignItems: 'center',
|
229
201
|
justifyContent: 'center',
|
230
|
-
width:
|
231
|
-
height:
|
202
|
+
width: dp(60),
|
203
|
+
height: dp(60),
|
232
204
|
marginBottom: 5,
|
233
205
|
backgroundColor: '#fff',
|
234
|
-
borderRadius:
|
206
|
+
borderRadius: dp(10),
|
235
207
|
},
|
236
208
|
text: {
|
237
|
-
fontSize:
|
209
|
+
fontSize: dp(14),
|
238
210
|
color: '#333',
|
239
211
|
},
|
240
212
|
});
|
241
|
-
|
213
|
+
export default memo(OptionPanel);
|