@messenger-box/platform-mobile 0.0.1-alpha.219 → 0.0.1-alpha.221

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [0.0.1-alpha.221](https://github.com/cdmbase/messenger-box/compare/v0.0.1-alpha.220...v0.0.1-alpha.221) (2022-10-06)
7
+
8
+ **Note:** Version bump only for package @messenger-box/platform-mobile
9
+
10
+
11
+
12
+
13
+
6
14
  ## [0.0.1-alpha.219](https://github.com/cdmbase/messenger-box/compare/v0.0.1-alpha.218...v0.0.1-alpha.219) (2022-09-24)
7
15
 
8
16
  **Note:** Version bump only for package @messenger-box/platform-mobile
package/lib/index.js CHANGED
@@ -214,70 +214,6 @@ const Inbox = (props) => {
214
214
  exports.Inbox = Inbox;
215
215
 
216
216
 
217
- /***/ }),
218
-
219
- /***/ "./src/screens/inbox/components/CommonMessage.tsx":
220
- /*!********************************************************!*\
221
- !*** ./src/screens/inbox/components/CommonMessage.tsx ***!
222
- \********************************************************/
223
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
224
-
225
-
226
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
227
- if (k2 === undefined) k2 = k;
228
- var desc = Object.getOwnPropertyDescriptor(m, k);
229
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
230
- desc = { enumerable: true, get: function() { return m[k]; } };
231
- }
232
- Object.defineProperty(o, k2, desc);
233
- }) : (function(o, m, k, k2) {
234
- if (k2 === undefined) k2 = k;
235
- o[k2] = m[k];
236
- }));
237
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
238
- Object.defineProperty(o, "default", { enumerable: true, value: v });
239
- }) : function(o, v) {
240
- o["default"] = v;
241
- });
242
- var __importStar = (this && this.__importStar) || function (mod) {
243
- if (mod && mod.__esModule) return mod;
244
- var result = {};
245
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
246
- __setModuleDefault(result, mod);
247
- return result;
248
- };
249
- Object.defineProperty(exports, "__esModule", ({ value: true }));
250
- exports.CommonMessage = void 0;
251
- const React = __importStar(__webpack_require__(/*! react */ "react"));
252
- const native_base_1 = __webpack_require__(/*! native-base */ "native-base");
253
- const vector_icons_1 = __webpack_require__(/*! @expo/vector-icons */ "@expo/vector-icons");
254
- const date_fns_1 = __webpack_require__(/*! date-fns */ "date-fns");
255
- const FilesList_1 = __webpack_require__(/*! ./FilesList */ "./src/screens/inbox/components/FilesList.tsx");
256
- const lodash_1 = __webpack_require__(/*! lodash */ "lodash");
257
- const CommonMessage = (props) => {
258
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
259
- const { message, currentUser } = props;
260
- return (React.createElement(native_base_1.Box, { mb: "7" },
261
- React.createElement(native_base_1.HStack, { space: 2 },
262
- React.createElement(native_base_1.Avatar, { backgroundColor: "grey", source: { uri: ((_a = message === null || message === void 0 ? void 0 : message.author) === null || _a === void 0 ? void 0 : _a.picture) || undefined } }, (0, lodash_1.startCase)((_c = (_b = message === null || message === void 0 ? void 0 : message.author) === null || _b === void 0 ? void 0 : _b.username) === null || _c === void 0 ? void 0 : _c.charAt(0))),
263
- React.createElement(native_base_1.Box, null,
264
- React.createElement(native_base_1.HStack, { width: '80%', justifyContent: 'space-between', alignItems: 'center' },
265
- React.createElement(native_base_1.HStack, { space: 2 },
266
- React.createElement(native_base_1.Text, { fontSize: "14px", color: "gray.600", fontWeight: 'bold' }, ((_d = message === null || message === void 0 ? void 0 : message.author) === null || _d === void 0 ? void 0 : _d.familyName) && ((_e = message === null || message === void 0 ? void 0 : message.author) === null || _e === void 0 ? void 0 : _e.givenName)
267
- ? ((_f = message === null || message === void 0 ? void 0 : message.author) === null || _f === void 0 ? void 0 : _f.givenName) + ' ' + ((_g = message === null || message === void 0 ? void 0 : message.author) === null || _g === void 0 ? void 0 : _g.familyName)
268
- : (_h = message === null || message === void 0 ? void 0 : message.author) === null || _h === void 0 ? void 0 : _h.username),
269
- React.createElement(native_base_1.Text, { fontSize: "14px", color: "gray.500", ml: "10px" }, (0, date_fns_1.formatDistance)(new Date(message === null || message === void 0 ? void 0 : message.createdAt), new Date(), {
270
- includeSeconds: true,
271
- addSuffix: true,
272
- }))),
273
- (currentUser === null || currentUser === void 0 ? void 0 : currentUser.id) !== ((_j = message === null || message === void 0 ? void 0 : message.author) === null || _j === void 0 ? void 0 : _j.id) && (React.createElement(native_base_1.Box, { ml: "8px" },
274
- React.createElement(native_base_1.Icon, { as: vector_icons_1.Ionicons, name: 'flag', color: "gray.600", size: "sm" })))),
275
- React.createElement(native_base_1.Text, { fontSize: "14px", mt: "5px" }, message === null || message === void 0 ? void 0 : message.message),
276
- ((_k = message.files) === null || _k === void 0 ? void 0 : _k.totalCount) ? React.createElement(FilesList_1.FilesList, { uploaded: true, files: (_l = message === null || message === void 0 ? void 0 : message.files) === null || _l === void 0 ? void 0 : _l.data }) : null))));
277
- };
278
- exports.CommonMessage = CommonMessage;
279
-
280
-
281
217
  /***/ }),
