@messenger-box/platform-mobile 0.0.1-alpha.218 → 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,22 @@
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
+
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)
15
+
16
+ **Note:** Version bump only for package @messenger-box/platform-mobile
17
+
18
+
19
+
20
+
21
+
6
22
  ## [0.0.1-alpha.218](https://github.com/cdmbase/messenger-box/compare/v0.0.1-alpha.217...v0.0.1-alpha.218) (2022-09-09)
7
23
 
8
24
 
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":
@@ -316,6 +252,7 @@ const react_1 = __importStar(__webpack_require__(/*! react */ "react"));
316
252
  const native_base_1 = __webpack_require__(/*! native-base */ "native-base");
317
253
  const date_fns_1 = __webpack_require__(/*! date-fns */ "date-fns");
318
254
  const platform_client_1 = __webpack_require__(/*! @messenger-box/platform-client */ "@messenger-box/platform-client");
255
+ const lodash_1 = __webpack_require__(/*! lodash */ "lodash");
319
256
  const createdAtText = (value) => {
320
257
  if (!value)
321
258
  return '';
@@ -332,7 +269,7 @@ const createdAtText = (value) => {
332
269
  * - Add ability to get property information: name, logo
333
270
  */
334
271
  const DialogsListItem = function DialogsListItem({ currentUser, users, selectedChannelId, channel, onOpen, }) {
335
- var _a, _b;
272
+ var _a;
336
273
  const { data: messagesQuery, loading: messageLoading } = (0, platform_client_1.useMessagesQuery)({
337
274
  variables: {
338
275
  channelId: (_a = channel === null || channel === void 0 ? void 0 : channel.id) === null || _a === void 0 ? void 0 : _a.toString(),
@@ -365,9 +302,19 @@ const DialogsListItem = function DialogsListItem({ currentUser, users, selectedC
365
302
  const channelType = (0, react_1.useMemo)(() => {
366
303
  return channel === null || channel === void 0 ? void 0 : channel.type;
367
304
  }, [channel]);
368
- return (react_1.default.createElement(native_base_1.Pressable, { onPress: () => (channel === null || channel === void 0 ? void 0 : channel.id) !== selectedChannelId && onOpen(channel === null || channel === void 0 ? void 0 : channel.id), borderWidth: '1', borderRadius: 10, borderColor: 'gray.200', shadow: '6' },
305
+ return (react_1.default.createElement(native_base_1.Pressable, { onPress: () => (channel === null || channel === void 0 ? void 0 : channel.id) !== selectedChannelId && onOpen(channel === null || channel === void 0 ? void 0 : channel.id), borderWidth: '1', borderRadius: 10, borderColor: 'gray.200', _dark: {
306
+ borderColor: 'coolGray.600',
307
+ backgroundColor: 'gray.700',
308
+ }, _web: {
309
+ shadow: 2,
310
+ borderWidth: 0,
311
+ }, _light: {
312
+ backgroundColor: 'gray.50',
313
+ } },
369
314
  react_1.default.createElement(native_base_1.HStack, { m: 3, space: 2 },
370
- react_1.default.createElement(native_base_1.Image, { alt: 'image', width: 16, borderRadius: 10, height: 16, source: { uri: ((_b = userQuery === null || userQuery === void 0 ? void 0 : userQuery.getUserAccount) === null || _b === void 0 ? void 0 : _b.picture) || 'https://picsum.photos/220' } }),
315
+ react_1.default.createElement(native_base_1.Avatar, { size: 'lg', source: {
316
+ uri: userQuery === null || userQuery === void 0 ? void 0 : userQuery.getUserAccount.picture,
317
+ } }, (0, lodash_1.startCase)(userQuery === null || userQuery === void 0 ? void 0 : userQuery.getUserAccount.username.charAt(0))),
371
318
  react_1.default.createElement(native_base_1.Box, { width: '80%' },
372
319
  react_1.default.createElement(native_base_1.HStack, { alignItems: "center", justifyContent: "space-between" },
373
320
  react_1.default.createElement(native_base_1.Text, { fontSize: "xs", color: "red.500" }, channelType),
@@ -378,228 +325,6 @@ const DialogsListItem = function DialogsListItem({ currentUser, users, selectedC
378
325
  exports.DialogsListItem = DialogsListItem;
379
326
 
380
327
 
381
- /***/ }),
382
-
383
- /***/ "./src/screens/inbox/components/FilesList.tsx":
384
- /*!****************************************************!*\
385
- !*** ./src/screens/inbox/components/FilesList.tsx ***!
386
- \****************************************************/
387
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
388
-
389
-
390
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
391
- if (k2 === undefined) k2 = k;
392
- var desc = Object.getOwnPropertyDescriptor(m, k);
393
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
394
- desc = { enumerable: true, get: function() { return m[k]; } };
395
- }
396
- Object.defineProperty(o, k2, desc);
397
- }) : (function(o, m, k, k2) {
398
- if (k2 === undefined) k2 = k;
399
- o[k2] = m[k];
400
- }));
401
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
402
- Object.defineProperty(o, "default", { enumerable: true, value: v });
403
- }) : function(o, v) {
404
- o["default"] = v;
405
- });
406
- var __importStar = (this && this.__importStar) || function (mod) {
407
- if (mod && mod.__esModule) return mod;
408
- var result = {};
409
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
410
- __setModuleDefault(result, mod);
411
- return result;
412
- };
413
- Object.defineProperty(exports, "__esModule", ({ value: true }));
414
- exports.FilesList = void 0;
415
- const react_1 = __importStar(__webpack_require__(/*! react */ "react"));
416
- const react_native_1 = __webpack_require__(/*! react-native */ "react-native");
417
- const native_base_1 = __webpack_require__(/*! native-base */ "native-base");
418
- function FilesList({ files, uploaded = false }) {
419
- return (react_1.default.createElement(native_base_1.HStack, { space: 2, mt: 2 },
420
- react_1.default.createElement(FilesList.FilesView, { files: files, uploaded: uploaded })));
421
- }
422
- exports.FilesList = FilesList;
423
- FilesList.FilesView = function MessageItemFiles({ files = [], uploaded }) {
424
- if (!files.length) {
425
- return null;
426
- }
427
- return (react_1.default.createElement(native_base_1.Box, null, files.map((file) => {
428
- const url = (0, react_1.useMemo)(() => (uploaded ? file.url : react_native_1.Image.resolveAssetSource(file).uri), [file, uploaded]);
429
- return (react_1.default.createElement(native_base_1.Image, { alt: 'image', mr: 2, height: "16", width: "16", source: {
430
- uri: url,
431
- scale: 0.2,
432
- } }));
433
- })));
434
- };
435
-
436
-
437
- /***/ }),
438
-
439
- /***/ "./src/screens/inbox/components/MessageInput.tsx":
440
- /*!*******************************************************!*\
441
- !*** ./src/screens/inbox/components/MessageInput.tsx ***!
442
- \*******************************************************/
443
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
444
-
445
-
446
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
447
- if (k2 === undefined) k2 = k;
448
- var desc = Object.getOwnPropertyDescriptor(m, k);
449
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
450
- desc = { enumerable: true, get: function() { return m[k]; } };
451
- }
452
- Object.defineProperty(o, k2, desc);
453
- }) : (function(o, m, k, k2) {
454
- if (k2 === undefined) k2 = k;
455
- o[k2] = m[k];
456
- }));
457
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
458
- Object.defineProperty(o, "default", { enumerable: true, value: v });
459
- }) : function(o, v) {
460
- o["default"] = v;
461
- });
462
- var __importStar = (this && this.__importStar) || function (mod) {
463
- if (mod && mod.__esModule) return mod;
464
- var result = {};
465
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
466
- __setModuleDefault(result, mod);
467
- return result;
468
- };
469
- var __importDefault = (this && this.__importDefault) || function (mod) {
470
- return (mod && mod.__esModule) ? mod : { "default": mod };
471
- };
472
- Object.defineProperty(exports, "__esModule", ({ value: true }));
473
- exports.MessageInput = void 0;
474
- const native_base_1 = __webpack_require__(/*! native-base */ "native-base");
475
- const vector_icons_1 = __webpack_require__(/*! @expo/vector-icons */ "@expo/vector-icons");
476
- const ImagePicker = __importStar(__webpack_require__(/*! expo-image-picker */ "expo-image-picker"));
477
- const react_native_keyboard_aware_scroll_view_1 = __webpack_require__(/*! react-native-keyboard-aware-scroll-view */ "react-native-keyboard-aware-scroll-view");
478
- const react_1 = __importStar(__webpack_require__(/*! react */ "react"));
479
- const FilesList_1 = __webpack_require__(/*! ./FilesList */ "./src/screens/inbox/components/FilesList.tsx");
480
- const axios_1 = __importDefault(__webpack_require__(/*! axios */ "axios"));
481
- exports.MessageInput = (0, react_1.forwardRef)(function MessageInput({ handleSend: handleSendProp }) {
482
- const [message, setMessage] = (0, react_1.useState)('');
483
- const [sending, setSending] = (0, react_1.useState)(false);
484
- const [files, setFiles] = (0, react_1.useState)([]);
485
- const handleSend = (0, react_1.useCallback)(() => {
486
- setSending(true);
487
- handleSendProp(message, files)
488
- .then(() => {
489
- setMessage('');
490
- setFiles([]);
491
- })
492
- .finally(() => setSending(false));
493
- }, [files, handleSendProp, message]);
494
- const onSelectImages = async () => {
495
- // No permissions request is necessary for launching the image library
496
- await ImagePicker.requestMediaLibraryPermissionsAsync();
497
- let result = await ImagePicker.launchImageLibraryAsync({
498
- mediaTypes: ImagePicker.MediaTypeOptions.Images,
499
- allowsEditing: true,
500
- aspect: [4, 3],
501
- quality: 1,
502
- });
503
- if (!result.cancelled) {
504
- axios_1.default
505
- .get(result.uri, {
506
- responseType: 'blob',
507
- })
508
- .then((res) => {
509
- let file = res.data._data;
510
- file.uri = result.uri;
511
- setFiles(files.concat(file));
512
- });
513
- }
514
- };
515
- return (react_1.default.createElement(native_base_1.VStack, { position: 'absolute', bottom: 0, left: 0, right: 0, bg: 'white', marginTop: 3, alignContent: "center", p: 5 },
516
- react_1.default.createElement(react_native_keyboard_aware_scroll_view_1.KeyboardAwareScrollView, { contentContainerStyle: { flex: 1 } },
517
- react_1.default.createElement(native_base_1.View, null,
518
- react_1.default.createElement(native_base_1.TextField, { placeholder: "Message...", borderColor: "gray.400", value: sending ? '' : message, onChange: (e) => setMessage(e.nativeEvent.text), fontSize: 14 })),
519
- files.length ? (react_1.default.createElement(native_base_1.View, { mb: 4, flexDirection: "row" },
520
- react_1.default.createElement(FilesList_1.FilesList, { files: files }))) : null,
521
- react_1.default.createElement(native_base_1.HStack, { alignContent: "center", justifyContent: "space-between" },
522
- react_1.default.createElement(vector_icons_1.FontAwesome, { onPress: onSelectImages, size: 20, style: { marginRight: 5 }, name: "file-image-o" }),
523
- react_1.default.createElement(vector_icons_1.FontAwesome, { onPress: handleSend, size: 20, name: "send" })))));
524
- });
525
-
526
-
527
- /***/ }),
528
-
529
- /***/ "./src/screens/inbox/components/MessageItem.tsx":
530
- /*!******************************************************!*\
531
- !*** ./src/screens/inbox/components/MessageItem.tsx ***!
532
- \******************************************************/
533
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
534
-
535
-
536
- var __importDefault = (this && this.__importDefault) || function (mod) {
537
- return (mod && mod.__esModule) ? mod : { "default": mod };
538
- };
539
- Object.defineProperty(exports, "__esModule", ({ value: true }));
540
- exports.MessageItem = void 0;
541
- const react_1 = __importDefault(__webpack_require__(/*! react */ "react"));
542
- const native_base_1 = __webpack_require__(/*! native-base */ "native-base");
543
- const vector_icons_1 = __webpack_require__(/*! @expo/vector-icons */ "@expo/vector-icons");
544
- const native_1 = __webpack_require__(/*! @react-navigation/native */ "@react-navigation/native");
545
- const PlainMessage_1 = __webpack_require__(/*! ./PlainMessage */ "./src/screens/inbox/components/PlainMessage.tsx");
546
- const CommonMessage_1 = __webpack_require__(/*! ./CommonMessage */ "./src/screens/inbox/components/CommonMessage.tsx");
547
- function MessageItem({ message, channelId, currentUser, totalCount, onOpen, }) {
548
- var _a, _b;
549
- if (typeof message === 'string') {
550
- return react_1.default.createElement(PlainMessage_1.PlainMessage, { message: message });
551
- }
552
- const { type } = message;
553
- if (!type || type === "Simple" /* IPostTypeEnum.Simple */) {
554
- return react_1.default.createElement(CommonMessage_1.CommonMessage, { message: message, currentUser: currentUser });
555
- }
556
- if (type === "ALERT" /* IPostTypeEnum.ALERT */) {
557
- const { attachment } = (_a = message === null || message === void 0 ? void 0 : message.propsConfiguration) === null || _a === void 0 ? void 0 : _a.contents;
558
- let action = '';
559
- let actionId = '';
560
- const icon = 'information-circle';
561
- if (attachment.callToAction.link.includes('my-reservation-details')) {
562
- action = 'm-reservation-detail';
563
- actionId = (_b = attachment === null || attachment === void 0 ? void 0 : attachment.callToAction) === null || _b === void 0 ? void 0 : _b.link.split('/').pop();
564
- }
565
- const color = (0, native_base_1.useColorModeValue)('white', 'gray.800');
566
- const bgColor = (0, native_base_1.useColorModeValue)('gray.800', 'white');
567
- const navigation = (0, native_1.useNavigation)();
568
- return (react_1.default.createElement(native_base_1.Box, { borderWidth: 1, borderRadius: 20, backgroundColor: bgColor, my: 2, p: 3, opacity: 0.7 },
569
- react_1.default.createElement(native_base_1.HStack, { space: 2, alignItems: 'center' },
570
- react_1.default.createElement(native_base_1.Icon, { as: vector_icons_1.Ionicons, name: icon, color: 'white' }),
571
- react_1.default.createElement(native_base_1.Text, { color: color, width: '45%', numberOfLines: 3 }, attachment === null || attachment === void 0 ? void 0 : attachment.title),
572
- attachment.callToAction ? (react_1.default.createElement(native_base_1.Button, { variant: 'outline', size: 'sm', borderColor: color, onPress: () => navigation.navigate(action, { reservationId: actionId }) },
573
- react_1.default.createElement(native_base_1.Text, { color: color }, attachment.callToAction.title))) : null)));
574
- }
575
- return null;
576
- }
577
- exports.MessageItem = MessageItem;
578
-
579
-
580
- /***/ }),
581
-
582
- /***/ "./src/screens/inbox/components/PlainMessage.tsx":
583
- /*!*******************************************************!*\
584
- !*** ./src/screens/inbox/components/PlainMessage.tsx ***!
585
- \*******************************************************/
586
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
587
-
588
-
589
- var __importDefault = (this && this.__importDefault) || function (mod) {
590
- return (mod && mod.__esModule) ? mod : { "default": mod };
591
- };
592
- Object.defineProperty(exports, "__esModule", ({ value: true }));
593
- exports.PlainMessage = void 0;
594
- const react_1 = __importDefault(__webpack_require__(/*! react */ "react"));
595
- const native_base_1 = __webpack_require__(/*! native-base */ "native-base");
596
- const PlainMessage = ({ message }) => {
597
- return (react_1.default.createElement(native_base_1.Flex, { w: "full", justifyContent: 'center', mb: "7" },
598
- react_1.default.createElement(native_base_1.Text, { fontSize: "14px", fontWeight: 'bold' }, message)));
599
- };
600
- exports.PlainMessage = PlainMessage;
601
-
602
-
603
328
  /***/ }),
