@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 +16 -0
- package/lib/index.js +127 -333
- package/lib/index.js.map +1 -1
- package/lib/screens/inbox/containers/ConversationView.d.ts +9 -0
- package/package.json +5 -3
- package/src/screens/inbox/components/DialogsListItem.tsx +21 -9
- package/src/screens/inbox/containers/ConversationView.tsx +184 -46
- package/lib/screens/inbox/components/CommonMessage.d.ts +0 -8
- package/lib/screens/inbox/components/FilesList.d.ts +0 -13
- package/lib/screens/inbox/components/MessageInput.d.ts +0 -7
- package/lib/screens/inbox/components/MessageItem.d.ts +0 -18
- package/lib/screens/inbox/components/PlainMessage.d.ts +0 -5
- package/src/screens/inbox/components/CommonMessage.tsx +0 -52
- package/src/screens/inbox/components/FilesList.tsx +0 -41
- package/src/screens/inbox/components/MessageInput.tsx +0 -85
- package/src/screens/inbox/components/MessageItem.tsx +0 -80
- package/src/screens/inbox/components/PlainMessage.tsx +0 -16
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
|
|
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',
|
|
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.
|
|
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)([...
|
|
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
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
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
|
-
|
|
815
|
-
react_1.default.createElement(
|
|
816
|
-
react_1.default.createElement(
|
|
817
|
-
|
|
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
|
-
/***/ "
|
|
1017
|
-
|
|
1018
|
-
!*** external "
|
|
1019
|
-
|
|
820
|
+
/***/ "base-64":
|
|
821
|
+
/*!**************************!*\
|
|
822
|
+
!*** external "base-64" ***!
|
|
823
|
+
\**************************/
|
|
1020
824
|
/***/ ((module) => {
|
|
1021
825
|
|
|
1022
|
-
module.exports = require("
|
|
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-
|
|
896
|
+
module.exports = require("react-native-gifted-chat");
|
|
1103
897
|
|
|
1104
898
|
/***/ }),
|
|
1105
899
|
|