282
218
 
283
219
  /***/ "./src/screens/inbox/components/DialogsListItem.tsx":
@@ -389,233 +325,6 @@ const DialogsListItem = function DialogsListItem({ currentUser, users, selectedC
389
325
  exports.DialogsListItem = DialogsListItem;
390
326
 
391
327
 
392
- /***/ }),
393
-
394
- /***/ "./src/screens/inbox/components/FilesList.tsx":
395
- /*!****************************************************!*\
396
- !*** ./src/screens/inbox/components/FilesList.tsx ***!
397
- \****************************************************/
398
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
399
-
400
-
401
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
402
- if (k2 === undefined) k2 = k;
403
- var desc = Object.getOwnPropertyDescriptor(m, k);
404
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
405
- desc = { enumerable: true, get: function() { return m[k]; } };
406
- }
407
- Object.defineProperty(o, k2, desc);
408
- }) : (function(o, m, k, k2) {
409
- if (k2 === undefined) k2 = k;
410
- o[k2] = m[k];
411
- }));
412
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
413
- Object.defineProperty(o, "default", { enumerable: true, value: v });
414
- }) : function(o, v) {
415
- o["default"] = v;
416
- });
417
- var __importStar = (this && this.__importStar) || function (mod) {
418
- if (mod && mod.__esModule) return mod;
419
- var result = {};
420
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
421
- __setModuleDefault(result, mod);
422
- return result;
423
- };
424
- Object.defineProperty(exports, "__esModule", ({ value: true }));
425
- exports.FilesList = void 0;
426
- const react_1 = __importStar(__webpack_require__(/*! react */ "react"));
427
- const react_native_1 = __webpack_require__(/*! react-native */ "react-native");
428
- const native_base_1 = __webpack_require__(/*! native-base */ "native-base");
429
- function FilesList({ files, uploaded = false }) {
430
- return (react_1.default.createElement(native_base_1.HStack, { space: 2, mt: 2 },
431
- react_1.default.createElement(FilesList.FilesView, { files: files, uploaded: uploaded })));
432
- }
433
- exports.FilesList = FilesList;
434
- FilesList.FilesView = function MessageItemFiles({ files = [], uploaded }) {
435
- if (!files.length) {
436
- return null;
437
- }
438
- return (react_1.default.createElement(native_base_1.Box, null, files.map((file) => {
439
- const url = (0, react_1.useMemo)(() => (uploaded ? file.url : react_native_1.Image.resolveAssetSource(file).uri), [file, uploaded]);
440
- return (react_1.default.createElement(native_base_1.Image, { alt: 'image', mr: 2, height: "16", width: "16", source: {
441
- uri: url,
442
- scale: 0.2,
443
- } }));
444
- })));
445
- };
446
-
447
-
448
- /***/ }),
449
-
450
- /***/ "./src/screens/inbox/components/MessageInput.tsx":
451
- /*!*******************************************************!*\
452
- !*** ./src/screens/inbox/components/MessageInput.tsx ***!
453
- \*******************************************************/
454
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
455
-
456
-
457
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
458
- if (k2 === undefined) k2 = k;
459
- var desc = Object.getOwnPropertyDescriptor(m, k);
460
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
461
- desc = { enumerable: true, get: function() { return m[k]; } };
462
- }
463
- Object.defineProperty(o, k2, desc);
464
- }) : (function(o, m, k, k2) {
465
- if (k2 === undefined) k2 = k;
466
- o[k2] = m[k];
467
- }));
468
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
469
- Object.defineProperty(o, "default", { enumerable: true, value: v });
470
- }) : function(o, v) {
471
- o["default"] = v;
472
- });
473
- var __importStar = (this && this.__importStar) || function (mod) {
474
- if (mod && mod.__esModule) return mod;
475
- var result = {};
476
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
477
- __setModuleDefault(result, mod);
478
- return result;
479
- };
480
- var __importDefault = (this && this.__importDefault) || function (mod) {
481
- return (mod && mod.__esModule) ? mod : { "default": mod };
482
- };
483
- Object.defineProperty(exports, "__esModule", ({ value: true }));
484
- exports.MessageInput = void 0;
485
- const native_base_1 = __webpack_require__(/*! native-base */ "native-base");
486
- const vector_icons_1 = __webpack_require__(/*! @expo/vector-icons */ "@expo/vector-icons");
487
- const ImagePicker = __importStar(__webpack_require__(/*! expo-image-picker */ "expo-image-picker"));
488
- const react_native_keyboard_aware_scroll_view_1 = __webpack_require__(/*! react-native-keyboard-aware-scroll-view */ "react-native-keyboard-aware-scroll-view");
489
- const react_1 = __importStar(__webpack_require__(/*! react */ "react"));
490
- const FilesList_1 = __webpack_require__(/*! ./FilesList */ "./src/screens/inbox/components/FilesList.tsx");
491
- const axios_1 = __importDefault(__webpack_require__(/*! axios */ "axios"));
492
- exports.MessageInput = (0, react_1.forwardRef)(function MessageInput({ handleSend: handleSendProp }) {
493
- const [message, setMessage] = (0, react_1.useState)('');
494
- const [sending, setSending] = (0, react_1.useState)(false);
495
- const [files, setFiles] = (0, react_1.useState)([]);
496
- const [showKeyboard, setShowKeyboard] = (0, react_1.useState)(false);
497
- const handleSend = (0, react_1.useCallback)(() => {
498
- setSending(true);
499
- handleSendProp(message, files)
500
- .then(() => {
501
- setMessage('');
502
- setFiles([]);
503
- })
504
- .finally(() => setSending(false));
505
- }, [files, handleSendProp, message]);
506
- const onSelectImages = async () => {
507
- // No permissions request is necessary for launching the image library
508
- await ImagePicker.requestMediaLibraryPermissionsAsync();
509
- let result = await ImagePicker.launchImageLibraryAsync({
510
- mediaTypes: ImagePicker.MediaTypeOptions.Images,
511
- allowsEditing: true,
512
- aspect: [4, 3],
513
- quality: 1,
514
- });
515
- if (!result.cancelled) {
516
- axios_1.default
517
- .get(result.uri, {
518
- responseType: 'blob',
519
- })
520
- .then((res) => {
521
- let file = res.data._data;
522
- file.uri = result.uri;
523
- setFiles(files.concat(file));
524
- });
525
- }
526
- };
527
- return (react_1.default.createElement(react_native_keyboard_aware_scroll_view_1.KeyboardAwareScrollView, { keyboardDismissMode: "on-drag", keyboardShouldPersistTaps: 'always', onKeyboardWillShow: (frames) => {
528
- setShowKeyboard(true);
529
- }, onKeyboardWillHide: (frames) => {
530
- setShowKeyboard(false);
531
- }, scrollEnabled: !showKeyboard, style: { position: 'absolute', left: 0, right: 0, bottom: showKeyboard ? 300 : 0 } },
532
- react_1.default.createElement(native_base_1.VStack, { bg: 'white', alignContent: "center", p: 5 },
533
- react_1.default.createElement(native_base_1.View, null,
534
- react_1.default.createElement(native_base_1.TextField, { placeholder: "Message...", borderColor: "gray.400", value: sending ? '' : message, onChange: (e) => setMessage(e.nativeEvent.text), fontSize: 14 })),
535
- files.length ? (react_1.default.createElement(native_base_1.View, { mb: 4, flexDirection: "row" },
536
- react_1.default.createElement(FilesList_1.FilesList, { files: files }))) : null,
537
- react_1.default.createElement(native_base_1.HStack, { alignContent: "center", justifyContent: "space-between" },
538
- react_1.default.createElement(vector_icons_1.FontAwesome, { onPress: onSelectImages, size: 20, style: { marginRight: 5 }, name: "file-image-o" }),
539
- react_1.default.createElement(vector_icons_1.FontAwesome, { onPress: handleSend, size: 20, name: "send" })))));
540
- });
541
-
542
-
543
- /***/ }),
544
-
545
- /***/ "./src/screens/inbox/components/MessageItem.tsx":
546
- /*!******************************************************!*\
547
- !*** ./src/screens/inbox/components/MessageItem.tsx ***!
548
- \******************************************************/
549
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
550
-
551
-
552
- var __importDefault = (this && this.__importDefault) || function (mod) {
553
- return (mod && mod.__esModule) ? mod : { "default": mod };
554
- };
555
- Object.defineProperty(exports, "__esModule", ({ value: true }));
556
- exports.MessageItem = void 0;
557
- const react_1 = __importDefault(__webpack_require__(/*! react */ "react"));
558
- const native_base_1 = __webpack_require__(/*! native-base */ "native-base");
559
- const vector_icons_1 = __webpack_require__(/*! @expo/vector-icons */ "@expo/vector-icons");
560
- const native_1 = __webpack_require__(/*! @react-navigation/native */ "@react-navigation/native");
561
- const PlainMessage_1 = __webpack_require__(/*! ./PlainMessage */ "./src/screens/inbox/components/PlainMessage.tsx");
562
- const CommonMessage_1 = __webpack_require__(/*! ./CommonMessage */ "./src/screens/inbox/components/CommonMessage.tsx");
563
- function MessageItem({ message, channelId, currentUser, totalCount, onOpen, }) {
564
- var _a, _b;
565
- if (typeof message === 'string') {
566
- return react_1.default.createElement(PlainMessage_1.PlainMessage, { message: message });
567
- }
568
- const { type } = message;
569
- if (!type || type === "Simple" /* IPostTypeEnum.Simple */) {
570
- return react_1.default.createElement(CommonMessage_1.CommonMessage, { message: message, currentUser: currentUser });
571
- }
572
- if (type === "ALERT" /* IPostTypeEnum.ALERT */) {
573
- const { attachment } = (_a = message === null || message === void 0 ? void 0 : message.propsConfiguration) === null || _a === void 0 ? void 0 : _a.contents;
574
- let action = '';
575
- let actionId = '';
576
- const icon = 'information-circle';
577
- if (attachment.callToAction.link.includes('my-reservation-details')) {
578
- action = 'm-reservation-detail';
579
- actionId = (_b = attachment === null || attachment === void 0 ? void 0 : attachment.callToAction) === null || _b === void 0 ? void 0 : _b.link.split('/').pop();
580
- }
581
- const color = (0, native_base_1.useColorModeValue)('white', 'gray.800');
582
- const bgColor = (0, native_base_1.useColorModeValue)('gray.800', 'white');
583
- const navigation = (0, native_1.useNavigation)();
584
- return (react_1.default.createElement(native_base_1.Box, { borderWidth: 1, borderRadius: 20, backgroundColor: bgColor, my: 2, p: 3, opacity: 0.7 },
585
- react_1.default.createElement(native_base_1.HStack, { space: 2, alignItems: 'center' },
586
- react_1.default.createElement(native_base_1.Icon, { as: vector_icons_1.Ionicons, name: icon, color: 'white' }),
587
- react_1.default.createElement(native_base_1.Text, { color: color, width: '45%', numberOfLines: 3 }, attachment === null || attachment === void 0 ? void 0 : attachment.title),
588
- attachment.callToAction ? (react_1.default.createElement(native_base_1.Button, { variant: 'outline', size: 'sm', borderColor: color, onPress: () => navigation.navigate(action, { reservationId: actionId }) },
589
- react_1.default.createElement(native_base_1.Text, { color: color }, attachment.callToAction.title))) : null)));
590
- }
591
- return null;
592
- }
593
- exports.MessageItem = MessageItem;
594
-
595
-
596
- /***/ }),
597
-
598
- /***/ "./src/screens/inbox/components/PlainMessage.tsx":
599
- /*!*******************************************************!*\
600
- !*** ./src/screens/inbox/components/PlainMessage.tsx ***!
601
- \*******************************************************/
602
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
603
-
604
-
605
- var __importDefault = (this && this.__importDefault) || function (mod) {
606
- return (mod && mod.__esModule) ? mod : { "default": mod };
607
- };
608
- Object.defineProperty(exports, "__esModule", ({ value: true }));
609
- exports.PlainMessage = void 0;
610
- const react_1 = __importDefault(__webpack_require__(/*! react */ "react"));
611
- const native_base_1 = __webpack_require__(/*! native-base */ "native-base");
612
- const PlainMessage = ({ message }) => {
613
- return (react_1.default.createElement(native_base_1.Flex, { w: "full", justifyContent: 'center', mb: "7" },
614
- react_1.default.createElement(native_base_1.Text, { fontSize: "14px", fontWeight: 'bold' }, message)));
615
- };
616
- exports.PlainMessage = PlainMessage;
617
-
618
-
619
328
  /***/ }),