604
329
 
605
330
  /***/ "./src/screens/inbox/config/config.ts":
@@ -668,24 +393,29 @@ var __importStar = (this && this.__importStar) || function (mod) {
668
393
  Object.defineProperty(exports, "__esModule", ({ value: true }));
669
394
  exports.ConversationView = void 0;
670
395
  const react_1 = __importStar(__webpack_require__(/*! react */ "react"));
671
- const date_fns_1 = __webpack_require__(/*! date-fns */ "date-fns");
672
396
  const native_base_1 = __webpack_require__(/*! native-base */ "native-base");
397
+ const native_1 = __webpack_require__(/*! @react-navigation/native */ "@react-navigation/native");
673
398
  const react_redux_1 = __webpack_require__(/*! react-redux */ "react-redux");
674
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");
675
404
  const platform_client_1 = __webpack_require__(/*! @messenger-box/platform-client */ "@messenger-box/platform-client");
676
- const MessageItem_1 = __webpack_require__(/*! ../components/MessageItem */ "./src/screens/inbox/components/MessageItem.tsx");
677
- const MessageInput_1 = __webpack_require__(/*! ../components/MessageInput */ "./src/screens/inbox/components/MessageInput.tsx");
678
405
  const config_1 = __webpack_require__(/*! ../config */ "./src/screens/inbox/config/index.ts");
679
406
  const user_auth0_client_1 = __webpack_require__(/*! @adminide-stack/user-auth0-client */ "@adminide-stack/user-auth0-client");
680
407
  const { MESSAGES_PER_PAGE } = config_1.config;
681
408
  function ConversationView({ channelId }) {
682
- const { onOpen } = (0, native_base_1.useDisclose)();
683
409
  const messageListRef = (0, react_1.useRef)(null);
684
410
  const [channelToTop, setChannelToTop] = (0, react_1.useState)(0);
685
411
  const [channelMessages, setChannelMessages] = (0, react_1.useState)([]);
686
412
  const auth = (0, react_redux_1.useSelector)(user_auth0_client_1.userSelector);
687
413
  const [totalCount, setTotalCount] = (0, react_1.useState)(0);
414
+ const [selectedImage, setImage] = (0, react_1.useState)('');
688
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)([]);
689
419
  const { startUpload } = (0, platform_client_1.useUploadFiles)();
690
420
  const [sendMsg] = (0, platform_client_1.useSendMessagesMutation)();
691
421
  const { data, loading: messageLoading, refetch, } = (0, platform_client_1.useMessagesQuery)({
@@ -710,7 +440,7 @@ function ConversationView({ channelId }) {
710
440
  var _a;
711
441
  if (((_a = data === null || data === void 0 ? void 0 : data.messages) === null || _a === void 0 ? void 0 : _a.data) && (loadingOldMessages || channelMessages.length === 0)) {
712
442
  const { data: messages, totalCount } = data.messages;
713
- setChannelMessages((oldMessages) => (0, lodash_1.uniqBy)([...[...messages].reverse(), ...oldMessages], ({ id }) => id));
443
+ setChannelMessages((oldMessages) => (0, lodash_1.uniqBy)([...messages, ...oldMessages], ({ id }) => id));
714
444
  setTotalCount(totalCount);
715
445
  }
716
446
  }, [data, loadingOldMessages, channelMessages]);
@@ -745,6 +475,28 @@ function ConversationView({ channelId }) {
745
475
  }
746
476
  }
747
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
+ };
748
500
  const handleSend = (0, react_1.useCallback)(async (message, files) => {
749
501
  var _a;
750
502
  if (!(message && channelId)) {
@@ -780,6 +532,9 @@ function ConversationView({ channelId }) {
780
532
  },
781
533
  });
782
534
  const uploadedFiles = uploadResponse.data;
535
+ if (uploadResponse.data) {
536
+ setFiles([]);
537
+ }
783
538
  setChannelMessages((messages) => messages.map((message) => {
784
539
  if (message.id === postId) {
785
540
  return Object.assign(Object.assign({}, message), { files: {
@@ -794,27 +549,76 @@ function ConversationView({ channelId }) {
794
549
  const messageList = (0, react_1.useMemo)(() => {
795
550
  let currentDate = '';
796
551
  let res = [];
797
- (0, lodash_1.orderBy)(channelMessages, ['createdAt'], ['asc']).map((msg) => {
798
- const date = new Date(msg.createdAt);
799
- let msgDate;
800
- if ((0, date_fns_1.isToday)(date))
801
- msgDate = 'Today';
802
- else if ((0, date_fns_1.isYesterday)(date))
803
- msgDate = 'Yesterday';
804
- else
805
- msgDate = (0, date_fns_1.format)(new Date(msg.createdAt), 'eee, do MMMM');
806
- if (msgDate !== currentDate) {
807
- res.push(msgDate);
808
- currentDate = msgDate;
809
- }
810
- res.push(msg);
811
- });
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
+ }
812
584
  return res;
813
585
  }, [channelMessages]);
814
- return (react_1.default.createElement(native_base_1.Box, { flex: 1, position: 'relative' },
815
- 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 },
816
- react_1.default.createElement(MessageItem_1.MessageItem, { channelId: channelId, currentUser: currentUser, message: message, totalCount: totalCount, onOpen: onOpen }))))),
817
- 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 }));
818
622
  }
819
623
  exports.ConversationView = ConversationView;
820
624
 
@@ -1013,13 +817,13 @@ module.exports = require("@react-navigation/stack");
1013
817
 
1014
818
  /***/ }),
