@smart-link/rn-im 1.0.1

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.
Files changed (302) hide show
  1. package/README.md +34 -0
  2. package/assets/avatars-busi-notify.png +0 -0
  3. package/assets/avatars-empty.png +0 -0
  4. package/assets/avatars-group.jpg +0 -0
  5. package/assets/avatars-man.jpg +0 -0
  6. package/assets/avatars-woman.jpg +0 -0
  7. package/assets/cloud-backup-begin.png +0 -0
  8. package/assets/cloud-backup.png +0 -0
  9. package/assets/group-mgr.png +0 -0
  10. package/assets/group-owner.png +0 -0
  11. package/assets/hook-black-double.png +0 -0
  12. package/assets/hook-black.png +0 -0
  13. package/assets/hook-blue-double.png +0 -0
  14. package/assets/hook-blue.png +0 -0
  15. package/assets/hook-green.png +0 -0
  16. package/assets/no_message.png +0 -0
  17. package/assets/share.jpeg +0 -0
  18. package/assets/voice-left-playing.gif +0 -0
  19. package/assets/voice-left.png +0 -0
  20. package/dist/api/addressList.d.ts +27 -0
  21. package/dist/api/addressList.js +18 -0
  22. package/dist/api/backup.d.ts +18 -0
  23. package/dist/api/backup.js +29 -0
  24. package/dist/api/file.d.ts +4 -0
  25. package/dist/api/file.js +49 -0
  26. package/dist/api/user.d.ts +8 -0
  27. package/dist/api/user.js +16 -0
  28. package/dist/components/CachedImage.d.ts +11 -0
  29. package/dist/components/CachedImage.js +48 -0
  30. package/dist/components/Camera/Camera.d.ts +10 -0
  31. package/dist/components/Camera/Camera.js +100 -0
  32. package/dist/components/Camera/CameraCapture.d.ts +32 -0
  33. package/dist/components/Camera/CameraCapture.js +360 -0
  34. package/dist/components/Camera/CameraResult.d.ts +11 -0
  35. package/dist/components/Camera/CameraResult.js +102 -0
  36. package/dist/components/ChatAvatar/ChatAvatar.d.ts +15 -0
  37. package/dist/components/ChatAvatar/ChatAvatar.js +134 -0
  38. package/dist/components/ChatAvatar/ChatAvatarId.d.ts +8 -0
  39. package/dist/components/ChatAvatar/ChatAvatarId.js +92 -0
  40. package/dist/components/ChatAvatar/ChatAvatarLocal.d.ts +9 -0
  41. package/dist/components/ChatAvatar/ChatAvatarLocal.js +76 -0
  42. package/dist/components/ChatAvatar/index.d.ts +2 -0
  43. package/dist/components/ChatAvatar/index.js +23 -0
  44. package/dist/components/Favicon.d.ts +7 -0
  45. package/dist/components/Favicon.js +74 -0
  46. package/dist/components/FormatTimeText.d.ts +8 -0
  47. package/dist/components/FormatTimeText.js +24 -0
  48. package/dist/components/Highlighter.d.ts +9 -0
  49. package/dist/components/Highlighter.js +42 -0
  50. package/dist/components/IndicatorText.d.ts +10 -0
  51. package/dist/components/IndicatorText.js +47 -0
  52. package/dist/components/LocalImage.d.ts +10 -0
  53. package/dist/components/LocalImage.js +37 -0
  54. package/dist/components/NetworkUnconnected.d.ts +3 -0
  55. package/dist/components/NetworkUnconnected.js +55 -0
  56. package/dist/components/PopoverWrapper.d.ts +13 -0
  57. package/dist/components/PopoverWrapper.js +78 -0
  58. package/dist/components/VideoPlayer.d.ts +13 -0
  59. package/dist/components/VideoPlayer.js +288 -0
  60. package/dist/components/styles.d.ts +19 -0
  61. package/dist/components/styles.js +23 -0
  62. package/dist/default-assets.d.ts +18 -0
  63. package/dist/default-assets.js +22 -0
  64. package/dist/hooks/useFormatMsgTime.d.ts +4 -0
  65. package/dist/hooks/useFormatMsgTime.js +53 -0
  66. package/dist/hooks/useImSelector.d.ts +15 -0
  67. package/dist/hooks/useImSelector.js +48 -0
  68. package/dist/hooks/useTranslation.d.ts +13 -0
  69. package/dist/hooks/useTranslation.js +12 -0
  70. package/dist/index.d.ts +7 -0
  71. package/dist/index.js +28 -0
  72. package/dist/init.d.ts +17 -0
  73. package/dist/init.js +116 -0
  74. package/dist/interface.d.ts +47 -0
  75. package/dist/interface.js +2 -0
  76. package/dist/locales/en/addressList.d.ts +3 -0
  77. package/dist/locales/en/addressList.js +31 -0
  78. package/dist/locales/index.d.ts +4 -0
  79. package/dist/locales/index.js +27 -0
  80. package/dist/locales/lao/addressList.d.ts +3 -0
  81. package/dist/locales/lao/addressList.js +31 -0
  82. package/dist/locales/zh/addressList.d.ts +30 -0
  83. package/dist/locales/zh/addressList.js +32 -0
  84. package/dist/pages/address-list/AddressList.d.ts +6 -0
  85. package/dist/pages/address-list/AddressList.js +158 -0
  86. package/dist/pages/address-list/CardInfo.d.ts +15 -0
  87. package/dist/pages/address-list/CardInfo.js +42 -0
  88. package/dist/pages/address-list/ChooseContact.d.ts +6 -0
  89. package/dist/pages/address-list/ChooseContact.js +197 -0
  90. package/dist/pages/address-list/Icons.d.ts +5 -0
  91. package/dist/pages/address-list/Icons.js +16 -0
  92. package/dist/pages/address-list/Organization.d.ts +13 -0
  93. package/dist/pages/address-list/Organization.js +221 -0
  94. package/dist/pages/address-list/UserDetail.d.ts +6 -0
  95. package/dist/pages/address-list/UserDetail.js +131 -0
  96. package/dist/pages/address-list/UserJobs.d.ts +6 -0
  97. package/dist/pages/address-list/UserJobs.js +50 -0
  98. package/dist/pages/address-list/UserSearch.d.ts +6 -0
  99. package/dist/pages/address-list/UserSearch.js +82 -0
  100. package/dist/pages/address-list/addressList.routes.d.ts +50 -0
  101. package/dist/pages/address-list/addressList.routes.js +50 -0
  102. package/dist/pages/collection/Collection.d.ts +3 -0
  103. package/dist/pages/collection/Collection.js +136 -0
  104. package/dist/pages/collection/ContentFactory.d.ts +6 -0
  105. package/dist/pages/collection/ContentFactory.js +167 -0
  106. package/dist/pages/collection/collection.routes.d.ts +9 -0
  107. package/dist/pages/collection/collection.routes.js +17 -0
  108. package/dist/pages/conversation/ForwardToConversation.d.ts +6 -0
  109. package/dist/pages/conversation/ForwardToConversation.js +172 -0
  110. package/dist/pages/conversation/List.d.ts +6 -0
  111. package/dist/pages/conversation/List.js +204 -0
  112. package/dist/pages/conversation/components/ConversationCard.d.ts +12 -0
  113. package/dist/pages/conversation/components/ConversationCard.js +142 -0
  114. package/dist/pages/conversation/components/ConversationOption.d.ts +11 -0
  115. package/dist/pages/conversation/components/ConversationOption.js +99 -0
  116. package/dist/pages/conversation/conversation.routes.d.ts +2 -0
  117. package/dist/pages/conversation/conversation.routes.js +74 -0
  118. package/dist/pages/conversation/setting/GroupTransfer.d.ts +6 -0
  119. package/dist/pages/conversation/setting/GroupTransfer.js +88 -0
  120. package/dist/pages/conversation/setting/OptionAvatars.d.ts +22 -0
  121. package/dist/pages/conversation/setting/OptionAvatars.js +152 -0
  122. package/dist/pages/conversation/setting/OptionCancelGroup.d.ts +6 -0
  123. package/dist/pages/conversation/setting/OptionCancelGroup.js +49 -0
  124. package/dist/pages/conversation/setting/OptionConversation.d.ts +19 -0
  125. package/dist/pages/conversation/setting/OptionConversation.js +71 -0
  126. package/dist/pages/conversation/setting/OptionGroup.d.ts +17 -0
  127. package/dist/pages/conversation/setting/OptionGroup.js +76 -0
  128. package/dist/pages/conversation/setting/OptionGroupManage.d.ts +6 -0
  129. package/dist/pages/conversation/setting/OptionGroupManage.js +68 -0
  130. package/dist/pages/conversation/setting/OptionGroupMoreMember.d.ts +4 -0
  131. package/dist/pages/conversation/setting/OptionGroupMoreMember.js +124 -0
  132. package/dist/pages/conversation/setting/OptionGroupNameOrNoticeEdit.d.ts +6 -0
  133. package/dist/pages/conversation/setting/OptionGroupNameOrNoticeEdit.js +149 -0
  134. package/dist/pages/conversation/setting/Setting.d.ts +6 -0
  135. package/dist/pages/conversation/setting/Setting.js +184 -0
  136. package/dist/pages/conversation/setting/SettingChatBg.d.ts +6 -0
  137. package/dist/pages/conversation/setting/SettingChatBg.js +95 -0
  138. package/dist/pages/index.d.ts +8 -0
  139. package/dist/pages/index.js +27 -0
  140. package/dist/pages/message/ChooseMember.d.ts +6 -0
  141. package/dist/pages/message/ChooseMember.js +185 -0
  142. package/dist/pages/message/MessageBackup/Bar.d.ts +8 -0
  143. package/dist/pages/message/MessageBackup/Bar.js +77 -0
  144. package/dist/pages/message/MessageBackup/MessageBackup.d.ts +10 -0
  145. package/dist/pages/message/MessageBackup/MessageBackup.js +133 -0
  146. package/dist/pages/message/MessageBackup/RestoreBackupPage.d.ts +6 -0
  147. package/dist/pages/message/MessageBackup/RestoreBackupPage.js +135 -0
  148. package/dist/pages/message/MessageBackup/StartBackupPage.d.ts +6 -0
  149. package/dist/pages/message/MessageBackup/StartBackupPage.js +135 -0
  150. package/dist/pages/message/MessageBackup/index.d.ts +3 -0
  151. package/dist/pages/message/MessageBackup/index.js +12 -0
  152. package/dist/pages/message/MessageBackup/utils.d.ts +46 -0
  153. package/dist/pages/message/MessageBackup/utils.js +239 -0
  154. package/dist/pages/message/MessageList.d.ts +6 -0
  155. package/dist/pages/message/MessageList.js +175 -0
  156. package/dist/pages/message/MessageRecord.d.ts +6 -0
  157. package/dist/pages/message/MessageRecord.js +97 -0
  158. package/dist/pages/message/components/BusiNotifyCard.d.ts +6 -0
  159. package/dist/pages/message/components/BusiNotifyCard.js +132 -0
  160. package/dist/pages/message/components/ChatBg.d.ts +7 -0
  161. package/dist/pages/message/components/ChatBg.js +65 -0
  162. package/dist/pages/message/components/MessageItem.d.ts +16 -0
  163. package/dist/pages/message/components/MessageItem.js +205 -0
  164. package/dist/pages/message/components/MessageItemQuote.d.ts +7 -0
  165. package/dist/pages/message/components/MessageItemQuote.js +83 -0
  166. package/dist/pages/message/components/MessageItemTips.d.ts +9 -0
  167. package/dist/pages/message/components/MessageItemTips.js +67 -0
  168. package/dist/pages/message/components/MessageOption.d.ts +11 -0
  169. package/dist/pages/message/components/MessageOption.js +360 -0
  170. package/dist/pages/message/components/MessagePayload.d.ts +14 -0
  171. package/dist/pages/message/components/MessagePayload.js +96 -0
  172. package/dist/pages/message/components/MessagePictureAlbum.d.ts +10 -0
  173. package/dist/pages/message/components/MessagePictureAlbum.js +105 -0
  174. package/dist/pages/message/components/MessageReceiptStatus.d.ts +6 -0
  175. package/dist/pages/message/components/MessageReceiptStatus.js +61 -0
  176. package/dist/pages/message/components/MessageUndo.d.ts +10 -0
  177. package/dist/pages/message/components/MessageUndo.js +75 -0
  178. package/dist/pages/message/components/MultipleBar/index.d.ts +5 -0
  179. package/dist/pages/message/components/MultipleBar/index.js +116 -0
  180. package/dist/pages/message/components/Payload/PayloadContact.d.ts +4 -0
  181. package/dist/pages/message/components/Payload/PayloadContact.js +86 -0
  182. package/dist/pages/message/components/Payload/PayloadFile.d.ts +4 -0
  183. package/dist/pages/message/components/Payload/PayloadFile.js +115 -0
  184. package/dist/pages/message/components/Payload/PayloadMultiple.d.ts +4 -0
  185. package/dist/pages/message/components/Payload/PayloadMultiple.js +102 -0
  186. package/dist/pages/message/components/Payload/PayloadNotify.d.ts +9 -0
  187. package/dist/pages/message/components/Payload/PayloadNotify.js +92 -0
  188. package/dist/pages/message/components/Payload/PayloadPicture.d.ts +7 -0
  189. package/dist/pages/message/components/Payload/PayloadPicture.js +69 -0
  190. package/dist/pages/message/components/Payload/PayloadShare.d.ts +4 -0
  191. package/dist/pages/message/components/Payload/PayloadShare.js +100 -0
  192. package/dist/pages/message/components/Payload/PayloadText.d.ts +4 -0
  193. package/dist/pages/message/components/Payload/PayloadText.js +128 -0
  194. package/dist/pages/message/components/Payload/PayloadVideo.d.ts +4 -0
  195. package/dist/pages/message/components/Payload/PayloadVideo.js +78 -0
  196. package/dist/pages/message/components/Payload/PayloadVoice.d.ts +6 -0
  197. package/dist/pages/message/components/Payload/PayloadVoice.js +155 -0
  198. package/dist/pages/message/components/Payload/PayloadWrapper.d.ts +12 -0
  199. package/dist/pages/message/components/Payload/PayloadWrapper.js +73 -0
  200. package/dist/pages/message/components/Payload/type.d.ts +9 -0
  201. package/dist/pages/message/components/Payload/type.js +2 -0
  202. package/dist/pages/message/components/ReceiptBack.d.ts +7 -0
  203. package/dist/pages/message/components/ReceiptBack.js +82 -0
  204. package/dist/pages/message/components/TextMixMessage.d.ts +9 -0
  205. package/dist/pages/message/components/TextMixMessage.js +62 -0
  206. package/dist/pages/message/components/TextMixQuote.d.ts +61 -0
  207. package/dist/pages/message/components/TextMixQuote.js +276 -0
  208. package/dist/pages/message/components/TextMixQuoteMessage.d.ts +14 -0
  209. package/dist/pages/message/components/TextMixQuoteMessage.js +74 -0
  210. package/dist/pages/message/components/UploadProgress.d.ts +9 -0
  211. package/dist/pages/message/components/UploadProgress.js +51 -0
  212. package/dist/pages/message/components/messageBar/EmojiPanel.d.ts +11 -0
  213. package/dist/pages/message/components/messageBar/EmojiPanel.js +101 -0
  214. package/dist/pages/message/components/messageBar/Icons.d.ts +18 -0
  215. package/dist/pages/message/components/messageBar/Icons.js +88 -0
  216. package/dist/pages/message/components/messageBar/MessageBar.d.ts +12 -0
  217. package/dist/pages/message/components/messageBar/MessageBar.js +273 -0
  218. package/dist/pages/message/components/messageBar/MessageInput.d.ts +21 -0
  219. package/dist/pages/message/components/messageBar/MessageInput.js +203 -0
  220. package/dist/pages/message/components/messageBar/OptionPanel.d.ts +8 -0
  221. package/dist/pages/message/components/messageBar/OptionPanel.js +240 -0
  222. package/dist/pages/message/components/messageBar/VoiceBar.d.ts +3 -0
  223. package/dist/pages/message/components/messageBar/VoiceBar.js +272 -0
  224. package/dist/pages/message/components/messageBar/index.d.ts +2 -0
  225. package/dist/pages/message/components/messageBar/index.js +23 -0
  226. package/dist/pages/message/message.routes.d.ts +2 -0
  227. package/dist/pages/message/message.routes.js +79 -0
  228. package/dist/pages/search/Search.d.ts +6 -0
  229. package/dist/pages/search/Search.js +84 -0
  230. package/dist/pages/search/SearchChatRecords.d.ts +3 -0
  231. package/dist/pages/search/SearchChatRecords.js +173 -0
  232. package/dist/pages/search/SearchFile.d.ts +3 -0
  233. package/dist/pages/search/SearchFile.js +202 -0
  234. package/dist/pages/search/SearchManager.d.ts +6 -0
  235. package/dist/pages/search/SearchManager.js +111 -0
  236. package/dist/pages/search/SearchPicturePage.d.ts +6 -0
  237. package/dist/pages/search/SearchPicturePage.js +56 -0
  238. package/dist/pages/search/components/ChatRecords.d.ts +6 -0
  239. package/dist/pages/search/components/ChatRecords.js +151 -0
  240. package/dist/pages/search/components/MyGroupChat.d.ts +6 -0
  241. package/dist/pages/search/components/MyGroupChat.js +128 -0
  242. package/dist/pages/search/components/PictureMulipleBar.d.ts +10 -0
  243. package/dist/pages/search/components/PictureMulipleBar.js +105 -0
  244. package/dist/pages/search/components/SearchFileList.d.ts +7 -0
  245. package/dist/pages/search/components/SearchFileList.js +173 -0
  246. package/dist/pages/search/components/SearchPictures.d.ts +8 -0
  247. package/dist/pages/search/components/SearchPictures.js +220 -0
  248. package/dist/pages/search/components/SearchShareLinkList.d.ts +7 -0
  249. package/dist/pages/search/components/SearchShareLinkList.js +112 -0
  250. package/dist/pages/search/components/SearchUser.d.ts +6 -0
  251. package/dist/pages/search/components/SearchUser.js +83 -0
  252. package/dist/pages/search/components/useSearchMessage.d.ts +11 -0
  253. package/dist/pages/search/components/useSearchMessage.js +68 -0
  254. package/dist/pages/search/search.routes.d.ts +2 -0
  255. package/dist/pages/search/search.routes.js +48 -0
  256. package/dist/pages/search/utils.d.ts +12 -0
  257. package/dist/pages/search/utils.js +42 -0
  258. package/dist/pages/types.d.ts +70 -0
  259. package/dist/pages/types.js +2 -0
  260. package/dist/slice/contact/contact.action.d.ts +1 -0
  261. package/dist/slice/contact/contact.action.js +2 -0
  262. package/dist/slice/contact/contact.slice.d.ts +12 -0
  263. package/dist/slice/contact/contact.slice.js +60 -0
  264. package/dist/slice/index.d.ts +9 -0
  265. package/dist/slice/index.js +15 -0
  266. package/dist/slice/panel/panel.slice.d.ts +8 -0
  267. package/dist/slice/panel/panel.slice.js +19 -0
  268. package/dist/slice/video/video.action.d.ts +5 -0
  269. package/dist/slice/video/video.action.js +65 -0
  270. package/dist/slice/video/video.slice.d.ts +17 -0
  271. package/dist/slice/video/video.slice.js +40 -0
  272. package/dist/utils/color.d.ts +1 -0
  273. package/dist/utils/color.js +9 -0
  274. package/dist/utils/common-action-sheet.d.ts +8 -0
  275. package/dist/utils/common-action-sheet.js +45 -0
  276. package/dist/utils/cookie.d.ts +1 -0
  277. package/dist/utils/cookie.js +29 -0
  278. package/dist/utils/emoji.d.ts +9 -0
  279. package/dist/utils/emoji.js +627 -0
  280. package/dist/utils/file-icon.d.ts +7 -0
  281. package/dist/utils/file-icon.js +80 -0
  282. package/dist/utils/file-operate.d.ts +1 -0
  283. package/dist/utils/file-operate.js +4 -0
  284. package/dist/utils/file.d.ts +23 -0
  285. package/dist/utils/file.js +255 -0
  286. package/dist/utils/golden-rectangle.d.ts +4 -0
  287. package/dist/utils/golden-rectangle.js +34 -0
  288. package/dist/utils/phone.d.ts +2 -0
  289. package/dist/utils/phone.js +24 -0
  290. package/dist/utils/request.d.ts +34 -0
  291. package/dist/utils/request.js +67 -0
  292. package/dist/utils/scroll.d.ts +1 -0
  293. package/dist/utils/scroll.js +12 -0
  294. package/dist/utils/summary.d.ts +2 -0
  295. package/dist/utils/summary.js +42 -0
  296. package/dist/utils/take-camera.d.ts +2 -0
  297. package/dist/utils/take-camera.js +41 -0
  298. package/dist/utils/text-mix.d.ts +9 -0
  299. package/dist/utils/text-mix.js +82 -0
  300. package/dist/utils/upload.d.ts +5 -0
  301. package/dist/utils/upload.js +80 -0
  302. package/package.json +79 -0
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // import {NativeModules, PermissionsAndroid, Platform} from "react-native";
3
+ // import CameraRoll from '@react-native-community/cameraroll';
4
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,23 @@
1
+ import { IUser, IDownloadOptions, ImManager, ResourceType } from '@smart-link/im-base';
2
+ declare const resourceDirBase: {
3
+ readonly avatars: "/avatars";
4
+ readonly voice: "/voice";
5
+ readonly picture: "/picture";
6
+ readonly video: "/video";
7
+ readonly file: "/file";
8
+ readonly background: "/background";
9
+ };
10
+ type ResourceDir = keyof typeof resourceDirBase;
11
+ export declare function initDir(user: IUser): Promise<void>;
12
+ export declare const getResourcePath: (fileName: string, resourceType: ResourceType) => string;
13
+ export declare function toAbsolutePath(filePath: string): string;
14
+ export declare function toRelativePath(filePath: string): string;
15
+ export declare const numberToFileSize: (number: number) => string;
16
+ export declare const moveFile: (filePath: string, filename: string, resourceType: ResourceDir) => Promise<string>;
17
+ export declare const copyFile: (localPath: string, filename: string, resourceType?: ResourceDir) => Promise<string>;
18
+ export declare const getSuffix: (filename: string) => string;
19
+ export declare const download: ({ fileId, fileSize, resourceType, filename, onProgress }: IDownloadOptions) => Promise<string>;
20
+ export declare function saveToAlbum(imManager: ImManager, localPath: string, showTips?: boolean): Promise<boolean>;
21
+ export declare function requestSaveFilePermissionIfAndroid(imManager: ImManager): Promise<boolean>;
22
+ export declare function getExtensionFromMime(mime: string): string;
23
+ export {};
@@ -0,0 +1,255 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.getExtensionFromMime = exports.requestSaveFilePermissionIfAndroid = exports.saveToAlbum = exports.download = exports.getSuffix = exports.copyFile = exports.moveFile = exports.numberToFileSize = exports.toRelativePath = exports.toAbsolutePath = exports.getResourcePath = exports.initDir = void 0;
16
+ const react_native_fs_1 = __importDefault(require("react-native-fs"));
17
+ const camera_roll_1 = require("@react-native-camera-roll/camera-roll");
18
+ const cookie_1 = require("./cookie");
19
+ const file_1 = require("../api/file");
20
+ const react_native_compressor_1 = require("react-native-compressor");
21
+ const react_native_1 = require("react-native");
22
+ const documentPath = react_native_fs_1.default.DocumentDirectoryPath;
23
+ const resourceDirBase = {
24
+ avatars: '/avatars',
25
+ voice: '/voice',
26
+ picture: '/picture',
27
+ video: '/video',
28
+ file: '/file',
29
+ background: '/background',
30
+ };
31
+ const resourceDir = {};
32
+ let userPath = '';
33
+ function initDir(user) {
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ userPath = documentPath + '/' + user.userId;
36
+ const tasks = Object.keys(resourceDirBase).reduce((task, currentValue) => {
37
+ resourceDir[currentValue] = '/' + user.userId + resourceDirBase[currentValue];
38
+ task.push(react_native_fs_1.default.mkdir(documentPath + resourceDir[currentValue]));
39
+ return task;
40
+ }, []);
41
+ yield Promise.all(tasks);
42
+ console.log('initDir success');
43
+ });
44
+ }
45
+ exports.initDir = initDir;
46
+ const getResourcePath = (fileName, resourceType) => {
47
+ return `${userPath}/${resourceDirBase[resourceType]}/${fileName}`;
48
+ };
49
+ exports.getResourcePath = getResourcePath;
50
+ function toAbsolutePath(filePath) {
51
+ if (filePath.startsWith('Documents')) {
52
+ return filePath;
53
+ }
54
+ if (filePath.startsWith('file://')) {
55
+ return filePath;
56
+ }
57
+ return 'file://' + filePath;
58
+ }
59
+ exports.toAbsolutePath = toAbsolutePath;
60
+ function toRelativePath(filePath) {
61
+ if (filePath.startsWith(documentPath)) {
62
+ return filePath.slice(documentPath.length);
63
+ }
64
+ return filePath;
65
+ }
66
+ exports.toRelativePath = toRelativePath;
67
+ const numberToFileSize = (number) => {
68
+ let size = Number(number);
69
+ const unit = ['B', 'KB', 'MB', 'GB', 'TB'];
70
+ let count = 0;
71
+ while (size > 1024) {
72
+ count++;
73
+ size = size / 1024;
74
+ }
75
+ return size.toFixed(2) + unit[count];
76
+ };
77
+ exports.numberToFileSize = numberToFileSize;
78
+ const moveFile = (filePath, filename, resourceType) => __awaiter(void 0, void 0, void 0, function* () {
79
+ const relativePath = resourceDir[resourceType] + "/" + filename;
80
+ const destPath = documentPath + relativePath;
81
+ if (yield react_native_fs_1.default.exists(destPath)) {
82
+ return destPath;
83
+ }
84
+ yield react_native_fs_1.default.moveFile(filePath, destPath);
85
+ return destPath;
86
+ });
87
+ exports.moveFile = moveFile;
88
+ const copyFile = (localPath, filename, resourceType) => __awaiter(void 0, void 0, void 0, function* () {
89
+ let destPath = documentPath + '/' + (0, react_native_compressor_1.uuidv4)() + (0, exports.getSuffix)(filename);
90
+ if (resourceType) {
91
+ destPath = documentPath + resourceDir[resourceType] + "/" + filename;
92
+ }
93
+ yield react_native_fs_1.default.copyFile(localPath, destPath);
94
+ return destPath;
95
+ });
96
+ exports.copyFile = copyFile;
97
+ const getSuffix = (filename) => {
98
+ const index = filename.lastIndexOf('.');
99
+ return filename.substring(index);
100
+ };
101
+ exports.getSuffix = getSuffix;
102
+ const download = ({ fileId, fileSize, resourceType, filename, onProgress }) => __awaiter(void 0, void 0, void 0, function* () {
103
+ const cookie = yield (0, cookie_1.getCookieString)();
104
+ const fileUrl = (0, file_1.getDownloadUrl)(fileId);
105
+ console.log('download url: ', fileUrl);
106
+ if (react_native_1.Platform.OS === 'android') {
107
+ const destPath = react_native_fs_1.default.DocumentDirectoryPath + resourceDir[resourceType] + '/' + fileId + (0, exports.getSuffix)(filename);
108
+ const { jobId, promise } = react_native_fs_1.default.downloadFile({
109
+ fromUrl: fileUrl,
110
+ toFile: destPath,
111
+ headers: {
112
+ 'Cookie': cookie,
113
+ },
114
+ // 设置 background 为 false,确保 progress 回调能够正常触发
115
+ background: true,
116
+ progress: (e) => {
117
+ console.log('download progress: ', e);
118
+ onProgress === null || onProgress === void 0 ? void 0 : onProgress({ loaded: e.bytesWritten, total: e.contentLength });
119
+ }
120
+ });
121
+ try {
122
+ yield promise;
123
+ console.log('下载完成');
124
+ return destPath;
125
+ }
126
+ catch (error) {
127
+ console.error('下载失败:', error);
128
+ throw error;
129
+ }
130
+ }
131
+ else {
132
+ const resp = yield fetch(fileUrl, {
133
+ method: 'HEAD',
134
+ });
135
+ if (resp.status !== 200) {
136
+ console.error('下载失败:', resp.status);
137
+ throw new Error('下载失败');
138
+ }
139
+ const contentLength = resp.headers.get('Content-Length') || fileSize;
140
+ const result = yield (0, react_native_compressor_1.download)(fileUrl, (progress) => {
141
+ console.log('download progress: ', progress);
142
+ onProgress === null || onProgress === void 0 ? void 0 : onProgress({ loaded: progress * Number(contentLength), total: Number(contentLength) });
143
+ });
144
+ return yield (0, exports.moveFile)(result, filename, resourceType);
145
+ }
146
+ });
147
+ exports.download = download;
148
+ function saveToAlbum(imManager, localPath, showTips = true) {
149
+ var _a, _b;
150
+ return __awaiter(this, void 0, void 0, function* () {
151
+ const absolutePath = toAbsolutePath(localPath);
152
+ try {
153
+ const success = yield requestSaveFilePermissionIfAndroid(imManager);
154
+ if (!success) {
155
+ return false;
156
+ }
157
+ yield camera_roll_1.CameraRoll.saveToCameraRoll(absolutePath);
158
+ showTips && ((_a = imManager.toast) === null || _a === void 0 ? void 0 : _a.call(imManager, imManager.t('saved'), 'success'));
159
+ }
160
+ catch (e) {
161
+ console.warn('saveToAlbum fail', e);
162
+ showTips && ((_b = imManager.toast) === null || _b === void 0 ? void 0 : _b.call(imManager, imManager.t('saveFail'), 'fail'));
163
+ return false;
164
+ }
165
+ return true;
166
+ });
167
+ }
168
+ exports.saveToAlbum = saveToAlbum;
169
+ function requestSaveFilePermissionIfAndroid(imManager) {
170
+ var _a;
171
+ return __awaiter(this, void 0, void 0, function* () {
172
+ if (react_native_1.Platform.OS === 'android') {
173
+ let granted = yield react_native_1.PermissionsAndroid.check(react_native_1.PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE);
174
+ if (!granted) {
175
+ let granted = yield requestSaveFilePermission();
176
+ console.log('requestSaveFilePermissionIfAndroid: ', granted);
177
+ if (granted === 'denied') {
178
+ (_a = imManager.toast) === null || _a === void 0 ? void 0 : _a.call(imManager, imManager.t('saveFail') + ', ' + imManager.t('unauthorized'), 'fail');
179
+ return false;
180
+ }
181
+ }
182
+ }
183
+ return true;
184
+ });
185
+ }
186
+ exports.requestSaveFilePermissionIfAndroid = requestSaveFilePermissionIfAndroid;
187
+ function requestSaveFilePermission() {
188
+ return react_native_1.PermissionsAndroid.request(react_native_1.PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE);
189
+ }
190
+ function requestReadFilePermission() {
191
+ return react_native_1.PermissionsAndroid.request(react_native_1.PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE);
192
+ }
193
+ // 获取主流的文件扩展名
194
+ const extensions = {
195
+ 'image/jpeg': '.jpg',
196
+ 'image/png': '.png',
197
+ 'image/gif': '.gif',
198
+ 'image/bmp': '.bmp',
199
+ 'image/webp': '.webp',
200
+ 'image/tiff': '.tiff',
201
+ 'image/svg+xml': '.svg',
202
+ 'image/x-icon': '.ico',
203
+ 'image/vnd.microsoft.icon': '.ico',
204
+ 'image/x-ms-bmp': '.bmp',
205
+ // 文本
206
+ 'text/plain': '.txt',
207
+ 'text/html': '.html',
208
+ 'text/css': '.css',
209
+ 'text/javascript': '.js',
210
+ 'text/xml': '.xml',
211
+ 'text/csv': '.csv',
212
+ 'text/markdown': '.md',
213
+ 'text/calendar': '.ics',
214
+ 'text/rtf': '.rtf',
215
+ 'text/vcard': '.vcf',
216
+ // 音频
217
+ 'audio/mpeg': '.mp3',
218
+ 'audio/ogg': '.ogg',
219
+ 'audio/wav': '.wav',
220
+ 'audio/aac': '.aac',
221
+ // 视频
222
+ 'video/mp4': '.mp4',
223
+ 'video/webm': '.webm',
224
+ 'video/quicktime': '.mov',
225
+ 'video/x-msvideo': '.avi',
226
+ 'video/x-ms-wmv': '.wmv',
227
+ 'video/x-flv': '.flv',
228
+ // ppt
229
+ 'application/vnd.openxmlformats-officedocument.presentationml.presentation': '.pptx',
230
+ 'application/vnd.ms-powerpoint': '.ppt',
231
+ // word
232
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': '.docx',
233
+ 'application/msword': '.doc',
234
+ // excel
235
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': '.xlsx',
236
+ 'application/vnd.ms-excel': '.xls',
237
+ 'application/vnd.oasis.opendocument.spreadsheet': '.ods',
238
+ // wps
239
+ 'application/vnd.ms-works': '.wps',
240
+ 'application/vnd.ms-office': '.doc',
241
+ 'application/vnd.ms-excel.sheet.macroEnabled.12': '.xlsm',
242
+ // pdf
243
+ 'application/pdf': '.pdf',
244
+ 'application/x-pdf': '.pdf',
245
+ // 压缩
246
+ 'application/zip': '.zip',
247
+ 'application/x-gzip': '.gz',
248
+ 'application/x-tar': '.tar',
249
+ 'application/x-7z-compressed': '.7z',
250
+ 'application/x-rar-compressed': '.rar',
251
+ };
252
+ function getExtensionFromMime(mime) {
253
+ return extensions[mime] || '';
254
+ }
255
+ exports.getExtensionFromMime = getExtensionFromMime;
@@ -0,0 +1,4 @@
1
+ export declare function calculate(height: number, width: number, imageMaxSize?: number): {
2
+ height: number;
3
+ width: number;
4
+ };
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculate = void 0;
4
+ const rn_ui_1 = require("@smart-link/rn-ui");
5
+ const imageMaxSizeDefault = (0, rn_ui_1.dp)(200);
6
+ const goldRate = 0.618;
7
+ function calculate(height, width, imageMaxSize = imageMaxSizeDefault) {
8
+ let sizeStyle;
9
+ if (height > width) {
10
+ let rate = goldRate;
11
+ let size = height;
12
+ if (size > imageMaxSize) {
13
+ size = imageMaxSize;
14
+ }
15
+ sizeStyle = { height: imageMaxSize, width: rate * size };
16
+ }
17
+ else if (width > height) {
18
+ let rate = goldRate;
19
+ let size = width;
20
+ if (size > imageMaxSize) {
21
+ size = imageMaxSize;
22
+ }
23
+ sizeStyle = { width: imageMaxSize, height: rate * size };
24
+ }
25
+ else {
26
+ let size = width;
27
+ if (size > imageMaxSize) {
28
+ size = imageMaxSize;
29
+ }
30
+ sizeStyle = { width: size, height: size };
31
+ }
32
+ return sizeStyle;
33
+ }
34
+ exports.calculate = calculate;
@@ -0,0 +1,2 @@
1
+ export declare const copyPhone: (phoneNum: string) => void;
2
+ export declare const callPhone: (phoneNum: string) => void;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.callPhone = exports.copyPhone = void 0;
7
+ const clipboard_1 = __importDefault(require("@react-native-clipboard/clipboard"));
8
+ const react_native_1 = require("react-native");
9
+ const copyPhone = (phoneNum) => {
10
+ clipboard_1.default.setString(phoneNum);
11
+ };
12
+ exports.copyPhone = copyPhone;
13
+ const callPhone = (phoneNum) => {
14
+ let tel = `tel:${phoneNum}`; //目标电话:'tel:1008611'
15
+ react_native_1.Linking.canOpenURL(tel).then((supported) => {
16
+ if (!supported) {
17
+ console.log('Can not handle tel:' + tel);
18
+ }
19
+ else {
20
+ return react_native_1.Linking.openURL(tel);
21
+ }
22
+ }).catch(error => console.log('tel error', error));
23
+ };
24
+ exports.callPhone = callPhone;
@@ -0,0 +1,34 @@
1
+ import { AxiosInstance, AxiosRequestConfig, Method } from 'axios';
2
+ export interface IResponse<T extends any = any> {
3
+ code: string;
4
+ data: T;
5
+ codeMsg: string;
6
+ page?: {
7
+ totalCount: number;
8
+ pageNum: number;
9
+ pageSize: number;
10
+ };
11
+ }
12
+ type HeaderType = 'json' | 'form' | 'multipart';
13
+ export declare const Headers: {
14
+ json: {
15
+ 'Content-Type': string;
16
+ };
17
+ form: {
18
+ 'Content-Type': string;
19
+ };
20
+ multipart: {
21
+ 'Content-Type': string;
22
+ };
23
+ };
24
+ interface IRequest {
25
+ <R, Q = any>(url: string, data?: Q, method?: Method, contentType?: HeaderType, config?: AxiosRequestConfig): Promise<IResponse<R>>;
26
+ get<R, Q = any>(url: string, data?: Q, config?: AxiosRequestConfig): Promise<IResponse<R>>;
27
+ post<R, Q = any>(url: string, data?: Q, config?: AxiosRequestConfig): Promise<IResponse<R>>;
28
+ postForm<R, Q = any>(url: string, data?: Q, config?: AxiosRequestConfig): Promise<IResponse<R>>;
29
+ postFile<R, Q = any>(url: string, data?: Q, config?: AxiosRequestConfig): Promise<IResponse<R>>;
30
+ }
31
+ export declare const getBaseURL: () => string;
32
+ export declare const createRequest: (base: string) => AxiosInstance;
33
+ declare const request: IRequest;
34
+ export default request;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createRequest = exports.getBaseURL = exports.Headers = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ exports.Headers = {
9
+ json: {
10
+ 'Content-Type': 'application/json;utf-8',
11
+ },
12
+ form: {
13
+ 'Content-Type': 'application/x-www-form-urlencoded;utf-8',
14
+ },
15
+ multipart: {
16
+ 'Content-Type': 'multipart/form-data',
17
+ },
18
+ };
19
+ let instance = null;
20
+ let baseURL = '';
21
+ const getBaseURL = () => baseURL;
22
+ exports.getBaseURL = getBaseURL;
23
+ const createRequest = (base) => {
24
+ baseURL = base;
25
+ instance = axios_1.default.create({
26
+ baseURL: base,
27
+ timeout: 10000,
28
+ headers: {
29
+ operationID: Date.now(),
30
+ },
31
+ });
32
+ instance.interceptors.request.use(config => {
33
+ return config;
34
+ }, error => {
35
+ return Promise.reject(error);
36
+ });
37
+ instance.interceptors.response.use(response => {
38
+ if (response.status !== 200) {
39
+ return Promise.reject(new Error(response.statusText || 'Error'));
40
+ }
41
+ const result = response.data || {};
42
+ if (result.code === '0000') {
43
+ return result;
44
+ }
45
+ else {
46
+ return Promise.reject(result);
47
+ }
48
+ }, error => {
49
+ return Promise.reject(error);
50
+ });
51
+ return instance;
52
+ };
53
+ exports.createRequest = createRequest;
54
+ const request = (url, data, method = 'post', contentType = 'json', config) => {
55
+ return instance.request(Object.assign(Object.assign({ url, data: contentType !== 'form' ? data : null, method, params: contentType === 'form' ? data : null }, config), { headers: Object.assign(Object.assign({}, exports.Headers[contentType]), config === null || config === void 0 ? void 0 : config.headers) }));
56
+ };
57
+ request.get = (url, data, config) => request(url, data, 'get', 'form', config);
58
+ request.post = (url, data, config) => {
59
+ return request(url, data, 'post', 'json', config);
60
+ };
61
+ request.postForm = (url, data, config) => {
62
+ return request(url, data, 'post', 'form', config);
63
+ };
64
+ request.postFile = (url, data, config) => {
65
+ return request(url, data, 'post', 'multipart', config);
66
+ };
67
+ exports.default = request;
@@ -0,0 +1 @@
1
+ export declare const scrollToBottom: (animated?: boolean) => void;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.scrollToBottom = void 0;
4
+ const init_1 = require("../init");
5
+ const react_native_1 = require("react-native");
6
+ const scrollToBottom = (animated = true) => {
7
+ react_native_1.InteractionManager.runAfterInteractions(() => {
8
+ var _a, _b, _c;
9
+ (_c = (_b = (_a = (0, init_1.getImManager)()) === null || _a === void 0 ? void 0 : _a.flatListRef) === null || _b === void 0 ? void 0 : _b.current) === null || _c === void 0 ? void 0 : _c.scrollToOffset({ animated, offset: 0 });
10
+ });
11
+ };
12
+ exports.scrollToBottom = scrollToBottom;
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare function getSummary(text: string, searchKey: string, summaryLength?: number, color?: string): string | (string | React.JSX.Element)[] | undefined;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getSummary = void 0;
7
+ const react_native_1 = require("react-native");
8
+ const react_1 = __importDefault(require("react"));
9
+ function getSummary(text, searchKey, summaryLength = 15, color = 'red') {
10
+ if (!text) {
11
+ return;
12
+ }
13
+ if (!searchKey) {
14
+ return text;
15
+ }
16
+ const textLength = text.length;
17
+ const searchLength = searchKey.length;
18
+ if (textLength === 0) {
19
+ return '';
20
+ }
21
+ if (searchLength === 0) {
22
+ return text;
23
+ }
24
+ if (Object.prototype.toString.call(text) !== '[object String]') {
25
+ text = text + '';
26
+ }
27
+ const index = text.toLowerCase().indexOf(searchKey.toLowerCase());
28
+ let result = [];
29
+ if (index < 0) {
30
+ return text;
31
+ }
32
+ if (index > summaryLength) {
33
+ result.push('...' + text.substring(index - 15, index));
34
+ }
35
+ else {
36
+ result.push(text.substring(0, index));
37
+ }
38
+ result.push(<react_native_1.Text key={result.length} style={{ color }}>{text.substr(index, searchLength)}</react_native_1.Text>);
39
+ result.push(text.substring(index + searchLength, textLength));
40
+ return result;
41
+ }
42
+ exports.getSummary = getSummary;
@@ -0,0 +1,2 @@
1
+ import { IConversation } from '@smart-link/im-base';
2
+ export declare const takeCamera: (conversation: IConversation) => Promise<void>;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.takeCamera = void 0;
16
+ const react_1 = __importDefault(require("react"));
17
+ const Camera_1 = __importDefault(require("../components/Camera/Camera"));
18
+ const rn_ui_1 = require("@smart-link/rn-ui");
19
+ const init_1 = require("../init");
20
+ let topKey = 0;
21
+ const takeCamera = (conversation) => __awaiter(void 0, void 0, void 0, function* () {
22
+ return new Promise((resolve, reject) => {
23
+ (0, rn_ui_1.TopViewGetInstance)()
24
+ .add(<Camera_1.default horizontal={false} finishTakePicture={(picData) => {
25
+ (0, init_1.getImManager)().sendPictureMessage(Object.assign({}, conversation), picData);
26
+ (0, rn_ui_1.TopViewGetInstance)().remove(topKey);
27
+ resolve();
28
+ }} finishTakeRecord={(videoData) => {
29
+ (0, init_1.getImManager)().sendVideoMessage(Object.assign({}, conversation), videoData);
30
+ (0, rn_ui_1.TopViewGetInstance)().remove(topKey);
31
+ resolve();
32
+ }} cancelCamera={() => {
33
+ (0, rn_ui_1.TopViewGetInstance)().remove(topKey);
34
+ reject('cancel');
35
+ }}/>)
36
+ .then(id => {
37
+ topKey = id;
38
+ });
39
+ });
40
+ });
41
+ exports.takeCamera = takeCamera;
@@ -0,0 +1,9 @@
1
+ export type TextType = 'text' | 'phone' | 'url';
2
+ export type TextItem = {
3
+ type: TextType;
4
+ value: string;
5
+ };
6
+ export declare function mixPhone(text: string): TextItem[];
7
+ export declare function mixUrl(text: string): TextItem[];
8
+ export declare function mixWithReg(text: string, type: TextType, reg: RegExp): TextItem[];
9
+ export declare function mix(text: string): TextItem[];
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mix = exports.mixWithReg = exports.mixUrl = exports.mixPhone = void 0;
4
+ // export function mixEmoji(text: string, textEmojiItems: TextItem[]) {
5
+ // if (!text || text.length === 0) {
6
+ // return;
7
+ // }
8
+ //
9
+ // let leftIndex = text.indexOf('[');
10
+ // let rightIndex = text.indexOf(']');
11
+ //
12
+ // if (leftIndex < 0 || rightIndex < 0) {
13
+ // textEmojiItems.push({type: 'text', value: text});
14
+ // return;
15
+ // }
16
+ //
17
+ //
18
+ // let leftText = text.substring(0, leftIndex);
19
+ // if(textEmojiItems.length > 0 && (leftText.length === 0 || leftText.lastIndexOf(' ') !== leftText.length -1)){
20
+ // leftText = leftText +' ';
21
+ // }
22
+ // textEmojiItems.push({type: 'text', value: leftText });
23
+ //
24
+ // const emoji = text.substring(leftIndex + 1, rightIndex);
25
+ // textEmojiItems.push({type: 'emoji', value: emoji});
26
+ //
27
+ // text = ' ' + text.substring(rightIndex + 1);
28
+ // mixEmoji(text, textEmojiItems);
29
+ // }
30
+ function mixPhone(text) {
31
+ const phoneReg = /(1[3|4|5|7|8][\d]{9}|0[\d]{2,3}-[\d]{7,8}|400[-]?[\d]{3}[-]?[\d]{4})/g;
32
+ return mixWithReg(text, 'phone', phoneReg);
33
+ }
34
+ exports.mixPhone = mixPhone;
35
+ function mixUrl(text) {
36
+ let urlReg = /(https?|http|ftp|file):\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]/g;
37
+ return mixWithReg(text, 'url', urlReg);
38
+ }
39
+ exports.mixUrl = mixUrl;
40
+ function mixWithReg(text, type, reg) {
41
+ const items = [];
42
+ const tags = text.match(reg);
43
+ tags && tags.forEach(tag => {
44
+ let leftIndex = text.indexOf(tag);
45
+ let rightIndex = leftIndex + tag.length;
46
+ const leftText = text.substring(0, leftIndex);
47
+ items.push({ type: 'text', value: leftText + ' ' });
48
+ const tagText = text.substring(leftIndex, rightIndex);
49
+ items.push({ type: type, value: tagText });
50
+ text = ' ' + text.substring(rightIndex);
51
+ });
52
+ items.push({ type: 'text', value: text });
53
+ return items;
54
+ }
55
+ exports.mixWithReg = mixWithReg;
56
+ function mix(text) {
57
+ const viewItems = [];
58
+ if (!text || text === '') {
59
+ return viewItems;
60
+ }
61
+ mixUrl(text).forEach(textUrlItem => {
62
+ if (textUrlItem.type === 'text') {
63
+ mixPhone(textUrlItem.value).forEach(textPhoneItem => {
64
+ // if (textPhoneItem.type === 'text') {
65
+ // const textEmojiItems: TextItem[] = [];
66
+ // // mixEmoji(textPhoneItem.value, textEmojiItems);
67
+ // textEmojiItems.forEach(textEmojiItem => {
68
+ // viewItems.push(textEmojiItem);
69
+ // })
70
+ // } else {
71
+ // viewItems.push(textPhoneItem);
72
+ // }
73
+ viewItems.push(textPhoneItem);
74
+ });
75
+ }
76
+ else {
77
+ viewItems.push(textUrlItem);
78
+ }
79
+ });
80
+ return viewItems;
81
+ }
82
+ exports.mix = mix;
@@ -0,0 +1,5 @@
1
+ declare const uploadFile: (filePath: string, type: string, onProgress?: ((o: {
2
+ loaded: number;
3
+ total: number;
4
+ }) => void) | undefined) => Promise<string>;
5
+ export default uploadFile;