620
329
 
621
330
  /***/ "./src/screens/inbox/config/config.ts":
@@ -684,24 +393,29 @@ var __importStar = (this && this.__importStar) || function (mod) {
684
393
  Object.defineProperty(exports, "__esModule", ({ value: true }));
685
394
  exports.ConversationView = void 0;
686
395
  const react_1 = __importStar(__webpack_require__(/*! react */ "react"));
687
- const date_fns_1 = __webpack_require__(/*! date-fns */ "date-fns");
688
396
  const native_base_1 = __webpack_require__(/*! native-base */ "native-base");
397
+ const native_1 = __webpack_require__(/*! @react-navigation/native */ "@react-navigation/native");
689
398
  const react_redux_1 = __webpack_require__(/*! react-redux */ "react-redux");
690
399
  const lodash_1 = __webpack_require__(/*! lodash */ "lodash");
400
+ const ImagePicker = __importStar(__webpack_require__(/*! expo-image-picker */ "expo-image-picker"));
401
+ const base_64_1 = __webpack_require__(/*! base-64 */ "base-64");
402
+ const vector_icons_1 = __webpack_require__(/*! @expo/vector-icons */ "@expo/vector-icons");
403
+ const react_native_gifted_chat_1 = __webpack_require__(/*! react-native-gifted-chat */ "react-native-gifted-chat");
691
404
  const platform_client_1 = __webpack_require__(/*! @messenger-box/platform-client */ "@messenger-box/platform-client");
692
- const MessageItem_1 = __webpack_require__(/*! ../components/MessageItem */ "./src/screens/inbox/components/MessageItem.tsx");
693
- const MessageInput_1 = __webpack_require__(/*! ../components/MessageInput */ "./src/screens/inbox/components/MessageInput.tsx");
694
405
  const config_1 = __webpack_require__(/*! ../config */ "./src/screens/inbox/config/index.ts");
695
406
  const user_auth0_client_1 = __webpack_require__(/*! @adminide-stack/user-auth0-client */ "@adminide-stack/user-auth0-client");
696
407
  const { MESSAGES_PER_PAGE } = config_1.config;
697
408
  function ConversationView({ channelId }) {
698
- const { onOpen } = (0, native_base_1.useDisclose)();
699
409
  const messageListRef = (0, react_1.useRef)(null);
700
410
  const [channelToTop, setChannelToTop] = (0, react_1.useState)(0);
701
411
  const [channelMessages, setChannelMessages] = (0, react_1.useState)([]);
702
412
  const auth = (0, react_redux_1.useSelector)(user_auth0_client_1.userSelector);
703
413
  const [totalCount, setTotalCount] = (0, react_1.useState)(0);
414
+ const [selectedImage, setImage] = (0, react_1.useState)('');
704
415
  const [loadingOldMessages, setLoadingOldMessages] = (0, react_1.useState)(false);
416
+ const color = (0, native_base_1.useColorModeValue)('white', 'black');
417
+ const navigation = (0, native_1.useNavigation)();
418
+ const [files, setFiles] = (0, react_1.useState)([]);
705
419
  const { startUpload } = (0, platform_client_1.useUploadFiles)();
706
420
  const [sendMsg] = (0, platform_client_1.useSendMessagesMutation)();
707
421
  const { data, loading: messageLoading, refetch, } = (0, platform_client_1.useMessagesQuery)({
@@ -726,7 +440,7 @@ function ConversationView({ channelId }) {
726
440
  var _a;
727
441
  if (((_a = data === null || data === void 0 ? void 0 : data.messages) === null || _a === void 0 ? void 0 : _a.data) && (loadingOldMessages || channelMessages.length === 0)) {
728
442
  const { data: messages, totalCount } = data.messages;
729
- setChannelMessages((oldMessages) => (0, lodash_1.uniqBy)([...[...messages].reverse(), ...oldMessages], ({ id }) => id));
443
+ setChannelMessages((oldMessages) => (0, lodash_1.uniqBy)([...messages, ...oldMessages], ({ id }) => id));
730
444
  setTotalCount(totalCount);
731
445
  }
732
446
  }, [data, loadingOldMessages, channelMessages]);
@@ -761,6 +475,28 @@ function ConversationView({ channelId }) {
761
475
  }
762
476
  }
763
477
  }, [onFetchOld]);