1015
819
 
1016
- /***/ "axios":
1017
- /*!************************!*\
1018
- !*** external "axios" ***!
1019
- \************************/
820
+ /***/ "base-64":
821
+ /*!**************************!*\
822
+ !*** external "base-64" ***!
823
+ \**************************/
1020
824
  /***/ ((module) => {
1021
825
 
1022
- module.exports = require("axios");
826
+ module.exports = require("base-64");
1023
827
 
1024
828
  /***/ }),
1025
829
 
@@ -1083,23 +887,13 @@ module.exports = require("react");
1083
887
 
1084
888
  /***/ }),
1085
889
 
1086
- /***/ "react-native":
1087
- /*!*******************************!*\
1088
- !*** external "react-native" ***!
1089
- \*******************************/
1090
- /***/ ((module) => {
1091
-
1092
- module.exports = require("react-native");
1093
-
1094
- /***/ }),
1095
-
1096
- /***/ "react-native-keyboard-aware-scroll-view":
1097
- /*!**********************************************************!*\
1098
- !*** external "react-native-keyboard-aware-scroll-view" ***!
1099
- \**********************************************************/
890
+ /***/ "react-native-gifted-chat":
891
+ /*!*******************************************!*\
892
+ !*** external "react-native-gifted-chat" ***!
893
+ \*******************************************/
1100
894
  /***/ ((module) => {
1101
895
 
1102
- module.exports = require("react-native-keyboard-aware-scroll-view");
896
+ module.exports = require("react-native-gifted-chat");
1103
897
 
1104
898
  /***/ }),
1105
899