478
+ const dataURLtoFile = (dataurl, filename) => {
479
+ var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1], bstr = (0, base_64_1.encode)(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
480
+ while (n--) {
481
+ u8arr[n] = bstr.charCodeAt(n);
482
+ }
483
+ return new File([u8arr], filename, { type: mime });
484
+ };
485
+ const onSelectImages = async () => {
486
+ let imageSource = await ImagePicker.launchImageLibraryAsync({
487
+ mediaTypes: ImagePicker.MediaTypeOptions.Images,
488
+ allowsEditing: true,
489
+ aspect: [4, 3],
490
+ quality: 1,
491
+ base64: true,
492
+ });
493
+ if (!imageSource.cancelled) {
494
+ const image = 'data:image/jpeg;base64,' + (imageSource === null || imageSource === void 0 ? void 0 : imageSource.base64);
495
+ setImage(image);
496
+ const file = dataURLtoFile(image, 'inputImage.jpg');
497
+ setFiles(files.concat(file));
498
+ }
499
+ };
764
500
  const handleSend = (0, react_1.useCallback)(async (message, files) => {
765
501
  var _a;
766
502
  if (!(message && channelId)) {
@@ -796,6 +532,9 @@ function ConversationView({ channelId }) {
796
532
  },
797
533
  });
798
534
  const uploadedFiles = uploadResponse.data;
535
+ if (uploadResponse.data) {
536
+ setFiles([]);
537
+ }
799
538
  setChannelMessages((messages) => messages.map((message) => {
800
539
  if (message.id === postId) {
801
540
  return Object.assign(Object.assign({}, message), { files: {
@@ -810,27 +549,76 @@ function ConversationView({ channelId }) {
810
549
  const messageList = (0, react_1.useMemo)(() => {
811
550
  let currentDate = '';
812
551
  let res = [];
813
- (0, lodash_1.orderBy)(channelMessages, ['createdAt'], ['asc']).map((msg) => {
814
- const date = new Date(msg.createdAt);
815
- let msgDate;
816
- if ((0, date_fns_1.isToday)(date))
817
- msgDate = 'Today';
818
- else if ((0, date_fns_1.isYesterday)(date))
819
- msgDate = 'Yesterday';
820
- else
821
- msgDate = (0, date_fns_1.format)(new Date(msg.createdAt), 'eee, do MMMM');
822
- if (msgDate !== currentDate) {
823
- res.push(msgDate);
824
- currentDate = msgDate;
825
- }
826
- res.push(msg);
827
- });
552
+ if (channelMessages.length) {
553
+ (0, lodash_1.orderBy)(channelMessages, ['createdAt'], ['desc']).map((msg) => {
554
+ var _a, _b, _c;
555
+ let message = {
556
+ _id: '',
557
+ text: '',
558
+ createdAt: 0,
559
+ user: {
560
+ _id: '',
561
+ name: '',
562
+ avatar: '',
563
+ },
564
+ type: '',
565
+ };
566
+ const date = new Date(msg.createdAt);
567
+ message._id = msg.id;
568
+ message.text = msg.message;
569
+ message.createdAt = date;
570
+ (message.user = {
571
+ _id: msg.author.id,
572
+ name: msg.author.givenName + msg.author.familyName,
573
+ avatar: (_a = msg.author) === null || _a === void 0 ? void 0 : _a.picture,
574
+ }),
575
+ (message.image = (_c = (_b = msg.files) === null || _b === void 0 ? void 0 : _b.data[0]) === null || _c === void 0 ? void 0 : _c.url),
576
+ (message.sent = msg === null || msg === void 0 ? void 0 : msg.isDelivered),
577
+ (message.received = msg === null || msg === void 0 ? void 0 : msg.isRead);
578
+ message.type = msg === null || msg === void 0 ? void 0 : msg.type;
579
+ message.propsConfiguration = msg === null || msg === void 0 ? void 0 : msg.propsConfiguration;
580
+ res.push(message);
581
+ debugger;
582
+ });
583
+ }
828
584
  return res;
829
585
  }, [channelMessages]);
830
- return (react_1.default.createElement(native_base_1.Box, { flex: 1, position: 'relative' },
831
- react_1.default.createElement(native_base_1.ScrollView, { ref: messageListRef, mb: '32', contentContainerStyle: { flexGrow: 1 }, p: 5 }, messageList.map((message, index) => (react_1.default.createElement(native_base_1.Box, { key: index },
832
- react_1.default.createElement(MessageItem_1.MessageItem, { channelId: channelId, currentUser: currentUser, message: message, totalCount: totalCount, onOpen: onOpen }))))),
833
- react_1.default.createElement(MessageInput_1.MessageInput, { channelId: channelId, handleSend: handleSend })));
586
+ const renderSend = (props) => {
587
+ return (react_1.default.createElement(react_native_gifted_chat_1.Send, Object.assign({}, props),
588
+ react_1.default.createElement(native_base_1.Box, null,
589
+ react_1.default.createElement(vector_icons_1.MaterialCommunityIcons, { name: "send-circle", style: { marginBottom: 5, marginRight: 5 }, size: 32, color: "#2e64e5" }))));
590
+ };
591
+ const renderMessageText = (props) => {
592
+ var _a, _b;
593
+ const { currentMessage } = props;
594
+ if (currentMessage.type !== 'ALERT') {
595
+ return react_1.default.createElement(react_native_gifted_chat_1.MessageText, Object.assign({}, props));
596
+ }
597
+ else {
598
+ const { attachment } = (_a = currentMessage === null || currentMessage === void 0 ? void 0 : currentMessage.propsConfiguration) === null || _a === void 0 ? void 0 : _a.contents;
599
+ let action = '';
600
+ let actionId = '';
601
+ if (attachment.callToAction.link.includes('my-reservation-details')) {
602
+ action = 'm-reservation-detail';
603
+ actionId = (_b = attachment === null || attachment === void 0 ? void 0 : attachment.callToAction) === null || _b === void 0 ? void 0 : _b.link.split('/').pop();
604
+ }
605
+ return (react_1.default.createElement(native_base_1.Box, null,
606
+ attachment.callToAction ? (react_1.default.createElement(native_base_1.Button, { variant: 'outline', size: 'sm', borderColor: color, onPress: () => navigation.navigate(action, { reservationId: actionId }) },
607
+ react_1.default.createElement(native_base_1.Text, { color: color }, attachment.callToAction.title))) : null,
608
+ react_1.default.createElement(react_native_gifted_chat_1.MessageText, Object.assign({}, props))));
609
+ }
610
+ };
611
+ const renderActions = (props) => {
612
+ return (react_1.default.createElement(react_native_gifted_chat_1.Actions, Object.assign({}, props, { icon: () => react_1.default.createElement(native_base_1.Icon, { as: vector_icons_1.Ionicons, name: 'image', size: 'sm', onPress: onSelectImages }) })));
613
+ };
614
+ const renderAccessory = (props) => {
615
+ return (react_1.default.createElement(native_base_1.Box, null, selectedImage !== '' ? (react_1.default.createElement(native_base_1.Image, { ml: 3, key: selectedImage, alt: 'image', source: { uri: selectedImage }, size: 'xs' })) : null));
616
+ };
617
+ return (react_1.default.createElement(react_native_gifted_chat_1.GiftedChat, { wrapInSafeArea: false, renderLoading: () => react_1.default.createElement(native_base_1.Spinner, null), messages: messageList, onSend: (messages) => {
618
+ handleSend(messages[0].text, files);
619
+ }, scrollToBottom: true, user: {
620
+ _id: (currentUser === null || currentUser === void 0 ? void 0 : currentUser.id) || '',
621
+ }, isLoadingEarlier: true, isTyping: true, alwaysShowSend: true, infiniteScroll: true, renderSend: renderSend, loadEarlier: true, renderMessageText: renderMessageText, minInputToolbarHeight: 50, renderActions: renderActions, renderAccessory: renderAccessory }));
834
622
  }
835
623
  exports.ConversationView = ConversationView;
836
624
 
@@ -1029,13 +817,13 @@ module.exports = require("@react-navigation/stack");
1029
817
 
1030
818
  /***/ }),
1031
819
 
1032
- /***/ "axios":
1033
- /*!************************!*\
1034
- !*** external "axios" ***!
1035
- \************************/
820
+ /***/ "base-64":
821
+ /*!**************************!*\
822
+ !*** external "base-64" ***!
823
+ \**************************/
1036
824
  /***/ ((module) => {
1037
825
 
1038
- module.exports = require("axios");
826
+ module.exports = require("base-64");
1039
827
 
1040
828
  /***/ }),
1041
829
 
@@ -1099,23 +887,13 @@ module.exports = require("react");
1099
887
 
1100
888
  /***/ }),
1101
889
 
1102
- /***/ "react-native":
1103
- /*!*******************************!*\
1104
- !*** external "react-native" ***!
1105
- \*******************************/
1106
- /***/ ((module) => {
1107
-
1108
- module.exports = require("react-native");
1109
-
1110
- /***/ }),
1111
-
1112
- /***/ "react-native-keyboard-aware-scroll-view":
1113
- /*!**********************************************************!*\
1114
- !*** external "react-native-keyboard-aware-scroll-view" ***!
1115
- \**********************************************************/
890
+ /***/ "react-native-gifted-chat":
891
+ /*!*******************************************!*\
892
+ !*** external "react-native-gifted-chat" ***!
893
+ \*******************************************/
1116
894
  /***/ ((module) => {
1117
895
 
1118
- module.exports = require("react-native-keyboard-aware-scroll-view");
896
+ module.exports = require("react-native-gifted-chat");
1119
897
 
1120
898
  /***/ }),
1121
899