@messenger-box/platform-mobile 10.0.3-alpha.0 → 10.0.3-alpha.5
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 +4 -0
- package/lib/module.js +1 -1
- package/lib/screens/inbox/DialogMessages.js +1 -1
- package/lib/screens/inbox/DialogMessages.js.map +1 -1
- package/lib/screens/inbox/DialogThreadMessages.js +1 -1
- package/lib/screens/inbox/DialogThreadMessages.js.map +1 -1
- package/lib/screens/inbox/DialogThreads.js.map +1 -1
- package/lib/screens/inbox/components/DialogsListItem.js +5 -1
- package/lib/screens/inbox/components/DialogsListItem.js.map +1 -1
- package/lib/screens/inbox/components/ServiceDialogsListItem.js.map +1 -1
- package/lib/screens/inbox/components/SlackMessageContainer/ImageViewerModal.js +1 -1
- package/lib/screens/inbox/components/SlackMessageContainer/SlackBubble.js +13 -4
- package/lib/screens/inbox/components/SlackMessageContainer/SlackBubble.js.map +1 -1
- package/lib/screens/inbox/components/SlackMessageContainer/SlackMessage.js +4 -2
- package/lib/screens/inbox/components/SlackMessageContainer/SlackMessage.js.map +1 -1
- package/lib/screens/inbox/components/ThreadsViewItem.js.map +1 -1
- package/lib/screens/inbox/config/config.js +1 -1
- package/lib/screens/inbox/containers/ConversationView.js +2 -2
- package/lib/screens/inbox/containers/ConversationView.js.map +1 -1
- package/lib/screens/inbox/containers/Dialogs.js.map +1 -1
- package/lib/screens/inbox/containers/ThreadConversationView.js +2 -2
- package/lib/screens/inbox/containers/ThreadConversationView.js.map +1 -1
- package/lib/screens/inbox/containers/ThreadsView.js +1 -1
- package/lib/screens/inbox/containers/ThreadsView.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React__default,{useState,useRef,useEffect,useCallback,useMemo}from'react';import {Button,Spinner,VStack,HStack,Avatar,AvatarFallbackText,AvatarImage,Box,Text,Center,ButtonText
|
|
1
|
+
import React__default,{useState,useRef,useEffect,useCallback,useMemo}from'react';import {Button,Spinner,VStack,HStack,Avatar,AvatarFallbackText,AvatarImage,Box,Text,Center,Image,ButtonText}from'@admin-layout/gluestack-ui-mobile';import {Platform}from'react-native';import {useRoute,useNavigation,useFocusEffect}from'@react-navigation/native';import {useSelector}from'react-redux';import {uniqBy,orderBy,startCase}from'lodash-es';import*as ImagePicker from'expo-image-picker';import {encode}from'base-64';import {MaterialIcons,Ionicons,MaterialCommunityIcons}from'@expo/vector-icons';import {GiftedChat,Actions,MessageText,Send}from'react-native-gifted-chat';import {PreDefinedRole}from'common';import {useCreatePostThreadMutation,useSendExpoNotificationOnPostMutation,useGetPostThreadLazyQuery,OnThreadChatMessageAddedDocument}from'common/lib/generated/generated.js';import {useUploadFilesNative}from'@messenger-box/platform-client';import {objectId}from'@messenger-box/core';import {format,isToday,isYesterday}from'date-fns';import {userSelector}from'@adminide-stack/user-auth0-client';import {config}from'../config/config.js';import Message from'../components/SlackMessageContainer/SlackMessage.js';import ImageViewerModal from'../components/SlackMessageContainer/ImageViewerModal.js';import CachedImage from'../components/CachedImage/index.js';var __defProp = Object.defineProperty;
|
|
2
2
|
var __defProps = Object.defineProperties;
|
|
3
3
|
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
4
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
@@ -122,7 +122,7 @@ const ThreadConversationViewComponent = ({
|
|
|
122
122
|
const threadReplies = (_b2 = threads == null ? void 0 : threads.replies) != null ? _b2 : [];
|
|
123
123
|
const messeageTotalCount = (_c2 = threads == null ? void 0 : threads.replyCount) != null ? _c2 : 0;
|
|
124
124
|
const messages = [threadPost2, ...threadReplies];
|
|
125
|
-
if (messages.length > 0 && messeageTotalCount > totalCount || messages.length > 0 && channelMessages.length === 0) {
|
|
125
|
+
if (messages && messages.length > 0 && messeageTotalCount > totalCount || messages && messages.length > 0 && channelMessages.length === 0) {
|
|
126
126
|
setThreadMessages(messages, messeageTotalCount);
|
|
127
127
|
}
|
|
128
128
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadConversationView.js","sources":["../../../../src/screens/inbox/containers/ThreadConversationView.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n Center,\n Avatar,\n AvatarFallbackText,\n AvatarImage,\n Box,\n Button,\n ButtonText,\n VStack,\n HStack,\n Icon,\n Image,\n Spinner,\n Text,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { Platform } from 'react-native';\nimport { useFocusEffect, useNavigation, useRoute } from '@react-navigation/native';\nimport { useSelector } from 'react-redux';\nimport { orderBy, startCase, uniqBy } from 'lodash-es';\nimport * as ImagePicker from 'expo-image-picker';\nimport { encode as atob } from 'base-64';\nimport { Ionicons, MaterialCommunityIcons, MaterialIcons } from '@expo/vector-icons';\nimport { Actions, GiftedChat, IMessage, MessageText, Send } from 'react-native-gifted-chat';\nimport { IPost, IPostThread, PreDefinedRole, IExpoNotificationData, IFileInfo } from 'common';\nimport {\n OnThreadChatMessageAddedDocument as CHAT_MESSAGE_ADDED,\n useCreatePostThreadMutation,\n useOnThreadChatMessageAddedSubscription,\n useSendExpoNotificationOnPostMutation,\n useSendThreadMessageMutation,\n useThreadMessagesLazyQuery,\n useGetPostThreadLazyQuery,\n} from 'common/lib/generated/generated.js';\nimport { useUploadFilesNative } from '@messenger-box/platform-client';\nimport { objectId } from '@messenger-box/core';\nimport { format, isToday, isYesterday } from 'date-fns';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { config } from '../config';\nimport { ImageViewerModal, SlackMessage } from '../components/SlackMessageContainer';\nimport CachedImage from '../components/CachedImage';\n\nconst {\n MESSAGES_PER_PAGE,\n CALL_TO_ACTION_BOX_BGCOLOR,\n CALL_TO_ACTION_PATH,\n CALL_TO_ACTION_BUTTON_BORDERCOLOR,\n CALL_TO_ACTION_TEXT_COLOR,\n} = config;\n\nconst createdAtText = (value: string) => {\n if (!value) return '';\n let date = new Date(value);\n if (isToday(date)) return 'Today';\n if (isYesterday(date)) return 'Yesterday';\n return format(new Date(value), 'MMM dd, yyyy');\n};\n\ninterface IMessageProps extends IMessage {\n type: string;\n propsConfiguration?: any;\n}\n\nexport interface AlertMessageAttachmentsInterface {\n title: string;\n isTitleHtml: boolean;\n icon: string;\n callToAction: {\n title: string;\n link: string;\n };\n}\n\ninterface IThreadSubscriptionHandlerProps {\n subscribeToNewMessages: () => any;\n channelId: string;\n}\n\nconst ThreadConversationViewComponent = ({ channelId, postParentId, isPostParentIdThread, role }: any) => {\n const { params } = useRoute<any>();\n const [channelToTop, setChannelToTop] = useState(0);\n const [channelMessages, setChannelMessages] = useState<any>([]);\n const auth: any = useSelector(userSelector);\n const [totalCount, setTotalCount] = useState<any>(0);\n const [selectedImage, setImage] = useState<string>('');\n const [loadingOldMessages, setLoadingOldMessages] = useState<boolean>(false);\n const [loadEarlierMsg, setLoadEarlierMsg] = useState(false);\n const navigation = useNavigation<any>();\n const [files, setFiles] = useState<File[]>([]);\n const [images, setImages] = useState<ImagePicker.ImagePickerAsset[]>([]);\n const [msg, setMsg] = useState<string>('');\n const [loading, setLoading] = useState(false);\n const [imageLoading, setImageLoading] = useState(false);\n const [expoTokens, setExpoTokens] = useState<any[]>([]);\n const [isShowImageViewer, setImageViewer] = useState<boolean>(false);\n const [imageObject, setImageObject] = useState<any>({});\n const [parentId, setParentId] = useState<any>(postParentId);\n const [postThread, setPostThread] = useState<IPostThread>();\n const { startUpload } = useUploadFilesNative();\n const [threadPost, setThreadPost] = useState<any[]>([]);\n const [isScrollToBottom, setIsScrollToBottom] = useState(false);\n const threadMessageListRef = useRef<any>(null);\n\n // const [sendThreadMessage] = useSendThreadMessageMutation();\n const [sendThreadMessage] = useCreatePostThreadMutation();\n const [sendExpoNotificationOnPostMutation] = useSendExpoNotificationOnPostMutation();\n\n const [\n getThreadMessages,\n { data, loading: threadLoading, fetchMore: fetchMoreMessages, refetch: refetchThreadMessages, subscribeToMore },\n ] = useGetPostThreadLazyQuery({ fetchPolicy: 'cache-and-network' });\n\n useFocusEffect(\n React.useCallback(() => {\n // navigation?.setOptions({ title: params?.title ?? 'Thread' });\n\n navigation.setOptions({\n title: params?.title ?? 'Thread',\n headerLeft: (props: any) => (\n <Button\n bg={'transparent'}\n $pressed-bg=\"$trueGray200\"\n $active-bg={'$trueGray200'}\n onPress={() => navigation.goBack()}\n >\n <MaterialIcons size={20} name=\"arrow-back-ios\" color={'black'} />\n </Button>\n ),\n });\n if (postParentId) {\n refetchThreadMessages({\n channelId: channelId?.toString(),\n role: role?.toString(),\n postParentId: postParentId?.toString(),\n selectedFields: 'id channel post replies replyCount lastReplyAt createdAt updatedAt',\n limit: MESSAGES_PER_PAGE,\n });\n }\n setParentId(postParentId);\n\n return () => {\n setTotalCount(0);\n setChannelMessages([]);\n setThreadPost([]);\n };\n }, [postParentId]),\n );\n\n useEffect(() => {\n //if (parentId && parentId == 0) {\n if (channelId && parentId) {\n getThreadMessages({\n variables: {\n channelId: channelId?.toString(),\n role: role?.toString(),\n postParentId: !parentId || parentId == 0 ? null : parentId?.toString(),\n selectedFields: 'id channel post replies replyCount lastReplyAt createdAt updatedAt',\n limit: MESSAGES_PER_PAGE,\n },\n });\n }\n }, [parentId]);\n\n React.useEffect(() => {\n if (data?.getPostThread) {\n const threads: any = data.getPostThread;\n const threadPost = threads?.post ?? [];\n const threadReplies = threads?.replies ?? [];\n const messeageTotalCount = threads?.replyCount ?? 0;\n const messages = [threadPost, ...threadReplies];\n\n if (\n (messages && messages.length > 0 && messeageTotalCount > totalCount) ||\n (messages && messages.length > 0 && channelMessages.length === 0)\n ) {\n setThreadMessages(messages, messeageTotalCount);\n }\n }\n if (isScrollToBottom && channelMessages) scrollToBottom();\n // scrollToBottom();\n // if (!isPostParentIdThread) {\n // // setTotalCount((pc: any) => pc + threadTotalCount);\n // setChannelMessages((oldMessages: any) => uniqBy([...threadMessage, ...oldMessages], ({ id }) => id));\n // }\n }, [data, channelMessages, loadingOldMessages, totalCount, isPostParentIdThread, isScrollToBottom]);\n\n const setThreadMessages = (messages: any, messagesTotalCount: number) => {\n setChannelMessages((oldMessages: any) => uniqBy([...messages, ...oldMessages], ({ id }) => id));\n setTotalCount(messagesTotalCount);\n };\n\n React.useEffect(() => {\n if (selectedImage) setImageLoading(false);\n }, [selectedImage]);\n\n const scrollToBottom = React.useCallback(() => {\n if (threadMessageListRef?.current) {\n setIsScrollToBottom(false);\n threadMessageListRef.current.scrollTop = threadMessageListRef.current.scrollHeight;\n }\n }, [threadMessageListRef]);\n\n const onFetchOld = useCallback(() => {\n if (totalCount > channelMessages.length && !loadingOldMessages) {\n setLoadEarlierMsg(true);\n fetchMoreMessages({\n variables: {\n channelId: channelId?.toString(),\n role: role?.toString(),\n postParentId: parentId?.toString(),\n selectedFields: 'id channel post replies replyCount lastReplyAt createdAt updatedAt',\n limit: MESSAGES_PER_PAGE,\n skip: channelMessages.length - 1,\n },\n })\n .then((res: any) => {\n if (res?.data?.getPostThread) {\n const threads: any = res?.data?.getPostThread;\n const threadReplies = threads?.replies ?? [];\n const messeageTotalCount = threads?.replyCount ?? 0;\n setThreadMessages(threadReplies, messeageTotalCount);\n }\n })\n .finally(() => {\n setLoadEarlierMsg(false);\n setLoadingOldMessages(false);\n })\n .catch((error: any) => {\n setLoadEarlierMsg(false);\n setLoadingOldMessages(false);\n });\n }\n }, [parentId, channelId, totalCount, channelMessages]);\n\n // const isCloseToTop = ({ layoutMeasurement, contentOffset, contentSize }) => {\n // return contentOffset.y <= 100; // 100px from top\n // };\n\n const isCloseToTop = ({ layoutMeasurement, contentOffset, contentSize }) => {\n const paddingToTop = 60;\n return contentSize.height - layoutMeasurement.height - paddingToTop <= contentOffset.y;\n };\n\n const dataURLtoFile = (dataurl: any, filename: any) => {\n var arr = dataurl.split(','),\n mime = arr[0].match(/:(.*?);/)[1],\n bstr = atob(arr[1]),\n n = bstr.length,\n u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new File([u8arr], filename, { type: mime });\n };\n\n const onSelectImages = async () => {\n setImageLoading(true);\n let imageSource: any = await ImagePicker.launchImageLibraryAsync({\n mediaTypes: ImagePicker.MediaTypeOptions.Images,\n allowsEditing: true,\n aspect: [4, 3],\n quality: 1,\n base64: true,\n });\n if (!imageSource.canceled) {\n const image = 'data:image/jpeg;base64,' + imageSource.assets[0]?.base64;\n setImage(image);\n const file = dataURLtoFile(image, 'inputImage.jpg');\n setFiles((files) => files.concat(file));\n setImages((images) => images.concat(imageSource.assets[0] as ImagePicker.ImagePickerAsset));\n }\n if (imageSource.canceled) setLoading(false);\n };\n\n const handleSend = useCallback(\n async (message: string) => {\n if (!channelId) return;\n if (!message && message != ' ' && images.length == 0) return;\n\n const postId = objectId();\n\n if (images && images.length > 0) {\n setLoading(true);\n const uploadResponse = await startUpload({\n file: images,\n saveUploadedFile: {\n variables: {\n postId,\n },\n },\n createUploadLink: {\n variables: {\n postId,\n },\n },\n });\n if (uploadResponse?.error) setLoading(false);\n const uploadedFiles = uploadResponse.data as unknown as IFileInfo[];\n if (uploadResponse.data) {\n setImage('');\n setFiles([]);\n setImages([]);\n //setLoading(false);\n const files = uploadedFiles?.map((f: any) => f.id) ?? null;\n await sendThreadMessage({\n variables: {\n postId,\n channelId,\n postThreadId: postThread && postThread?.id,\n postParentId: !parentId || parentId == 0 ? null : parentId,\n threadMessageInput: {\n content: message,\n files,\n role,\n },\n },\n update: (cache, { data, errors }: any) => {\n if (!data || errors) {\n setLoading(false);\n return;\n }\n setPostThread(data?.createPostThread?.data);\n const lastMessageId = data?.createPostThread?.lastMessage?.id;\n if (!parentId || parentId == 0) {\n setParentId(data?.createPostThread?.lastMessage?.id);\n }\n\n setChannelToTop(channelToTop + 1);\n setLoading(false);\n setMsg('');\n const msg = message == '' ? 'Send a file' : message;\n sendPushNotification(lastMessageId, channelId, parentId, data?.createPostThread?.data?.id);\n },\n });\n }\n } else {\n setLoading(true);\n await sendThreadMessage({\n variables: {\n channelId,\n postThreadId: postThread && postThread?.id,\n postParentId: !parentId || parentId == 0 ? null : parentId,\n threadMessageInput: {\n content: message,\n role,\n },\n },\n update: (cache, { data, errors }: any) => {\n if (!data || errors) {\n setLoading(false);\n return;\n }\n setPostThread(data?.createPostThread.data);\n const lastMessageId = data?.createPostThread?.lastMessage?.id;\n if (!parentId || parentId == 0) {\n setParentId(data?.createPostThread?.lastMessage?.id);\n }\n setChannelToTop(channelToTop + 1);\n setLoading(false);\n setMsg('');\n\n sendPushNotification(lastMessageId, channelId, parentId, data?.createPostThread?.data?.id);\n },\n });\n }\n },\n [setChannelMessages, channelId, images, parentId, expoTokens],\n );\n\n const sendPushNotification = async (messageId: string, channelId: string, parentId: any, threadId: string) => {\n const notificationData: IExpoNotificationData = {\n url: config.THREAD_MESSEGE_PATH,\n params: { channelId, title: params?.title ?? 'Thread', postParentId: parentId, hideTabBar: true },\n screen: 'DialogThreadMessages',\n thread: { id: threadId },\n other: { sound: Platform.OS === 'android' ? undefined : 'default' },\n };\n if (parentId || parentId == 0) {\n await sendExpoNotificationOnPostMutation({\n variables: {\n postId: messageId?.toString(),\n notificationData,\n },\n });\n }\n };\n\n const messageList = useMemo(() => {\n let currentDate = '';\n let res: any = [];\n const filteredMessages =\n channelMessages && channelMessages?.length > 0 ? uniqBy([...channelMessages], ({ id }: any) => id) : [];\n if (filteredMessages?.length) {\n orderBy(filteredMessages, ['createdAt'], ['desc']).map((msg) => {\n let message: IMessageProps = {\n _id: '',\n text: '',\n createdAt: 0,\n user: {\n _id: '',\n name: '',\n avatar: '',\n },\n type: '',\n };\n const date = new Date(msg.createdAt);\n message._id = msg.id;\n message.text = msg.message;\n message.createdAt = date;\n (message.user = {\n _id: msg?.author?.id ?? auth?.profile?.id,\n name:\n msg?.author?.givenName ??\n auth?.profile?.given_name + ' ' + msg?.author?.familyName ??\n auth?.profile?.family_name,\n avatar: msg?.author?.picture ?? auth?.profile?.picture,\n }),\n (message.image = msg.files?.data[0]?.url),\n (message.sent = msg?.isDelivered),\n (message.received = msg?.isRead);\n message.type = msg?.type;\n message.propsConfiguration = msg?.propsConfiguration;\n res.push(message);\n });\n }\n return res?.length > 0 ? uniqBy([...res], ({ _id }: any) => _id) : [];\n //return res;\n }, [channelMessages]);\n\n const renderSend = (props) => {\n return (\n <Send {...props}>\n <Box>\n <MaterialCommunityIcons\n name=\"send-circle\"\n style={{ marginBottom: 5, marginRight: 5 }}\n size={32}\n color=\"#2e64e5\"\n />\n </Box>\n </Send>\n );\n };\n\n const renderMessageText = (props: any) => {\n const { currentMessage } = props;\n if (currentMessage.type === 'ALERT') {\n const attachment = currentMessage?.propsConfiguration?.contents?.attachment;\n let action: string = '';\n let actionId: any = '';\n let params: any = {};\n if (attachment?.callToAction?.extraParams) {\n const extraParams: any = attachment?.callToAction?.extraParams;\n const route: any = extraParams?.route ?? null;\n let path: any = null;\n let param: any = null;\n if (role && role == PreDefinedRole.Guest) {\n path = route?.guest?.name ? route?.guest?.name ?? null : null;\n param = route?.guest?.params ? route?.guest?.params ?? null : null;\n } else if (role && role == PreDefinedRole.Owner) {\n path = route?.host?.name ? route?.host?.name ?? null : null;\n param = route?.host?.params ? route?.host?.params ?? null : null;\n } else {\n path = route?.host?.name ? route?.host?.name ?? null : null;\n param = route?.host?.params ? route?.host?.params ?? null : null;\n }\n\n action = path;\n params = { ...param };\n } else if (attachment?.callToAction?.link) {\n action = CALL_TO_ACTION_PATH;\n actionId = attachment?.callToAction?.link.split('/').pop();\n params = { reservationId: actionId };\n }\n\n // if (attachment?.callToAction?.link?.includes('my-reservation-details')) {\n // action = CALL_TO_ACTION_PATH;\n // actionId = attachment?.callToAction?.link.split('/').pop();\n // }\n\n return (\n <>\n {attachment?.callToAction && action ? (\n <Box bg={CALL_TO_ACTION_BOX_BGCOLOR} borderRadius={15} pb={2}>\n <Button\n variant={'outline'}\n size={'sm'}\n borderColor={CALL_TO_ACTION_BUTTON_BORDERCOLOR}\n onPress={() => action && params && navigation.navigate(action, params)}\n //onPress={() => navigation.navigate(action, { reservationId: actionId })}\n >\n <ButtonText color={CALL_TO_ACTION_TEXT_COLOR}>\n {attachment.callToAction.title}\n </ButtonText>\n </Button>\n <MessageText\n {...props}\n textStyle={{\n left: { marginLeft: 5, color: CALL_TO_ACTION_TEXT_COLOR, paddingHorizontal: 2 },\n }}\n />\n </Box>\n ) : (\n <MessageText {...props} textStyle={{ left: { marginLeft: 5 } }} />\n )}\n {/* <MessageText\n {...props}\n textStyle={{ left: { marginLeft: 5, color: CALL_TO_ACTION_TEXT_COLOR, paddingHorizontal: 2 } }}\n /> */}\n </>\n );\n } else {\n return <MessageText {...props} textStyle={{ left: { marginLeft: 5 } }} />;\n }\n };\n\n const renderActions = (props) => {\n return (\n <Actions\n {...props}\n icon={() => <Ionicons name={'image'} size={30} color={'black'} onPress={onSelectImages} />}\n />\n );\n };\n\n const renderAccessory = (props) => {\n return (\n <Box>\n {selectedImage !== '' ? (\n <HStack alignItems={'center'}>\n <Image\n ml={'$3'}\n key={selectedImage}\n alt={'image'}\n source={{ uri: selectedImage }}\n size={'xs'}\n />\n <Button\n variant={'solid'}\n //bg={'$secondary400'}\n bg={'transparent'}\n onPress={() => {\n setFiles([]);\n setImage('');\n setImages([]);\n }}\n >\n <ButtonText color={'$black'}>Cancel</ButtonText>\n </Button>\n </HStack>\n ) : null}\n </Box>\n );\n };\n\n const setImageViewerObject = (obj: any, v: boolean) => {\n setImageObject(obj);\n setImageViewer(v);\n };\n\n const modalContent = React.useMemo(() => {\n if (!imageObject) return <></>;\n const { image, _id } = imageObject;\n return (\n <CachedImage\n style={{ width: '100%', height: '100%' }}\n resizeMode={'cover'}\n // cacheKey={`${_id}-conversation-modal-image-key`}\n cacheKey={`${_id}-slack-bubble-imageKey`}\n source={{\n uri: image,\n //headers: `Authorization: Bearer ${token}`,\n expiresIn: 86400,\n }}\n alt={'image'}\n />\n );\n }, [imageObject]);\n\n const renderMessage = (props: any) => {\n return <SlackMessage {...props} isShowImageViewer={isShowImageViewer} setImageViewer={setImageViewerObject} />;\n };\n\n let onScroll = false;\n\n const onMomentumScrollBegin = ({ nativeEvent }: any) => {\n onScroll = true;\n console.log('scroll top');\n if (!loadingOldMessages && isCloseToTop(nativeEvent) && totalCount > channelMessages?.length) {\n onFetchOld();\n }\n };\n\n const onEndReached = () => {\n console.log('on end reached');\n if (!onScroll) return;\n // load messages, show ActivityIndicator\n onScroll = false;\n // setLoadingOldMessages(true);\n };\n\n return (\n <>\n {(loadingOldMessages || loadEarlierMsg) && <Spinner color={'$blue500'} />}\n {/* {loadEarlierMsg && <Spinner />} */}\n {isPostParentIdThread && (\n <>\n {threadPost?.length > 0 && (\n <>\n <VStack px={'$2'} pt={'$2'} pb={'$0'} space={'sm'}>\n <HStack space={'sm'} alignItems={'center'}>\n <Avatar bg={'transparent'} size={'md'}>\n <AvatarFallbackText>\n {startCase(threadPost[0]?.author?.username?.charAt(0))}\n </AvatarFallbackText>\n <AvatarImage\n alt=\"image\"\n style={{\n borderRadius: 6,\n borderWidth: 2,\n borderColor: '#fff',\n }}\n source={{\n uri: threadPost[0]?.author?.picture,\n }}\n />\n </Avatar>\n <Box>\n <Text color={'$black'} fontWeight={'$bold'}>\n {threadPost[0]?.author?.givenName ?? ''}{' '}\n {threadPost[0]?.author?.familyName ?? ''}\n </Text>\n <Text color={'$trueGray500'} pl={'$0'}>\n {createdAtText(threadPost[0]?.createdAt)} at{' '}\n {format(new Date(threadPost[0]?.createdAt), 'hh:ss:a')}\n </Text>\n </Box>\n </HStack>\n <HStack px={'$2'} space={'sm'} alignItems={'center'}>\n <Text>{threadPost[0]?.message ?? ''}</Text>\n </HStack>\n </VStack>\n\n <Box py={'$4'}>\n <Box\n px={'$4'}\n borderTopWidth={'$1'}\n borderBottomWidth={'$1'}\n py={'$2'}\n borderColor={'$trueGray200'}\n >\n <Text color={'$trueGray600'} fontWeight={'$bold'}>\n {threadPost[0]?.replies?.totalCount}{' '}\n {threadPost[0]?.replies?.totalCount > 0 ? 'replies' : 'reply'}\n </Text>\n </Box>\n </Box>\n </>\n )}\n </>\n )}\n <GiftedChat\n ref={threadMessageListRef}\n wrapInSafeArea={false}\n renderLoading={() => <Spinner color={'$blue500'} />}\n messages={messageList}\n listViewProps={{\n onEndReached: onEndReached,\n onEndReachedThreshold: 0.5,\n onMomentumScrollBegin: onMomentumScrollBegin,\n }}\n onSend={(messages) => handleSend(messages[0]?.text ?? ' ')}\n text={msg ? msg : ' '}\n onInputTextChanged={(text) => setMsg(text)}\n renderFooter={() =>\n loading ? <Spinner color={'$blue500'} /> : imageLoading ? <Spinner color={'$blue500'} /> : ''\n }\n scrollToBottom\n user={{\n _id: auth?.id || '',\n }}\n isTyping={true}\n alwaysShowSend={loading ? false : true}\n // onLoadEarlier={onFetchOld}\n infiniteScroll={true}\n renderSend={renderSend}\n // loadEarlier={data?.messages?.totalCount > channelMessages.length}\n // isLoadingEarlier={loadEarlierMsg}\n // renderLoadEarlier={() =>\n // !loadEarlierMsg && (\n // <Center py={2}>\n // <Button\n // onPress={() => onFetchOld(channelMessages?.length)}\n // variant={'outline'}\n // _text={{ color: 'black', fontSize: 15, fontWeight: 'bold' }}\n // >\n // Load earlier messages\n // </Button>\n // </Center>\n // )\n // }\n renderMessageText={renderMessageText}\n minInputToolbarHeight={50}\n renderActions={renderActions}\n renderAccessory={renderAccessory}\n renderMessage={renderMessage}\n renderChatFooter={() => (\n <>\n <ImageViewerModal\n isVisible={isShowImageViewer}\n setVisible={setImageViewer}\n modalContent={modalContent}\n />\n <SubscriptionHandler\n channelId={channelId}\n subscribeToNewMessages={() =>\n subscribeToMore({\n document: CHAT_MESSAGE_ADDED,\n variables: {\n channelId: channelId?.toString(),\n postParentId: !parentId || parentId == 0 ? null : parentId?.toString(),\n },\n updateQuery: (prev, { subscriptionData }: any) => {\n if (!subscriptionData.data) return prev;\n const newMessage: any = subscriptionData?.data?.threadChatMessageAdded;\n const prevReplyCount: any = prev?.getPostThread?.replyCount;\n const newReplyCount = prevReplyCount || 0 + 1;\n const replies = prev?.getPostThread?.replies || [];\n setChannelMessages((oldMessages: any) =>\n uniqBy([...oldMessages, newMessage], ({ id }) => id),\n );\n setTotalCount(newReplyCount);\n return Object.assign({}, prev, {\n getPostThread: {\n ...prev?.getPostThread,\n lastReplyAt: newMessage.createdAt,\n replies: [newMessage, ...replies],\n replyCount: newReplyCount,\n updatedAt: newMessage.createdAt,\n },\n });\n },\n })\n }\n />\n </>\n )}\n messagesContainerStyle={messageList?.length == 0 && { transform: [{ scaleY: -1 }] }}\n renderChatEmpty={() => (\n <>\n {!threadLoading && messageList && messageList?.length == 0 && (\n <Box p={'$5'}>\n <Center mt={'$6'}>\n <Ionicons name=\"chatbubbles\" size={30} />\n <Text>You don't have any message yet!</Text>\n </Center>\n </Box>\n )}\n </>\n )}\n lightboxProps={{\n underlayColor: 'transparent',\n springConfig: { tension: 90000, friction: 90000 },\n disabled: true,\n }}\n />\n </>\n );\n};\n\nconst SubscriptionHandler = ({ subscribeToNewMessages, channelId }: IThreadSubscriptionHandlerProps) => {\n useEffect(() => subscribeToNewMessages(), [channelId]);\n return <></>;\n};\n\nexport const ThreadConversationView = ThreadConversationViewComponent;\n// export const ThreadConversationView = React.memo(ThreadConversationViewComponent);\n"],"names":["React","_a","_b","_c","threadPost","_d","atob","files","images","data","_e","_f","_g","channelId","parentId","msg","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","params","SlackMessage","CHAT_MESSAGE_ADDED"],"mappings":";;;;;;;;;;;;;;;;;;;AAmBA,MAAM;AAAA,EACJ,iBAAA;AAAA,EACA,0BAAA;AAAA,EACA,mBAAA;AAAA,EACA,iCAAA;AAAA,EACA;AACF,CAAI,GAAA,MAAA;AACJ,MAAM,aAAA,GAAgB,CAAC,KAAkB,KAAA;AACvC,EAAA,IAAI,CAAC,KAAA;AAAO,IAAO,OAAA,EAAA;AACnB,EAAI,IAAA,IAAA,GAAO,IAAI,IAAA,CAAK,KAAK,CAAA;AACzB,EAAA,IAAI,QAAQ,IAAI,CAAA;AAAG,IAAO,OAAA,OAAA;AAC1B,EAAA,IAAI,YAAY,IAAI,CAAA;AAAG,IAAO,OAAA,WAAA;AAC9B,EAAA,OAAO,MAAO,CAAA,IAAI,IAAK,CAAA,KAAK,GAAG,cAAc,CAAA;AAC/C,CAAA;AAkBA,MAAM,kCAAkC,CAAC;AAAA,EACvC,SAAA;AAAA,EACA,YAAA;AAAA,EACA,oBAAA;AAAA,EACA;AACF,CAAW,KAAA;AAvDX,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAwDE,EAAM,MAAA;AAAA,IACJ;AAAA,MACE,QAAc,EAAA;AAClB,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAS,CAAC,CAAA;AAClD,EAAA,MAAM,CAAC,eAAiB,EAAA,kBAAkB,CAAI,GAAA,QAAA,CAAc,EAAE,CAAA;AAC9D,EAAM,MAAA,IAAA,GAAY,YAAY,YAAY,CAAA;AAC1C,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAc,CAAC,CAAA;AACnD,EAAA,MAAM,CAAC,aAAA,EAAe,QAAQ,CAAA,GAAI,SAAiB,EAAE,CAAA;AACrD,EAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAAI,SAAkB,KAAK,CAAA;AAC3E,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,SAAS,KAAK,CAAA;AAC1D,EAAA,MAAM,aAAa,aAAmB,EAAA;AACtC,EAAA,MAAM,CAAC,KAAO,EAAA,QAAQ,CAAI,GAAA,QAAA,CAAiB,EAAE,CAAA;AAC7C,EAAA,MAAM,CAAC,MAAQ,EAAA,SAAS,CAAI,GAAA,QAAA,CAAyC,EAAE,CAAA;AACvE,EAAA,MAAM,CAAC,GAAA,EAAK,MAAM,CAAA,GAAI,SAAiB,EAAE,CAAA;AACzC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAS,KAAK,CAAA;AACtD,EAAA,MAAM,CAAC,UAAY,EAAA,aAAa,CAAI,GAAA,QAAA,CAAgB,EAAE,CAAA;AACtD,EAAA,MAAM,CAAC,iBAAA,EAAmB,cAAc,CAAA,GAAI,SAAkB,KAAK,CAAA;AACnE,EAAA,MAAM,CAAC,WAAa,EAAA,cAAc,CAAI,GAAA,QAAA,CAAc,EAAE,CAAA;AACtD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAc,YAAY,CAAA;AAC1D,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,QAAsB,EAAA;AAC1D,EAAM,MAAA;AAAA,IACJ;AAAA,MACE,oBAAqB,EAAA;AACzB,EAAA,MAAM,CAAC,UAAY,EAAA,aAAa,CAAI,GAAA,QAAA,CAAgB,EAAE,CAAA;AACtD,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,SAAS,KAAK,CAAA;AAC9D,EAAM,MAAA,oBAAA,GAAuB,OAAY,IAAI,CAAA;AAG7C,EAAM,MAAA,CAAC,iBAAiB,CAAA,GAAI,2BAA4B,EAAA;AACxD,EAAM,MAAA,CAAC,kCAAkC,CAAA,GAAI,qCAAsC,EAAA;AACnF,EAAA,MAAM,CAAC,iBAAmB,EAAA;AAAA,IACxB,IAAA;AAAA,IACA,OAAS,EAAA,aAAA;AAAA,IACT,SAAW,EAAA,iBAAA;AAAA,IACX,OAAS,EAAA,qBAAA;AAAA,IACT;AAAA,GACD,IAAI,yBAA0B,CAAA;AAAA,IAC7B,WAAa,EAAA;AAAA,GACd,CAAA;AACD,EAAe,cAAA,CAAAA,cAAA,CAAM,YAAY,MAAM;AAhGzC,IAAAC,IAAAA,GAAAA;AAmGI,IAAA,UAAA,CAAW,UAAW,CAAA;AAAA,MACpB,KAAOA,EAAAA,CAAAA,GAAAA,GAAA,MAAQ,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,KAAA,KAAR,OAAAA,GAAiB,GAAA,QAAA;AAAA,MACxB,UAAA,EAAY,CAAC,KAAA,qBAAgBD,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,IAAI,aAAe,EAAA,aAAA,EAAY,cAAe,EAAA,YAAA,EAAY,cAAgB,EAAA,OAAA,EAAS,MAAM,UAAW,CAAA,MAAA,EACtH,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,aAAc,EAAA,EAAA,IAAA,EAAM,IAAI,IAAK,EAAA,gBAAA,EAAiB,KAAO,EAAA,OAAA,EAAS,CACnE;AAAA,KACf,CAAA;AACD,IAAA,IAAI,YAAc,EAAA;AAChB,MAAsB,qBAAA,CAAA;AAAA,QACpB,WAAW,SAAW,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAA,QAAA,EAAA;AAAA,QACtB,MAAM,IAAM,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAA,QAAA,EAAA;AAAA,QACZ,cAAc,YAAc,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAA,QAAA,EAAA;AAAA,QAC5B,cAAgB,EAAA,oEAAA;AAAA,QAChB,KAAO,EAAA;AAAA,OACR,CAAA;AAAA;AAEH,IAAA,WAAA,CAAY,YAAY,CAAA;AACxB,IAAA,OAAO,MAAM;AACX,MAAA,aAAA,CAAc,CAAC,CAAA;AACf,MAAA,kBAAA,CAAmB,EAAE,CAAA;AACrB,MAAA,aAAA,CAAc,EAAE,CAAA;AAAA,KAClB;AAAA,GACC,EAAA,CAAC,YAAY,CAAC,CAAC,CAAA;AAClB,EAAA,SAAA,CAAU,MAAM;AAEd,IAAA,IAAI,aAAa,QAAU,EAAA;AACzB,MAAkB,iBAAA,CAAA;AAAA,QAChB,SAAW,EAAA;AAAA,UACT,WAAW,SAAW,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAA,QAAA,EAAA;AAAA,UACtB,MAAM,IAAM,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAA,QAAA,EAAA;AAAA,UACZ,cAAc,CAAC,QAAA,IAAY,QAAY,IAAA,CAAA,GAAI,OAAO,QAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,QAAA,EAAA;AAAA,UAC5D,cAAgB,EAAA,oEAAA;AAAA,UAChB,KAAO,EAAA;AAAA;AACT,OACD,CAAA;AAAA;AACH,GACF,EAAG,CAAC,QAAQ,CAAC,CAAA;AACb,EAAAA,cAAA,CAAM,UAAU,MAAM;AAvIxB,IAAA,IAAAC,KAAAC,GAAAC,EAAAA,GAAAA;AAwII,IAAA,IAAI,6BAAM,aAAe,EAAA;AACvB,MAAA,MAAM,UAAe,IAAK,CAAA,aAAA;AAC1B,MAAA,MAAMC,eAAaH,GAAA,GAAA,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAS,IAAT,KAAA,IAAA,GAAAA,MAAiB,EAAC;AACrC,MAAA,MAAM,iBAAgBC,GAAA,GAAA,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAS,OAAT,KAAA,IAAA,GAAAA,MAAoB,EAAC;AAC3C,MAAA,MAAM,kBAAqBC,GAAAA,CAAAA,GAAAA,GAAA,OAAS,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAA,UAAA,KAAT,OAAAA,GAAuB,GAAA,CAAA;AAClD,MAAA,MAAM,QAAW,GAAA,CAACC,WAAY,EAAA,GAAG,aAAa,CAAA;AAC9C,MAAA,IAAgB,QAAA,CAAS,MAAS,GAAA,CAAA,IAAK,kBAAqB,GAAA,UAAA,IAA0B,QAAA,CAAS,MAAS,GAAA,CAAA,IAAK,eAAgB,CAAA,MAAA,KAAW,CAAG,EAAA;AACzI,QAAA,iBAAA,CAAkB,UAAU,kBAAkB,CAAA;AAAA;AAChD;AAEF,IAAA,IAAI,gBAAoB,IAAA,eAAA;AAAiB,MAAe,cAAA,EAAA;AAAA,GAM1D,EAAG,CAAC,IAAM,EAAA,eAAA,EAAiB,oBAAoB,UAAY,EAAA,oBAAA,EAAsB,gBAAgB,CAAC,CAAA;AAClG,EAAM,MAAA,iBAAA,GAAoB,CAAC,QAAA,EAAe,kBAA+B,KAAA;AACvE,IAAmB,kBAAA,CAAA,CAAC,gBAAqB,MAAO,CAAA,CAAC,GAAG,QAAU,EAAA,GAAG,WAAW,CAAA,EAAG,CAAC;AAAA,MAC9E;AAAA,KACF,KAAM,EAAE,CAAC,CAAA;AACT,IAAA,aAAA,CAAc,kBAAkB,CAAA;AAAA,GAClC;AACA,EAAAJ,cAAA,CAAM,UAAU,MAAM;AACpB,IAAI,IAAA,aAAA;AAAe,MAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,GAC1C,EAAG,CAAC,aAAa,CAAC,CAAA;AAClB,EAAM,MAAA,cAAA,GAAiBA,cAAM,CAAA,WAAA,CAAY,MAAM;AAC7C,IAAA,IAAI,6DAAsB,OAAS,EAAA;AACjC,MAAA,mBAAA,CAAoB,KAAK,CAAA;AACzB,MAAqB,oBAAA,CAAA,OAAA,CAAQ,SAAY,GAAA,oBAAA,CAAqB,OAAQ,CAAA,YAAA;AAAA;AACxE,GACF,EAAG,CAAC,oBAAoB,CAAC,CAAA;AACzB,EAAM,MAAA,UAAA,GAAa,YAAY,MAAM;AACnC,IAAA,IAAI,UAAa,GAAA,eAAA,CAAgB,MAAU,IAAA,CAAC,kBAAoB,EAAA;AAC9D,MAAA,iBAAA,CAAkB,IAAI,CAAA;AACtB,MAAkB,iBAAA,CAAA;AAAA,QAChB,SAAW,EAAA;AAAA,UACT,WAAW,SAAW,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAA,QAAA,EAAA;AAAA,UACtB,MAAM,IAAM,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAA,QAAA,EAAA;AAAA,UACZ,cAAc,QAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,QAAA,EAAA;AAAA,UACxB,cAAgB,EAAA,oEAAA;AAAA,UAChB,KAAO,EAAA,iBAAA;AAAA,UACP,IAAA,EAAM,gBAAgB,MAAS,GAAA;AAAA;AACjC,OACD,CAAA,CAAE,IAAK,CAAA,CAAC,GAAa,KAAA;AApL5B,QAAAC,IAAAA,GAAAA,EAAAC,KAAAC,GAAAE,EAAAA,GAAAA;AAqLQ,QAAA,IAAA,CAAIJ,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAK,IAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAW,aAAe,EAAA;AAC5B,UAAA,MAAM,OAAeC,GAAAA,CAAAA,GAAAA,GAAA,GAAK,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAA,IAAA,KAAL,gBAAAA,GAAW,CAAA,aAAA;AAChC,UAAA,MAAM,iBAAgBC,GAAA,GAAA,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAS,OAAT,KAAA,IAAA,GAAAA,MAAoB,EAAC;AAC3C,UAAA,MAAM,kBAAqBE,GAAAA,CAAAA,GAAAA,GAAA,OAAS,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAA,UAAA,KAAT,OAAAA,GAAuB,GAAA,CAAA;AAClD,UAAA,iBAAA,CAAkB,eAAe,kBAAkB,CAAA;AAAA;AACrD,OACD,CAAE,CAAA,OAAA,CAAQ,MAAM;AACf,QAAA,iBAAA,CAAkB,KAAK,CAAA;AACvB,QAAA,qBAAA,CAAsB,KAAK,CAAA;AAAA,OAC5B,CAAA,CAAE,KAAM,CAAA,CAAC,KAAe,KAAA;AACvB,QAAA,iBAAA,CAAkB,KAAK,CAAA;AACvB,QAAA,qBAAA,CAAsB,KAAK,CAAA;AAAA,OAC5B,CAAA;AAAA;AACH,KACC,CAAC,QAAA,EAAU,SAAW,EAAA,UAAA,EAAY,eAAe,CAAC,CAAA;AAMrD,EAAA,MAAM,eAAe,CAAC;AAAA,IACpB,iBAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACI,KAAA;AACJ,IAAA,MAAM,YAAe,GAAA,EAAA;AACrB,IAAA,OAAO,WAAY,CAAA,MAAA,GAAS,iBAAkB,CAAA,MAAA,GAAS,gBAAgB,aAAc,CAAA,CAAA;AAAA,GACvF;AACA,EAAM,MAAA,aAAA,GAAgB,CAAC,OAAA,EAAc,QAAkB,KAAA;AACrD,IAAI,IAAA,GAAA,GAAM,QAAQ,KAAM,CAAA,GAAG,GACzB,IAAO,GAAA,GAAA,CAAI,CAAG,CAAA,CAAA,KAAA,CAAM,SAAS,CAAA,CAAE,IAC/B,IAAO,GAAAC,MAAA,CAAK,GAAI,CAAA,CAAA,CAAE,CAClB,EAAA,CAAA,GAAI,KAAK,MACT,EAAA,KAAA,GAAQ,IAAI,UAAA,CAAW,CAAC,CAAA;AAC1B,IAAA,OAAO,CAAK,EAAA,EAAA;AACV,MAAM,KAAA,CAAA,CAAA,CAAA,GAAK,IAAK,CAAA,UAAA,CAAW,CAAC,CAAA;AAAA;AAE9B,IAAA,OAAO,IAAI,IAAA,CAAK,CAAC,KAAK,GAAG,QAAU,EAAA;AAAA,MACjC,IAAM,EAAA;AAAA,KACP,CAAA;AAAA,GACH;AACA,EAAA,MAAM,iBAAiB,YAAY;AA9NrC,IAAAL,IAAAA,GAAAA;AA+NI,IAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,IAAI,IAAA,WAAA,GAAmB,MAAM,WAAA,CAAY,uBAAwB,CAAA;AAAA,MAC/D,UAAA,EAAY,YAAY,gBAAiB,CAAA,MAAA;AAAA,MACzC,aAAe,EAAA,IAAA;AAAA,MACf,MAAA,EAAQ,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,MACb,OAAS,EAAA,CAAA;AAAA,MACT,MAAQ,EAAA;AAAA,KACT,CAAA;AACD,IAAI,IAAA,CAAC,YAAY,QAAU,EAAA;AACzB,MAAA,MAAM,QAAQ,yBAA4BA,IAAAA,CAAAA,GAAAA,GAAA,YAAY,MAAO,CAAA,CAAA,CAAA,KAAnB,gBAAAA,GAAuB,CAAA,MAAA,CAAA;AACjE,MAAA,QAAA,CAAS,KAAK,CAAA;AACd,MAAM,MAAA,IAAA,GAAO,aAAc,CAAA,KAAA,EAAO,gBAAgB,CAAA;AAClD,MAAA,QAAA,CAAS,CAAAM,MAAAA,KAASA,MAAM,CAAA,MAAA,CAAO,IAAI,CAAC,CAAA;AACpC,MAAA,SAAA,CAAU,CAAAC,OAAUA,KAAAA,OAAAA,CAAO,OAAO,WAAY,CAAA,MAAA,CAAO,EAAkC,CAAC,CAAA;AAAA;AAE1F,IAAA,IAAI,WAAY,CAAA,QAAA;AAAU,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,GAC5C;AACA,EAAM,MAAA,UAAA,GAAa,WAAY,CAAA,OAAO,OAAoB,KAAA;AAhP5D,IAAAP,IAAAA,GAAAA;AAiPI,IAAA,IAAI,CAAC,SAAA;AAAW,MAAA;AAChB,IAAA,IAAI,CAAC,OAAA,IAAW,OAAW,IAAA,GAAA,IAAO,OAAO,MAAU,IAAA,CAAA;AAAG,MAAA;AACtD,IAAA,MAAM,SAAS,QAAS,EAAA;AACxB,IAAI,IAAA,MAAA,IAAU,MAAO,CAAA,MAAA,GAAS,CAAG,EAAA;AAC/B,MAAA,UAAA,CAAW,IAAI,CAAA;AACf,MAAM,MAAA,cAAA,GAAiB,MAAM,WAAY,CAAA;AAAA,QACvC,IAAM,EAAA,MAAA;AAAA,QACN,gBAAkB,EAAA;AAAA,UAChB,SAAW,EAAA;AAAA,YACT;AAAA;AACF,SACF;AAAA,QACA,gBAAkB,EAAA;AAAA,UAChB,SAAW,EAAA;AAAA,YACT;AAAA;AACF;AACF,OACD,CAAA;AACD,MAAA,IAAI,cAAgB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,cAAA,CAAA,KAAA;AAAO,QAAA,UAAA,CAAW,KAAK,CAAA;AAC3C,MAAA,MAAM,gBAAgB,cAAe,CAAA,IAAA;AACrC,MAAA,IAAI,eAAe,IAAM,EAAA;AACvB,QAAA,QAAA,CAAS,EAAE,CAAA;AACX,QAAA,QAAA,CAAS,EAAE,CAAA;AACX,QAAA,SAAA,CAAU,EAAE,CAAA;AAEZ,QAAMM,MAAAA,MAAAA,GAAAA,CAAQN,MAAA,aAAe,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAA,GAAA,CAAI,CAAC,CAAW,KAAA,CAAA,CAAE,EAAjC,CAAA,KAAA,IAAA,GAAAA,GAAwC,GAAA,IAAA;AACtD,QAAA,MAAM,iBAAkB,CAAA;AAAA,UACtB,SAAW,EAAA;AAAA,YACT,MAAA;AAAA,YACA,SAAA;AAAA,YACA,YAAA,EAAc,eAAc,UAAY,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAA,EAAA,CAAA;AAAA,YACxC,YAAc,EAAA,CAAC,QAAY,IAAA,QAAA,IAAY,IAAI,IAAO,GAAA,QAAA;AAAA,YAClD,kBAAoB,EAAA;AAAA,cAClB,OAAS,EAAA,OAAA;AAAA,cACT,KAAAM,EAAAA,MAAAA;AAAA,cACA;AAAA;AACF,WACF;AAAA,UACA,MAAA,EAAQ,CAAC,KAAO,EAAA;AAAA,YACd,IAAAE,EAAAA,KAAAA;AAAA,YACA;AAAA,WACS,KAAA;AA1RrB,YAAA,IAAAR,GAAAC,EAAAA,GAAAA,EAAAC,GAAAE,EAAAA,GAAAA,EAAAK,KAAAC,GAAAC,EAAAA,GAAAA;AA2RY,YAAI,IAAA,CAACH,SAAQ,MAAQ,EAAA;AACnB,cAAA,UAAA,CAAW,KAAK,CAAA;AAChB,cAAA;AAAA;AAEF,YAAA,aAAA,CAAA,CAAcR,MAAAQ,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,MAAM,gBAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAR,IAAwB,IAAI,CAAA;AAC1C,YAAM,MAAA,aAAA,GAAA,CAAgBE,GAAAD,GAAAA,CAAAA,GAAAA,GAAAO,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAM,CAAA,gBAAA,KAAN,IAAAP,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAwB,WAAxB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAC,GAAqC,CAAA,EAAA;AAC3D,YAAI,IAAA,CAAC,QAAY,IAAA,QAAA,IAAY,CAAG,EAAA;AAC9B,cAAYO,WAAAA,CAAAA,CAAAA,GAAAA,GAAAA,CAAAL,GAAAI,GAAAA,KAAAA,IAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAM,gBAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAJ,GAAwB,CAAA,WAAA,KAAxB,IAAAK,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAqC,EAAE,CAAA;AAAA;AAErD,YAAA,eAAA,CAAgB,eAAe,CAAC,CAAA;AAChC,YAAA,UAAA,CAAW,KAAK,CAAA;AAChB,YAAA,MAAA,CAAO,EAAE,CAAA;AAET,YAAA,oBAAA,CAAqB,aAAe,EAAA,SAAA,EAAW,QAAUE,EAAAA,CAAAA,GAAAA,GAAAA,CAAAD,MAAAF,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAM,CAAA,gBAAA,KAAN,IAAAE,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAwB,IAAxB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAC,IAA8B,EAAE,CAAA;AAAA;AAC3F,SACD,CAAA;AAAA;AACH,KACK,MAAA;AACL,MAAA,UAAA,CAAW,IAAI,CAAA;AACf,MAAA,MAAM,iBAAkB,CAAA;AAAA,QACtB,SAAW,EAAA;AAAA,UACT,SAAA;AAAA,UACA,YAAA,EAAc,eAAc,UAAY,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAA,EAAA,CAAA;AAAA,UACxC,YAAc,EAAA,CAAC,QAAY,IAAA,QAAA,IAAY,IAAI,IAAO,GAAA,QAAA;AAAA,UAClD,kBAAoB,EAAA;AAAA,YAClB,OAAS,EAAA,OAAA;AAAA,YACT;AAAA;AACF,SACF;AAAA,QACA,MAAA,EAAQ,CAAC,KAAO,EAAA;AAAA,UACd,IAAAH,EAAAA,KAAAA;AAAA,UACA;AAAA,SACS,KAAA;AA3TnB,UAAA,IAAAR,GAAAC,EAAAA,GAAAA,EAAAC,GAAAE,EAAAA,GAAAA,EAAAK,GAAAC,EAAAA,GAAAA;AA4TU,UAAI,IAAA,CAACF,SAAQ,MAAQ,EAAA;AACnB,YAAA,UAAA,CAAW,KAAK,CAAA;AAChB,YAAA;AAAA;AAEF,UAAA,aAAA,CAAcA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAM,CAAA,gBAAA,CAAiB,IAAI,CAAA;AACzC,UAAM,MAAA,aAAA,GAAA,CAAgBP,GAAAD,GAAAA,CAAAA,GAAAA,GAAAQ,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAM,CAAA,gBAAA,KAAN,IAAAR,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAwB,WAAxB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAC,GAAqC,CAAA,EAAA;AAC3D,UAAI,IAAA,CAAC,QAAY,IAAA,QAAA,IAAY,CAAG,EAAA;AAC9B,YAAYG,WAAAA,CAAAA,CAAAA,GAAAA,GAAAA,CAAAF,GAAAM,GAAAA,KAAAA,IAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAM,gBAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAN,GAAwB,CAAA,WAAA,KAAxB,IAAAE,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAqC,EAAE,CAAA;AAAA;AAErD,UAAA,eAAA,CAAgB,eAAe,CAAC,CAAA;AAChC,UAAA,UAAA,CAAW,KAAK,CAAA;AAChB,UAAA,MAAA,CAAO,EAAE,CAAA;AACT,UAAA,oBAAA,CAAqB,aAAe,EAAA,SAAA,EAAW,QAAUM,EAAAA,CAAAA,GAAAA,GAAAA,CAAAD,MAAAD,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAM,CAAA,gBAAA,KAAN,IAAAC,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAwB,IAAxB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAC,IAA8B,EAAE,CAAA;AAAA;AAC3F,OACD,CAAA;AAAA;AACH,KACC,CAAC,kBAAA,EAAoB,WAAW,MAAQ,EAAA,QAAA,EAAU,UAAU,CAAC,CAAA;AAChE,EAAA,MAAM,oBAAuB,GAAA,OAAO,SAAmBE,EAAAA,UAAAA,EAAmBC,WAAe,QAAqB,KAAA;AA7UhH,IAAAb,IAAAA,GAAAA;AA8UI,IAAA,MAAM,gBAA0C,GAAA;AAAA,MAC9C,KAAK,MAAO,CAAA,mBAAA;AAAA,MACZ,MAAQ,EAAA;AAAA,QACN,SAAAY,EAAAA,UAAAA;AAAA,QACA,KAAOZ,EAAAA,CAAAA,GAAAA,GAAA,MAAQ,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,KAAA,KAAR,OAAAA,GAAiB,GAAA,QAAA;AAAA,QACxB,YAAca,EAAAA,SAAAA;AAAA,QACd,UAAY,EAAA;AAAA,OACd;AAAA,MACA,MAAQ,EAAA,sBAAA;AAAA,MACR,MAAQ,EAAA;AAAA,QACN,EAAI,EAAA;AAAA,OACN;AAAA,MACA,KAAO,EAAA;AAAA,QACL,KAAO,EAAA,QAAA,CAAS,EAAO,KAAA,SAAA,GAAY,KAAY,CAAA,GAAA;AAAA;AACjD,KACF;AACA,IAAIA,IAAAA,SAAAA,IAAYA,aAAY,CAAG,EAAA;AAC7B,MAAA,MAAM,kCAAmC,CAAA;AAAA,QACvC,SAAW,EAAA;AAAA,UACT,QAAQ,SAAW,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAA,QAAA,EAAA;AAAA,UACnB;AAAA;AACF,OACD,CAAA;AAAA;AACH,GACF;AACA,EAAM,MAAA,WAAA,GAAc,QAAQ,MAAM;AAEhC,IAAA,IAAI,MAAW,EAAC;AAChB,IAAM,MAAA,gBAAA,GAAmB,eAAmB,IAAA,CAAA,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAiB,MAAS,IAAA,CAAA,GAAI,OAAO,CAAC,GAAG,eAAe,CAAA,EAAG,CAAC;AAAA,MACtG;AAAA,KACF,KAAW,EAAE,CAAA,GAAI,EAAC;AAClB,IAAA,IAAI,qDAAkB,MAAQ,EAAA;AAC5B,MAAQ,OAAA,CAAA,gBAAA,EAAkB,CAAC,WAAW,CAAG,EAAA,CAAC,MAAM,CAAC,CAAA,CAAE,GAAI,CAAA,CAAAC,IAAO,KAAA;AA9WpE,QAAA,IAAAd,GAAAC,EAAAA,GAAAA,EAAAC,GAAAE,EAAAA,GAAAA,EAAAK,GAAAC,EAAAA,GAAAA,EAAAC,GAAAI,EAAAA,GAAAA,EAAAC,GAAAC,EAAAA,GAAAA,EAAAC,GAAAC,EAAAA,GAAAA,EAAAC,GAAAC,EAAAA,GAAAA;AA+WQ,QAAA,IAAI,OAAyB,GAAA;AAAA,UAC3B,GAAK,EAAA,EAAA;AAAA,UACL,IAAM,EAAA,EAAA;AAAA,UACN,SAAW,EAAA,CAAA;AAAA,UACX,IAAM,EAAA;AAAA,YACJ,GAAK,EAAA,EAAA;AAAA,YACL,IAAM,EAAA,EAAA;AAAA,YACN,MAAQ,EAAA;AAAA,WACV;AAAA,UACA,IAAM,EAAA;AAAA,SACR;AACA,QAAA,MAAM,IAAO,GAAA,IAAI,IAAKP,CAAAA,IAAAA,CAAI,SAAS,CAAA;AACnC,QAAA,OAAA,CAAQ,MAAMA,IAAI,CAAA,EAAA;AAClB,QAAA,OAAA,CAAQ,OAAOA,IAAI,CAAA,OAAA;AACnB,QAAA,OAAA,CAAQ,SAAY,GAAA,IAAA;AACpB,QAAA,OAAA,CAAQ,IAAO,GAAA;AAAA,UACb,MAAKZ,GAAAF,GAAAA,CAAAA,GAAAA,GAAAc,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAK,MAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAd,GAAa,CAAA,EAAA,KAAb,OAAAE,GAAmBD,GAAAA,CAAAA,GAAAA,GAAA,IAAM,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAA,OAAA,KAAN,gBAAAA,GAAe,CAAA,EAAA;AAAA,UACvC,IAAMe,EAAAA,CAAAA,GAAAA,GAAAA,CAAAL,GAAAP,GAAAA,CAAAA,GAAAA,GAAAU,QAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAAA,CAAK,MAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAV,IAAa,SAAb,KAAA,IAAA,GAAAO,GAA0BF,GAAAA,CAAAA,CAAAA,GAAAA,GAAA,6BAAM,OAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,GAAe,CAAA,UAAA,IAAa,GAAMC,IAAAA,CAAAA,GAAAA,GAAAI,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAK,MAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAJ,GAAa,CAAA,UAAA,CAAA,KAAzE,OAAAM,GAAuFD,GAAAA,CAAAA,GAAAA,GAAA,IAAM,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAA,OAAA,KAAN,gBAAAA,GAAe,CAAA,WAAA;AAAA,UAC5G,SAAQI,GAAAF,GAAAA,CAAAA,GAAAA,GAAAH,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,KAAK,MAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAG,GAAa,CAAA,OAAA,KAAb,OAAAE,GAAwBD,GAAAA,CAAAA,GAAAA,GAAA,IAAM,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAA,OAAA,KAAN,gBAAAA,GAAe,CAAA;AAAA,SACjD,EAAG,OAAQ,CAAA,KAAA,GAAA,CAAQG,GAAAD,GAAAA,CAAAA,GAAAA,GAAAN,KAAI,KAAJ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAM,GAAW,CAAA,IAAA,CAAK,CAAhB,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAC,IAAoB,GAAK,EAAA,OAAA,CAAQ,IAAOP,GAAAA,IAAAA,IAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAAA,CAAK,aAAa,OAAQ,CAAA,QAAA,GAAWA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAK,CAAA,MAAA;AACrG,QAAQ,OAAA,CAAA,IAAA,GAAOA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAK,CAAA,IAAA;AACpB,QAAQ,OAAA,CAAA,kBAAA,GAAqBA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAK,CAAA,kBAAA;AAClC,QAAA,GAAA,CAAI,KAAK,OAAO,CAAA;AAAA,OACjB,CAAA;AAAA;AAEH,IAAO,OAAA,CAAA,GAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAK,UAAS,CAAI,GAAA,MAAA,CAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,MACzC;AAAA,KACF,KAAW,GAAG,CAAA,GAAI,EAAC;AAAA,GAErB,EAAG,CAAC,eAAe,CAAC,CAAA;AACpB,EAAA,MAAM,aAAa,CAAS,KAAA,KAAA;AAC1B,IAAO,uBAAAf,cAAA,CAAA,aAAA,CAAC,yBAAS,KACL,CAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,2BACIA,cAAA,CAAA,aAAA,CAAA,sBAAA,EAAA,EAAuB,IAAK,EAAA,aAAA,EAAc,KAAO,EAAA;AAAA,MAC5D,YAAc,EAAA,CAAA;AAAA,MACd,WAAa,EAAA;AAAA,OACZ,IAAM,EAAA,EAAA,EAAI,KAAM,EAAA,SAAA,EAAU,CACrB,CACJ,CAAA;AAAA,GACV;AACA,EAAM,MAAA,iBAAA,GAAoB,CAAC,KAAe,KAAA;AAvZ5C,IAAA,IAAAC,KAAAC,GAAAC,EAAAA,GAAAA,EAAAE,KAAAK,GAAAC,EAAAA,GAAAA,EAAAC,KAAAI,GAAAC,EAAAA,GAAAA,EAAAC,GAAAC,EAAAA,GAAAA,EAAAC,KAAAC,GAAAC,EAAAA,GAAAA,EAAAC,KAAAC,GAAAC,EAAAA,GAAAA,EAAAC,KAAAC,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAwZI,IAAM,MAAA;AAAA,MACJ;AAAA,KACE,GAAA,KAAA;AACJ,IAAI,IAAA,cAAA,CAAe,SAAS,OAAS,EAAA;AACnC,MAAM,MAAA,UAAA,GAAA,CAAazB,OAAAD,GAAA,GAAA,cAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,cAAA,CAAgB,uBAAhB,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAoC,QAApC,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAC,GAA8C,CAAA,UAAA;AACjE,MAAA,IAAI,MAAiB,GAAA,EAAA;AACrB,MAAA,IAAI,QAAgB,GAAA,EAAA;AACpB,MAAA,IAAI0B,UAAc,EAAC;AACnB,MAAA,IAAA,CAAIzB,GAAA,GAAA,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAY,YAAZ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAA0B,WAAa,EAAA;AACzC,QAAA,MAAM,WAAmBE,GAAAA,CAAAA,GAAAA,GAAA,UAAY,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAA,YAAA,KAAZ,gBAAAA,GAA0B,CAAA,WAAA;AACnD,QAAA,MAAM,KAAaK,GAAAA,CAAAA,GAAAA,GAAA,WAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAA,KAAA,KAAb,OAAAA,GAAsB,GAAA,IAAA;AACzC,QAAA,IAAI,IAAY,GAAA,IAAA;AAChB,QAAA,IAAI,KAAa,GAAA,IAAA;AACjB,QAAI,IAAA,IAAA,IAAQ,IAAQ,IAAA,cAAA,CAAe,KAAO,EAAA;AACxC,UAAA,IAAA,GAAA,CAAA,CAAOC,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,KAAP,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAc,IAAOK,IAAAA,CAAAA,GAAAA,GAAAA,CAAAJ,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,UAAP,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAc,IAAd,KAAA,IAAA,GAAAI,MAAsB,IAAO,GAAA,IAAA;AACzD,UAAA,KAAA,GAAA,CAAA,CAAQC,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,KAAP,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAc,MAASE,IAAAA,CAAAA,GAAAA,GAAAA,CAAAD,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,UAAP,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAc,MAAd,KAAA,IAAA,GAAAC,MAAwB,IAAO,GAAA,IAAA;AAAA,SACrD,MAAA,IAAA,IAAA,IAAQ,IAAQ,IAAA,cAAA,CAAe,KAAO,EAAA;AAC/C,UAAA,IAAA,GAAA,CAAA,CAAOC,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,IAAP,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAa,IAAOE,IAAAA,CAAAA,GAAAA,GAAAA,CAAAD,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,SAAP,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAa,IAAb,KAAA,IAAA,GAAAC,MAAqB,IAAO,GAAA,IAAA;AACvD,UAAA,KAAA,GAAA,CAAA,CAAQC,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,IAAP,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAa,MAASE,IAAAA,CAAAA,GAAAA,GAAAA,CAAAD,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,SAAP,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAa,MAAb,KAAA,IAAA,GAAAC,MAAuB,IAAO,GAAA,IAAA;AAAA,SACvD,MAAA;AACL,UAAA,IAAA,GAAA,CAAA,CAAOC,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,IAAP,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAa,IAAO,IAAA,CAAA,EAAA,GAAA,CAAAC,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,IAAP,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,GAAa,CAAA,IAAA,KAAb,YAAqB,IAAO,GAAA,IAAA;AACvD,UAAQ,KAAA,GAAA,CAAA,CAAA,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,SAAP,IAAa,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,IAAA,CAAS,0CAAO,IAAP,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAa,MAAb,KAAA,IAAA,GAAA,EAAA,GAAuB,IAAO,GAAA,IAAA;AAAA;AAE9D,QAAS,MAAA,GAAA,IAAA;AACT,QAAAC,UAAS,cACJ,CAAA,EAAA,EAAA,KAAA,CAAA;AAAA,OAEI,MAAA,IAAA,CAAA,EAAA,GAAA,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAY,YAAZ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAA0B,IAAM,EAAA;AACzC,QAAS,MAAA,GAAA,mBAAA;AACT,QAAA,QAAA,GAAA,CAAW,EAAY,GAAA,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAA,YAAA,KAAZ,IAA0B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAK,MAAM,GAAK,CAAA,CAAA,GAAA,EAAA;AACrD,QAAAA,OAAS,GAAA;AAAA,UACP,aAAe,EAAA;AAAA,SACjB;AAAA;AAQF,MAAO,uBAAA5B,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,EAAA,CACQ,UAAY,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAA,YAAA,KAAgB,MAAS,mBAAAA,cAAA,CAAA,aAAA,CAAC,GAAI,EAAA,EAAA,EAAA,EAAI,0BAA4B,EAAA,YAAA,EAAc,EAAI,EAAA,EAAA,EAAI,CACzF,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UAAO,OAAS,EAAA,SAAA;AAAA,UAAW,IAAM,EAAA,IAAA;AAAA,UAAM,WAAa,EAAA,iCAAA;AAAA,UAAmC,SAAS,MAAM,MAAA,IAAU4B,WAAU,UAAW,CAAA,QAAA,CAAS,QAAQA,OAAM;AAAA,SAAA;AAAA,qDAGxJ,UAAW,EAAA,EAAA,KAAA,EAAO,yBACd,EAAA,EAAA,UAAA,CAAW,aAAa,KAC7B;AAAA,OAEJ,kBAAA5B,cAAA,CAAA,aAAA,CAAC,WAAgB,EAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,CAAA,EAAhB,EAAuB,SAAW,EAAA;AAAA,QACnD,IAAM,EAAA;AAAA,UACJ,UAAY,EAAA,CAAA;AAAA,UACZ,KAAO,EAAA,yBAAA;AAAA,UACP,iBAAmB,EAAA;AAAA;AACrB,UACC,CACW,CAAA,gDAAU,WAAgB,EAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,CAAA,EAAhB,EAAuB,SAAW,EAAA;AAAA,QAC1D,IAAM,EAAA;AAAA,UACJ,UAAY,EAAA;AAAA;AACd,UACC,CAKK,CAAA;AAAA,KACL,MAAA;AACL,MAAA,uBAAQA,cAAA,CAAA,aAAA,CAAA,WAAA,EAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EAAgB,KAAhB,CAAA,EAAA,EAAuB,SAAW,EAAA;AAAA,QACxC,IAAM,EAAA;AAAA,UACJ,UAAY,EAAA;AAAA;AACd,OACC,EAAA,CAAA,CAAA;AAAA;AACL,GACF;AACA,EAAA,MAAM,gBAAgB,CAAS,KAAA,KAAA;AAC7B,IAAA,oDAAQ,OAAY,EAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,CAAA,EAAZ,EAAmB,IAAA,EAAM,sBAAOA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAS,IAAM,EAAA,OAAA,EAAS,MAAM,EAAI,EAAA,KAAA,EAAO,OAAS,EAAA,OAAA,EAAS,gBAAgB,CAAI,EAAA,CAAA,CAAA;AAAA,GACzH;AACA,EAAA,MAAM,kBAAkB,CAAS,KAAA,KAAA;AAC/B,IAAA,oDAAQ,GACK,EAAA,IAAA,EAAA,aAAA,KAAkB,EAAK,mBAAAA,cAAA,CAAA,aAAA,CAAC,UAAO,UAAY,EAAA,QAAA,EAAA,kBACnCA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAM,IAAI,IAAM,EAAA,GAAA,EAAK,aAAe,EAAA,GAAA,EAAK,SAAS,MAAQ,EAAA;AAAA,MACzE,GAAK,EAAA;AAAA,KACP,EAAG,IAAM,EAAA,IAAA,EAAM,CACC,kBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QAAO,OAAS,EAAA,OAAA;AAAA,QAEjC,EAAI,EAAA,aAAA;AAAA,QAAe,SAAS,MAAM;AAChC,UAAA,QAAA,CAAS,EAAE,CAAA;AACX,UAAA,QAAA,CAAS,EAAE,CAAA;AACX,UAAA,SAAA,CAAU,EAAE,CAAA;AAAA;AACd,OAAA;AAAA,sBACqBA,cAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,KAAO,EAAA,QAAA,EAAA,EAAU,QAAM;AAAA,KAE3C,IAAY,IACpB,CAAA;AAAA,GACV;AACA,EAAM,MAAA,oBAAA,GAAuB,CAAC,GAAA,EAAU,CAAe,KAAA;AACrD,IAAA,cAAA,CAAe,GAAG,CAAA;AAClB,IAAA,cAAA,CAAe,CAAC,CAAA;AAAA,GAClB;AACA,EAAM,MAAA,YAAA,GAAeA,cAAM,CAAA,OAAA,CAAQ,MAAM;AACvC,IAAA,IAAI,CAAC,WAAA;AAAa,MAAA,uBAASA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,CAAA;AAC3B,IAAM,MAAA;AAAA,MACJ,KAAA;AAAA,MACA;AAAA,KACE,GAAA,WAAA;AACJ,IAAO,uBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QAAY,KAAO,EAAA;AAAA,UACzB,KAAO,EAAA,MAAA;AAAA,UACP,MAAQ,EAAA;AAAA,SACV;AAAA,QAAG,UAAY,EAAA,OAAA;AAAA,QAEf,UAAU,CAAG,EAAA,GAAA,CAAA,sBAAA,CAAA;AAAA,QAA6B,MAAQ,EAAA;AAAA,UAChD,GAAK,EAAA,KAAA;AAAA,UAEL,SAAW,EAAA;AAAA,SACb;AAAA,QAAG,GAAK,EAAA;AAAA;AAAA,KAAS;AAAA,GACnB,EAAG,CAAC,WAAW,CAAC,CAAA;AAChB,EAAM,MAAA,aAAA,GAAgB,CAAC,KAAe,KAAA;AACpC,IAAA,oDAAQ6B,OAAiB,EAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,CAAA,EAAjB,EAAwB,iBAAA,EAAsC,gBAAgB,oBAAsB,EAAA,CAAA,CAAA;AAAA,GAC9G;AACA,EAAA,IAAI,QAAW,GAAA,KAAA;AACf,EAAA,MAAM,wBAAwB,CAAC;AAAA,IAC7B;AAAA,GACS,KAAA;AACT,IAAW,QAAA,GAAA,IAAA;AACX,IAAA,OAAA,CAAQ,IAAI,YAAY,CAAA;AACxB,IAAA,IAAI,CAAC,kBAAsB,IAAA,YAAA,CAAa,WAAW,CAAK,IAAA,UAAA,IAAa,mDAAiB,MAAQ,CAAA,EAAA;AAC5F,MAAW,UAAA,EAAA;AAAA;AACb,GACF;AACA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,OAAA,CAAQ,IAAI,gBAAgB,CAAA;AAC5B,IAAA,IAAI,CAAC,QAAA;AAAU,MAAA;AAEf,IAAW,QAAA,GAAA,KAAA;AAAA,GAEb;AACA,EAAO,uBAAA7B,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,EAAA,CACK,kBAAsB,IAAA,cAAA,qBAAoBA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAQ,OAAO,UAAY,EAAA,CAAA,EAEtE,oBAAwB,oBAAAA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,EAAA,CAChB,UAAY,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAA,MAAA,IAAS,qBACdA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,MAAO,EAAA,EAAA,EAAA,EAAI,IAAM,EAAA,EAAA,EAAI,IAAM,EAAA,EAAA,EAAI,IAAM,EAAA,KAAA,EAAO,IACzC,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,MAAO,EAAA,EAAA,KAAA,EAAO,MAAM,UAAY,EAAA,QAAA,EAAA,kBAC5BA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,EAAI,EAAA,aAAA,EAAe,MAAM,IAC7B,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,kBACI,EAAA,IAAA,EAAA,SAAA,CAAA,CAAU,EAAW,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAA,CAAA,CAAA,CAAA,KAAX,mBAAe,MAAf,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAuB,QAAvB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAiC,MAAO,CAAA,CAAA,CAAE,CACzD,CAAA,kBACCA,cAAA,CAAA,aAAA,CAAA,WAAA,EAAA,EAAY,GAAI,EAAA,OAAA,EAAQ,KAAO,EAAA;AAAA,IACxD,YAAc,EAAA,CAAA;AAAA,IACd,WAAa,EAAA,CAAA;AAAA,IACb,WAAa,EAAA;AAAA,KACZ,MAAQ,EAAA;AAAA,IACT,GAAK,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAA,CAAW,CAAX,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAe,WAAf,IAAuB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA;AAAA,GAC9B,EAAG,CACmB,CAAA,kBACCA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,kBACIA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,QAAA,EAAU,UAAY,EAAA,OAAA,EAAA,EAAA,CAC9B,EAAW,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAA,CAAA,CAAA,CAAA,KAAX,mBAAe,MAAf,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAuB,SAAvB,KAAA,IAAA,GAAA,EAAA,GAAoC,EAAI,EAAA,GAAA,EAAA,CACxC,EAAW,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAA,CAAA,CAAA,CAAA,KAAX,IAAe,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,KAAf,IAAuB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAA,KAAvB,IAAqC,GAAA,EAAA,GAAA,EAC1C,mBACCA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,cAAA,EAAgB,EAAI,EAAA,IAAA,EAAA,EAC5B,aAAc,CAAA,CAAA,EAAA,GAAA,UAAA,CAAW,CAAX,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAe,SAAS,CAAA,EAAE,KAAI,EAAA,GAAA,EAC5C,OAAO,IAAI,IAAA,CAAA,CAAK,EAAW,GAAA,UAAA,CAAA,CAAA,CAAA,KAAX,IAAe,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAS,CAAG,EAAA,SAAS,CACzD,CACJ,CACJ,CAAA,kBACCA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,IAAI,IAAM,EAAA,KAAA,EAAO,IAAM,EAAA,UAAA,EAAY,QACvC,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,IAAM,EAAA,IAAA,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAA,CAAW,CAAX,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAe,OAAf,KAAA,IAAA,GAAA,EAAA,GAA0B,EAAG,CACxC,CACJ,CAEA,kBAAAA,cAAA,CAAA,aAAA,CAAC,GAAI,EAAA,EAAA,EAAA,EAAI,IACL,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,GAAI,EAAA,EAAA,EAAA,EAAI,IAAM,EAAA,cAAA,EAAgB,IAAM,EAAA,iBAAA,EAAmB,IAAM,EAAA,EAAA,EAAI,MAAM,WAAa,EAAA,cAAA,EAAA,kBAChFA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,cAAA,EAAgB,UAAY,EAAA,OAAA,EAAA,EAAA,CACpC,EAAW,GAAA,CAAA,EAAA,GAAA,UAAA,CAAA,CAAA,CAAA,KAAX,IAAe,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAA,KAAf,IAAwB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAA,EAAY,GACpC,EAAA,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAA,CAAW,CAAX,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAe,OAAf,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAwB,UAAa,IAAA,CAAA,GAAI,SAAY,GAAA,OAC1D,CACJ,CACJ,CACJ,CACR,CACJ,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MAAW,GAAK,EAAA,oBAAA;AAAA,MAAsB,cAAgB,EAAA,KAAA;AAAA,MAAO,aAAe,EAAA,sBAAOA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAQ,OAAO,UAAY,EAAA,CAAA;AAAA,MAAI,QAAU,EAAA,WAAA;AAAA,MAAa,aAAe,EAAA;AAAA,QAC/J,YAAA;AAAA,QACA,qBAAuB,EAAA,GAAA;AAAA,QACvB;AAAA,OACF;AAAA,MAAG,QAAQ,CAAS,QAAA,KAAA;AAjlBxB,QAAA,IAAAC,GAAAC,EAAAA,GAAAA;AAilB2B,QAAWA,OAAAA,UAAAA,CAAAA,CAAAA,GAAAA,GAAAA,CAAAD,MAAA,QAAS,CAAA,CAAA,CAAA,KAAT,gBAAAA,GAAa,CAAA,IAAA,KAAb,IAAAC,GAAAA,GAAAA,GAAqB,GAAG,CAAA;AAAA,OAAA;AAAA,MAAG,IAAA,EAAM,MAAM,GAAM,GAAA,GAAA;AAAA,MAAK,kBAAA,EAAoB,CAAQ,IAAA,KAAA,MAAA,CAAO,IAAI,CAAA;AAAA,MAAG,YAAc,EAAA,MAAM,OAAU,mBAAAF,cAAA,CAAA,aAAA,CAAC,OAAQ,EAAA,EAAA,KAAA,EAAO,UAAY,EAAA,CAAA,GAAK,YAAe,mBAAAA,cAAA,CAAA,aAAA,CAAC,OAAQ,EAAA,EAAA,KAAA,EAAO,YAAY,CAAK,GAAA,EAAA;AAAA,MAAI,cAAc,EAAA,IAAA;AAAA,MAAC,IAAM,EAAA;AAAA,QACpQ,GAAA,EAAA,CAAK,6BAAM,EAAM,KAAA;AAAA,OACnB;AAAA,MAAG,QAAU,EAAA,IAAA;AAAA,MAAM,cAAA,EAAgB,UAAU,KAAQ,GAAA,IAAA;AAAA,MAErD,cAAgB,EAAA,IAAA;AAAA,MAAM,UAAA;AAAA,MAgBtB,iBAAA;AAAA,MAAsC,qBAAuB,EAAA,EAAA;AAAA,MAAI,aAAA;AAAA,MAA8B,eAAA;AAAA,MAAkC,aAAA;AAAA,MAA8B,kBAAkB,sBAAMA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,kBAClKA,cAAA,CAAA,aAAA,CAAA,gBAAA,EAAA,EAAiB,WAAW,iBAAmB,EAAA,UAAA,EAAY,cAAgB,EAAA,YAAA,EAA4B,mBACvGA,cAAA,CAAA,aAAA,CAAA,mBAAA,EAAA,EAAoB,SAAsB,EAAA,sBAAA,EAAwB,MAAM,eAAgB,CAAA;AAAA,QACzG,QAAU,EAAA8B,gCAAA;AAAA,QACV,SAAW,EAAA;AAAA,UACT,WAAW,SAAW,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAA,QAAA,EAAA;AAAA,UACtB,cAAc,CAAC,QAAA,IAAY,QAAY,IAAA,CAAA,GAAI,OAAO,QAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,QAAA;AAAA,SAC9D;AAAA,QACA,WAAA,EAAa,CAAC,IAAM,EAAA;AAAA,UAClB;AAAA,SACS,KAAA;AA/mBnB,UAAA,IAAA7B,KAAAC,GAAAC,EAAAA,GAAAA;AAgnBU,UAAA,IAAI,CAAC,gBAAiB,CAAA,IAAA;AAAM,YAAO,OAAA,IAAA;AACnC,UAAA,MAAM,UAAkBF,GAAAA,CAAAA,GAAAA,GAAA,gBAAkB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAA,IAAA,KAAlB,gBAAAA,GAAwB,CAAA,sBAAA;AAChD,UAAA,MAAM,cAAsBC,GAAAA,CAAAA,GAAAA,GAAA,IAAM,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAA,aAAA,KAAN,gBAAAA,GAAqB,CAAA,UAAA;AACjD,UAAM,MAAA,aAAA,GAAgB,kBAAkB,CAAI,GAAA,CAAA;AAC5C,UAAA,MAAM,YAAUC,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAM,kBAAN,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAqB,YAAW,EAAC;AACjD,UAAmB,kBAAA,CAAA,CAAC,gBAAqB,MAAO,CAAA,CAAC,GAAG,WAAa,EAAA,UAAU,GAAG,CAAC;AAAA,YAC7E;AAAA,WACF,KAAM,EAAE,CAAC,CAAA;AACT,UAAA,aAAA,CAAc,aAAa,CAAA;AAC3B,UAAA,OAAO,MAAO,CAAA,MAAA,CAAO,EAAC,EAAG,IAAM,EAAA;AAAA,YAC7B,aAAA,EAAe,aACV,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAM,aADI,CAAA,EAAA;AAAA,cAEb,aAAa,UAAW,CAAA,SAAA;AAAA,cACxB,OAAS,EAAA,CAAC,UAAY,EAAA,GAAG,OAAO,CAAA;AAAA,cAChC,UAAY,EAAA,aAAA;AAAA,cACZ,WAAW,UAAW,CAAA;AAAA,aACxB;AAAA,WACD,CAAA;AAAA;AACH,OACD,GAAG,CACU,CAAA;AAAA,MAAK,sBAAA,EAAA,CAAwB,WAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAA,MAAA,KAAU,CAAK,IAAA;AAAA,QACvE,WAAW,CAAC;AAAA,UACV,MAAQ,EAAA,CAAA;AAAA,SACT;AAAA,OACH;AAAA,MAAG,eAAiB,EAAA,sBACCH,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,EAAA,CAAC,aAAiB,IAAA,WAAA,IAAA,CAAe,WAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAA,MAAA,KAAU,CAAK,oBAAAA,cAAA,CAAA,aAAA,CAAC,GAAI,EAAA,EAAA,CAAA,EAAG,IAC9D,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,MAAO,EAAA,EAAA,EAAA,EAAI,IACR,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,QAAS,EAAA,EAAA,IAAA,EAAK,aAAc,EAAA,IAAA,EAAM,EAAI,EAAA,CAAA,kBACtCA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,EAAK,iCAA+B,CACzC,CACJ,CACR,CAAA;AAAA,MAAK,aAAe,EAAA;AAAA,QAClC,aAAe,EAAA,aAAA;AAAA,QACf,YAAc,EAAA;AAAA,UACZ,OAAS,EAAA,GAAA;AAAA,UACT,QAAU,EAAA;AAAA,SACZ;AAAA,QACA,QAAU,EAAA;AAAA;AACZ;AAAA,GACI,CAAA;AACR,CAAA;AACA,MAAM,sBAAsB,CAAC;AAAA,EAC3B,sBAAA;AAAA,EACA;AACF,CAAuC,KAAA;AACrC,EAAA,SAAA,CAAU,MAAM,sBAAA,EAA0B,EAAA,CAAC,SAAS,CAAC,CAAA;AACrD,EAAA,uBAASA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,CAAA;AACX,CAAA;AACO,MAAM,sBAAyB,GAAA"}
|
|
1
|
+
{"version":3,"file":"ThreadConversationView.js","sources":["../../../../src/screens/inbox/containers/ThreadConversationView.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n Center,\n Avatar,\n AvatarFallbackText,\n AvatarImage,\n Box,\n Button,\n ButtonText,\n VStack,\n HStack,\n Icon,\n Image,\n Spinner,\n Text,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { Platform } from 'react-native';\nimport { useFocusEffect, useNavigation, useRoute } from '@react-navigation/native';\nimport { useSelector } from 'react-redux';\nimport { orderBy, startCase, uniqBy } from 'lodash-es';\nimport * as ImagePicker from 'expo-image-picker';\nimport { encode as atob } from 'base-64';\nimport { Ionicons, MaterialCommunityIcons, MaterialIcons } from '@expo/vector-icons';\nimport { Actions, GiftedChat, IMessage, MessageText, Send } from 'react-native-gifted-chat';\nimport { IPost, IPostThread, PreDefinedRole, IExpoNotificationData, IFileInfo } from 'common';\nimport {\n OnThreadChatMessageAddedDocument as CHAT_MESSAGE_ADDED,\n useCreatePostThreadMutation,\n useOnThreadChatMessageAddedSubscription,\n useSendExpoNotificationOnPostMutation,\n useSendThreadMessageMutation,\n useThreadMessagesLazyQuery,\n useGetPostThreadLazyQuery,\n} from 'common/lib/generated/generated.js';\nimport { useUploadFilesNative } from '@messenger-box/platform-client';\nimport { objectId } from '@messenger-box/core';\nimport { format, isToday, isYesterday } from 'date-fns';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { config } from '../config';\nimport { ImageViewerModal, SlackMessage } from '../components/SlackMessageContainer';\nimport CachedImage from '../components/CachedImage';\n\nconst {\n MESSAGES_PER_PAGE,\n CALL_TO_ACTION_BOX_BGCOLOR,\n CALL_TO_ACTION_PATH,\n CALL_TO_ACTION_BUTTON_BORDERCOLOR,\n CALL_TO_ACTION_TEXT_COLOR,\n} = config;\n\nconst createdAtText = (value: string) => {\n if (!value) return '';\n let date = new Date(value);\n if (isToday(date)) return 'Today';\n if (isYesterday(date)) return 'Yesterday';\n return format(new Date(value), 'MMM dd, yyyy');\n};\n\ninterface IMessageProps extends IMessage {\n type: string;\n propsConfiguration?: any;\n}\n\nexport interface AlertMessageAttachmentsInterface {\n title: string;\n isTitleHtml: boolean;\n icon: string;\n callToAction: {\n title: string;\n link: string;\n };\n}\n\ninterface IThreadSubscriptionHandlerProps {\n subscribeToNewMessages: () => any;\n channelId: string;\n}\n\nconst ThreadConversationViewComponent = ({ channelId, postParentId, isPostParentIdThread, role }: any) => {\n const { params } = useRoute<any>();\n const [channelToTop, setChannelToTop] = useState(0);\n const [channelMessages, setChannelMessages] = useState<any>([]);\n const auth: any = useSelector(userSelector);\n const [totalCount, setTotalCount] = useState<any>(0);\n const [selectedImage, setImage] = useState<string>('');\n const [loadingOldMessages, setLoadingOldMessages] = useState<boolean>(false);\n const [loadEarlierMsg, setLoadEarlierMsg] = useState(false);\n const navigation = useNavigation<any>();\n const [files, setFiles] = useState<File[]>([]);\n const [images, setImages] = useState<ImagePicker.ImagePickerAsset[]>([]);\n const [msg, setMsg] = useState<string>('');\n const [loading, setLoading] = useState(false);\n const [imageLoading, setImageLoading] = useState(false);\n const [expoTokens, setExpoTokens] = useState<any[]>([]);\n const [isShowImageViewer, setImageViewer] = useState<boolean>(false);\n const [imageObject, setImageObject] = useState<any>({});\n const [parentId, setParentId] = useState<any>(postParentId);\n const [postThread, setPostThread] = useState<IPostThread>();\n const { startUpload } = useUploadFilesNative();\n const [threadPost, setThreadPost] = useState<any[]>([]);\n const [isScrollToBottom, setIsScrollToBottom] = useState(false);\n const threadMessageListRef = useRef<any>(null);\n\n // const [sendThreadMessage] = useSendThreadMessageMutation();\n const [sendThreadMessage] = useCreatePostThreadMutation();\n const [sendExpoNotificationOnPostMutation] = useSendExpoNotificationOnPostMutation();\n\n const [\n getThreadMessages,\n { data, loading: threadLoading, fetchMore: fetchMoreMessages, refetch: refetchThreadMessages, subscribeToMore },\n ] = useGetPostThreadLazyQuery({ fetchPolicy: 'cache-and-network' });\n\n useFocusEffect(\n React.useCallback(() => {\n // navigation?.setOptions({ title: params?.title ?? 'Thread' });\n\n navigation.setOptions({\n title: params?.title ?? 'Thread',\n headerLeft: (props: any) => (\n <Button\n bg={'transparent'}\n $pressed-bg=\"$trueGray200\"\n $active-bg={'$trueGray200'}\n onPress={() => navigation.goBack()}\n >\n <MaterialIcons size={20} name=\"arrow-back-ios\" color={'black'} />\n </Button>\n ),\n });\n if (postParentId) {\n refetchThreadMessages({\n channelId: channelId?.toString(),\n role: role?.toString(),\n postParentId: postParentId?.toString(),\n selectedFields: 'id channel post replies replyCount lastReplyAt createdAt updatedAt',\n limit: MESSAGES_PER_PAGE,\n });\n }\n setParentId(postParentId);\n\n return () => {\n setTotalCount(0);\n setChannelMessages([]);\n setThreadPost([]);\n };\n }, [postParentId]),\n );\n\n useEffect(() => {\n //if (parentId && parentId == 0) {\n if (channelId && parentId) {\n getThreadMessages({\n variables: {\n channelId: channelId?.toString(),\n role: role?.toString(),\n postParentId: !parentId || parentId == 0 ? null : parentId?.toString(),\n selectedFields: 'id channel post replies replyCount lastReplyAt createdAt updatedAt',\n limit: MESSAGES_PER_PAGE,\n },\n });\n }\n }, [parentId]);\n\n React.useEffect(() => {\n if (data?.getPostThread) {\n const threads: any = data.getPostThread;\n const threadPost = threads?.post ?? [];\n const threadReplies = threads?.replies ?? [];\n const messeageTotalCount = threads?.replyCount ?? 0;\n const messages = [threadPost, ...threadReplies];\n\n if (\n (messages && messages.length > 0 && messeageTotalCount > totalCount) ||\n (messages && messages.length > 0 && channelMessages.length === 0)\n ) {\n setThreadMessages(messages, messeageTotalCount);\n }\n }\n if (isScrollToBottom && channelMessages) scrollToBottom();\n // scrollToBottom();\n // if (!isPostParentIdThread) {\n // // setTotalCount((pc: any) => pc + threadTotalCount);\n // setChannelMessages((oldMessages: any) => uniqBy([...threadMessage, ...oldMessages], ({ id }) => id));\n // }\n }, [data, channelMessages, loadingOldMessages, totalCount, isPostParentIdThread, isScrollToBottom]);\n\n const setThreadMessages = (messages: any, messagesTotalCount: number) => {\n setChannelMessages((oldMessages: any) => uniqBy([...messages, ...oldMessages], ({ id }) => id));\n setTotalCount(messagesTotalCount);\n };\n\n React.useEffect(() => {\n if (selectedImage) setImageLoading(false);\n }, [selectedImage]);\n\n const scrollToBottom = React.useCallback(() => {\n if (threadMessageListRef?.current) {\n setIsScrollToBottom(false);\n threadMessageListRef.current.scrollTop = threadMessageListRef.current.scrollHeight;\n }\n }, [threadMessageListRef]);\n\n const onFetchOld = useCallback(() => {\n if (totalCount > channelMessages.length && !loadingOldMessages) {\n setLoadEarlierMsg(true);\n fetchMoreMessages({\n variables: {\n channelId: channelId?.toString(),\n role: role?.toString(),\n postParentId: parentId?.toString(),\n selectedFields: 'id channel post replies replyCount lastReplyAt createdAt updatedAt',\n limit: MESSAGES_PER_PAGE,\n skip: channelMessages.length - 1,\n },\n })\n .then((res: any) => {\n if (res?.data?.getPostThread) {\n const threads: any = res?.data?.getPostThread;\n const threadReplies = threads?.replies ?? [];\n const messeageTotalCount = threads?.replyCount ?? 0;\n setThreadMessages(threadReplies, messeageTotalCount);\n }\n })\n .finally(() => {\n setLoadEarlierMsg(false);\n setLoadingOldMessages(false);\n })\n .catch((error: any) => {\n setLoadEarlierMsg(false);\n setLoadingOldMessages(false);\n });\n }\n }, [parentId, channelId, totalCount, channelMessages]);\n\n // const isCloseToTop = ({ layoutMeasurement, contentOffset, contentSize }) => {\n // return contentOffset.y <= 100; // 100px from top\n // };\n\n const isCloseToTop = ({ layoutMeasurement, contentOffset, contentSize }) => {\n const paddingToTop = 60;\n return contentSize.height - layoutMeasurement.height - paddingToTop <= contentOffset.y;\n };\n\n const dataURLtoFile = (dataurl: any, filename: any) => {\n var arr = dataurl.split(','),\n mime = arr[0].match(/:(.*?);/)[1],\n bstr = atob(arr[1]),\n n = bstr.length,\n u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new File([u8arr], filename, { type: mime });\n };\n\n const onSelectImages = async () => {\n setImageLoading(true);\n let imageSource: any = await ImagePicker.launchImageLibraryAsync({\n mediaTypes: ImagePicker.MediaTypeOptions.Images,\n allowsEditing: true,\n aspect: [4, 3],\n quality: 1,\n base64: true,\n });\n if (!imageSource.canceled) {\n const image = 'data:image/jpeg;base64,' + imageSource.assets[0]?.base64;\n setImage(image);\n const file = dataURLtoFile(image, 'inputImage.jpg');\n setFiles((files) => files.concat(file));\n setImages((images) => images.concat(imageSource.assets[0] as ImagePicker.ImagePickerAsset));\n }\n if (imageSource.canceled) setLoading(false);\n };\n\n const handleSend = useCallback(\n async (message: string) => {\n if (!channelId) return;\n if (!message && message != ' ' && images.length == 0) return;\n\n const postId = objectId();\n\n if (images && images.length > 0) {\n setLoading(true);\n const uploadResponse = await startUpload({\n file: images,\n saveUploadedFile: {\n variables: {\n postId,\n },\n },\n createUploadLink: {\n variables: {\n postId,\n },\n },\n });\n if (uploadResponse?.error) setLoading(false);\n const uploadedFiles = uploadResponse.data as unknown as IFileInfo[];\n if (uploadResponse.data) {\n setImage('');\n setFiles([]);\n setImages([]);\n //setLoading(false);\n const files = uploadedFiles?.map((f: any) => f.id) ?? null;\n await sendThreadMessage({\n variables: {\n postId,\n channelId,\n postThreadId: postThread && postThread?.id,\n postParentId: !parentId || parentId == 0 ? null : parentId,\n threadMessageInput: {\n content: message,\n files,\n role,\n },\n },\n update: (cache, { data, errors }: any) => {\n if (!data || errors) {\n setLoading(false);\n return;\n }\n setPostThread(data?.createPostThread?.data);\n const lastMessageId = data?.createPostThread?.lastMessage?.id;\n if (!parentId || parentId == 0) {\n setParentId(data?.createPostThread?.lastMessage?.id);\n }\n\n setChannelToTop(channelToTop + 1);\n setLoading(false);\n setMsg('');\n const msg = message == '' ? 'Send a file' : message;\n sendPushNotification(lastMessageId, channelId, parentId, data?.createPostThread?.data?.id);\n },\n });\n }\n } else {\n setLoading(true);\n await sendThreadMessage({\n variables: {\n channelId,\n postThreadId: postThread && postThread?.id,\n postParentId: !parentId || parentId == 0 ? null : parentId,\n threadMessageInput: {\n content: message,\n role,\n },\n },\n update: (cache, { data, errors }: any) => {\n if (!data || errors) {\n setLoading(false);\n return;\n }\n setPostThread(data?.createPostThread.data);\n const lastMessageId = data?.createPostThread?.lastMessage?.id;\n if (!parentId || parentId == 0) {\n setParentId(data?.createPostThread?.lastMessage?.id);\n }\n setChannelToTop(channelToTop + 1);\n setLoading(false);\n setMsg('');\n\n sendPushNotification(lastMessageId, channelId, parentId, data?.createPostThread?.data?.id);\n },\n });\n }\n },\n [setChannelMessages, channelId, images, parentId, expoTokens],\n );\n\n const sendPushNotification = async (messageId: string, channelId: string, parentId: any, threadId: string) => {\n const notificationData: IExpoNotificationData = {\n url: config.THREAD_MESSEGE_PATH,\n params: { channelId, title: params?.title ?? 'Thread', postParentId: parentId, hideTabBar: true },\n screen: 'DialogThreadMessages',\n thread: { id: threadId },\n other: { sound: Platform.OS === 'android' ? undefined : 'default' },\n };\n if (parentId || parentId == 0) {\n await sendExpoNotificationOnPostMutation({\n variables: {\n postId: messageId?.toString(),\n notificationData,\n },\n });\n }\n };\n\n const messageList = useMemo(() => {\n let currentDate = '';\n let res: any = [];\n const filteredMessages =\n channelMessages && channelMessages?.length > 0 ? uniqBy([...channelMessages], ({ id }: any) => id) : [];\n if (filteredMessages?.length) {\n orderBy(filteredMessages, ['createdAt'], ['desc']).map((msg) => {\n let message: IMessageProps = {\n _id: '',\n text: '',\n createdAt: 0,\n user: {\n _id: '',\n name: '',\n avatar: '',\n },\n type: '',\n };\n const date = new Date(msg.createdAt);\n message._id = msg.id;\n message.text = msg.message;\n message.createdAt = date;\n (message.user = {\n _id: msg?.author?.id ?? auth?.profile?.id,\n name:\n msg?.author?.givenName ??\n auth?.profile?.given_name + ' ' + msg?.author?.familyName ??\n auth?.profile?.family_name,\n avatar: msg?.author?.picture ?? auth?.profile?.picture,\n }),\n (message.image = msg.files?.data[0]?.url),\n (message.sent = msg?.isDelivered),\n (message.received = msg?.isRead);\n message.type = msg?.type;\n message.propsConfiguration = msg?.propsConfiguration;\n res.push(message);\n });\n }\n return res?.length > 0 ? uniqBy([...res], ({ _id }: any) => _id) : [];\n //return res;\n }, [channelMessages]);\n\n const renderSend = (props) => {\n return (\n <Send {...props}>\n <Box>\n <MaterialCommunityIcons\n name=\"send-circle\"\n style={{ marginBottom: 5, marginRight: 5 }}\n size={32}\n color=\"#2e64e5\"\n />\n </Box>\n </Send>\n );\n };\n\n const renderMessageText = (props: any) => {\n const { currentMessage } = props;\n if (currentMessage.type === 'ALERT') {\n const attachment = currentMessage?.propsConfiguration?.contents?.attachment;\n let action: string = '';\n let actionId: any = '';\n let params: any = {};\n if (attachment?.callToAction?.extraParams) {\n const extraParams: any = attachment?.callToAction?.extraParams;\n const route: any = extraParams?.route ?? null;\n let path: any = null;\n let param: any = null;\n if (role && role == PreDefinedRole.Guest) {\n path = route?.guest?.name ? route?.guest?.name ?? null : null;\n param = route?.guest?.params ? route?.guest?.params ?? null : null;\n } else if (role && role == PreDefinedRole.Owner) {\n path = route?.host?.name ? route?.host?.name ?? null : null;\n param = route?.host?.params ? route?.host?.params ?? null : null;\n } else {\n path = route?.host?.name ? route?.host?.name ?? null : null;\n param = route?.host?.params ? route?.host?.params ?? null : null;\n }\n\n action = path;\n params = { ...param };\n } else if (attachment?.callToAction?.link) {\n action = CALL_TO_ACTION_PATH;\n actionId = attachment?.callToAction?.link.split('/').pop();\n params = { reservationId: actionId };\n }\n\n // if (attachment?.callToAction?.link?.includes('my-reservation-details')) {\n // action = CALL_TO_ACTION_PATH;\n // actionId = attachment?.callToAction?.link.split('/').pop();\n // }\n\n return (\n <>\n {attachment?.callToAction && action ? (\n <Box bg={CALL_TO_ACTION_BOX_BGCOLOR} borderRadius={15} pb={2}>\n <Button\n variant={'outline'}\n size={'sm'}\n borderColor={CALL_TO_ACTION_BUTTON_BORDERCOLOR}\n onPress={() => action && params && navigation.navigate(action, params)}\n //onPress={() => navigation.navigate(action, { reservationId: actionId })}\n >\n <ButtonText color={CALL_TO_ACTION_TEXT_COLOR}>\n {attachment.callToAction.title}\n </ButtonText>\n </Button>\n <MessageText\n {...props}\n textStyle={{\n left: { marginLeft: 5, color: CALL_TO_ACTION_TEXT_COLOR, paddingHorizontal: 2 },\n }}\n />\n </Box>\n ) : (\n <MessageText {...props} textStyle={{ left: { marginLeft: 5 } }} />\n )}\n {/* <MessageText\n {...props}\n textStyle={{ left: { marginLeft: 5, color: CALL_TO_ACTION_TEXT_COLOR, paddingHorizontal: 2 } }}\n /> */}\n </>\n );\n } else {\n return <MessageText {...props} textStyle={{ left: { marginLeft: 5 } }} />;\n }\n };\n\n const renderActions = (props) => {\n return (\n <Actions\n {...props}\n icon={() => <Ionicons name={'image'} size={30} color={'black'} onPress={onSelectImages} />}\n />\n );\n };\n\n const renderAccessory = (props) => {\n return (\n <Box>\n {selectedImage !== '' ? (\n <HStack alignItems={'center'}>\n <Image\n ml={'$3'}\n key={selectedImage}\n alt={'image'}\n source={{ uri: selectedImage }}\n size={'xs'}\n />\n <Button\n variant={'solid'}\n //bg={'$secondary400'}\n bg={'transparent'}\n onPress={() => {\n setFiles([]);\n setImage('');\n setImages([]);\n }}\n >\n <ButtonText color={'$black'}>Cancel</ButtonText>\n </Button>\n </HStack>\n ) : null}\n </Box>\n );\n };\n\n const setImageViewerObject = (obj: any, v: boolean) => {\n setImageObject(obj);\n setImageViewer(v);\n };\n\n const modalContent = React.useMemo(() => {\n if (!imageObject) return <></>;\n const { image, _id } = imageObject;\n return (\n <CachedImage\n style={{ width: '100%', height: '100%' }}\n resizeMode={'cover'}\n // cacheKey={`${_id}-conversation-modal-image-key`}\n cacheKey={`${_id}-slack-bubble-imageKey`}\n source={{\n uri: image,\n //headers: `Authorization: Bearer ${token}`,\n expiresIn: 86400,\n }}\n alt={'image'}\n />\n );\n }, [imageObject]);\n\n const renderMessage = (props: any) => {\n return <SlackMessage {...props} isShowImageViewer={isShowImageViewer} setImageViewer={setImageViewerObject} />;\n };\n\n let onScroll = false;\n\n const onMomentumScrollBegin = ({ nativeEvent }: any) => {\n onScroll = true;\n console.log('scroll top');\n if (!loadingOldMessages && isCloseToTop(nativeEvent) && totalCount > channelMessages?.length) {\n onFetchOld();\n }\n };\n\n const onEndReached = () => {\n console.log('on end reached');\n if (!onScroll) return;\n // load messages, show ActivityIndicator\n onScroll = false;\n // setLoadingOldMessages(true);\n };\n\n return (\n <>\n {(loadingOldMessages || loadEarlierMsg) && <Spinner color={'$blue500'} />}\n {/* {loadEarlierMsg && <Spinner />} */}\n {isPostParentIdThread && (\n <>\n {threadPost?.length > 0 && (\n <>\n <VStack px={'$2'} pt={'$2'} pb={'$0'} space={'sm'}>\n <HStack space={'sm'} alignItems={'center'}>\n <Avatar bg={'transparent'} size={'md'}>\n <AvatarFallbackText>\n {startCase(threadPost[0]?.author?.username?.charAt(0))}\n </AvatarFallbackText>\n <AvatarImage\n alt=\"image\"\n style={{\n borderRadius: 6,\n borderWidth: 2,\n borderColor: '#fff',\n }}\n source={{\n uri: threadPost[0]?.author?.picture,\n }}\n />\n </Avatar>\n <Box>\n <Text color={'$black'} fontWeight={'$bold'}>\n {threadPost[0]?.author?.givenName ?? ''}{' '}\n {threadPost[0]?.author?.familyName ?? ''}\n </Text>\n <Text color={'$trueGray500'} pl={'$0'}>\n {createdAtText(threadPost[0]?.createdAt)} at{' '}\n {format(new Date(threadPost[0]?.createdAt), 'hh:ss:a')}\n </Text>\n </Box>\n </HStack>\n <HStack px={'$2'} space={'sm'} alignItems={'center'}>\n <Text>{threadPost[0]?.message ?? ''}</Text>\n </HStack>\n </VStack>\n\n <Box py={'$4'}>\n <Box\n px={'$4'}\n borderTopWidth={'$1'}\n borderBottomWidth={'$1'}\n py={'$2'}\n borderColor={'$trueGray200'}\n >\n <Text color={'$trueGray600'} fontWeight={'$bold'}>\n {threadPost[0]?.replies?.totalCount}{' '}\n {threadPost[0]?.replies?.totalCount > 0 ? 'replies' : 'reply'}\n </Text>\n </Box>\n </Box>\n </>\n )}\n </>\n )}\n <GiftedChat\n ref={threadMessageListRef}\n wrapInSafeArea={false}\n renderLoading={() => <Spinner color={'$blue500'} />}\n messages={messageList}\n listViewProps={{\n onEndReached: onEndReached,\n onEndReachedThreshold: 0.5,\n onMomentumScrollBegin: onMomentumScrollBegin,\n }}\n onSend={(messages) => handleSend(messages[0]?.text ?? ' ')}\n text={msg ? msg : ' '}\n onInputTextChanged={(text) => setMsg(text)}\n renderFooter={() =>\n loading ? <Spinner color={'$blue500'} /> : imageLoading ? <Spinner color={'$blue500'} /> : ''\n }\n scrollToBottom\n user={{\n _id: auth?.id || '',\n }}\n isTyping={true}\n alwaysShowSend={loading ? false : true}\n // onLoadEarlier={onFetchOld}\n infiniteScroll={true}\n renderSend={renderSend}\n // loadEarlier={data?.messages?.totalCount > channelMessages.length}\n // isLoadingEarlier={loadEarlierMsg}\n // renderLoadEarlier={() =>\n // !loadEarlierMsg && (\n // <Center py={2}>\n // <Button\n // onPress={() => onFetchOld(channelMessages?.length)}\n // variant={'outline'}\n // _text={{ color: 'black', fontSize: 15, fontWeight: 'bold' }}\n // >\n // Load earlier messages\n // </Button>\n // </Center>\n // )\n // }\n renderMessageText={renderMessageText}\n minInputToolbarHeight={50}\n renderActions={renderActions}\n renderAccessory={renderAccessory}\n renderMessage={renderMessage}\n renderChatFooter={() => (\n <>\n <ImageViewerModal\n isVisible={isShowImageViewer}\n setVisible={setImageViewer}\n modalContent={modalContent}\n />\n <SubscriptionHandler\n channelId={channelId}\n subscribeToNewMessages={() =>\n subscribeToMore({\n document: CHAT_MESSAGE_ADDED,\n variables: {\n channelId: channelId?.toString(),\n postParentId: !parentId || parentId == 0 ? null : parentId?.toString(),\n },\n updateQuery: (prev, { subscriptionData }: any) => {\n if (!subscriptionData.data) return prev;\n const newMessage: any = subscriptionData?.data?.threadChatMessageAdded;\n const prevReplyCount: any = prev?.getPostThread?.replyCount;\n const newReplyCount = prevReplyCount || 0 + 1;\n const replies = prev?.getPostThread?.replies || [];\n setChannelMessages((oldMessages: any) =>\n uniqBy([...oldMessages, newMessage], ({ id }) => id),\n );\n setTotalCount(newReplyCount);\n return Object.assign({}, prev, {\n getPostThread: {\n ...prev?.getPostThread,\n lastReplyAt: newMessage.createdAt,\n replies: [newMessage, ...replies],\n replyCount: newReplyCount,\n updatedAt: newMessage.createdAt,\n },\n });\n },\n })\n }\n />\n </>\n )}\n messagesContainerStyle={messageList?.length == 0 && { transform: [{ scaleY: -1 }] }}\n renderChatEmpty={() => (\n <>\n {!threadLoading && messageList && messageList?.length == 0 && (\n <Box p={'$5'}>\n <Center mt={'$6'}>\n <Ionicons name=\"chatbubbles\" size={30} />\n <Text>You don't have any message yet!</Text>\n </Center>\n </Box>\n )}\n </>\n )}\n lightboxProps={{\n underlayColor: 'transparent',\n springConfig: { tension: 90000, friction: 90000 },\n disabled: true,\n }}\n />\n </>\n );\n};\n\nconst SubscriptionHandler = ({ subscribeToNewMessages, channelId }: IThreadSubscriptionHandlerProps) => {\n useEffect(() => subscribeToNewMessages(), [channelId]);\n return <></>;\n};\n\nexport const ThreadConversationView = ThreadConversationViewComponent;\n// export const ThreadConversationView = React.memo(ThreadConversationViewComponent);\n"],"names":["React","_a","_b","_c","threadPost","_d","atob","files","images","data","_e","_f","_g","channelId","parentId","msg","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","params","SlackMessage","CHAT_MESSAGE_ADDED"],"mappings":"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"}
|
|
@@ -38,7 +38,7 @@ const ThreadsViewComponent = ({
|
|
|
38
38
|
useDispatch();
|
|
39
39
|
const navigation = useNavigation();
|
|
40
40
|
useIsFocused();
|
|
41
|
-
useState(false);
|
|
41
|
+
const [refreshing, setRefresh] = useState(false);
|
|
42
42
|
const [threadData, setThreadsData] = useState([]);
|
|
43
43
|
useFocusEffect(React__default.useCallback(() => {
|
|
44
44
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadsView.js","sources":["../../../../src/screens/inbox/containers/ThreadsView.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useEffect, useState } from 'react';\nimport { FlatList, Box, Heading, Input, Text, Icon, Center, Spinner, Button } from '@admin-layout/gluestack-ui-mobile';\nimport { Ionicons } from '@expo/vector-icons';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useNavigation, useRoute, useIsFocused, useFocusEffect } from '@react-navigation/native';\nimport { orderBy, uniqBy, startCase } from 'lodash-es';\nimport {\n useThreadMessagesQuery,\n OnThreadCreatedUpdatedDocument as THREAD_CHAT_ADDED,\n useOnThreadCreatedUpdatedSubscription,\n} from 'common/lib/generated/generated.js';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { CHANGE_SETTINGS_ACTION } from '@admin-layout/client';\nimport { ThreadViewItem } from '../components/ThreadsViewItem';\nimport { config } from '../config';\nconst { MESSAGES_PER_PAGE } = config;\n\nexport interface ThreadsViewProps {\n data: any;\n loading: boolean;\n refetch: any;\n subscribeToMore: any;\n error: any;\n channelId?: string;\n role?: string;\n channelsDetail?: any;\n refetchChannelDetail: (id: any) => Promise<any>;\n}\n\ninterface IThreadSubscriptionHandlerProps {\n subscribeToNewMessages: () => any;\n channelId: string | undefined;\n}\n\nconst ThreadsViewComponent = ({\n data,\n loading: threadLoading,\n refetch,\n subscribeToMore,\n error,\n channelId,\n role,\n channelsDetail,\n refetchChannelDetail,\n}: ThreadsViewProps) => {\n const { params } = useRoute<any>();\n const auth = useSelector(userSelector);\n const dispatch = useDispatch();\n const navigation = useNavigation<any>();\n const isFocused = useIsFocused();\n const [refreshing, setRefresh] = useState<boolean>(false);\n const [threadData, setThreadsData] = useState<any>([]);\n\n // const {\n // data,\n // loading: threadLoading,\n // error,\n // refetch,\n // subscribeToMore,\n // } = useThreadMessagesQuery({\n // variables: {\n // channelId: channelId?.toString(),\n // role: role?.toString(),\n // limit: MESSAGES_PER_PAGE,\n // repliesLimit2: 5,\n // },\n // // fetchPolicy: 'cache-and-network',\n // });\n\n // const { data: threadCreatedUpdated } = useOnThreadCreatedUpdatedSubscription({\n // variables: { channelId: channelId?.toString() },\n // });\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n navigation?.setOptions({ title: params?.title ?? 'Thread' });\n refetch({\n channelId: channelId?.toString(),\n role: role?.toString(),\n limit: MESSAGES_PER_PAGE,\n repliesLimit2: 5,\n });\n // .then(({ data }) => {\n // if (!data?.threadMessages?.data) {\n // return;\n // }\n\n // if (data?.threadMessages?.data?.length) {\n // const { data: newThreads } = data?.threadMessages;\n // setThreadsData((oldThreads: any) => uniqBy([...oldThreads, ...newThreads], ({ id }) => id));\n // }\n // });\n\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, []),\n );\n\n // React.useEffect(() => {\n // if (data?.threadMessages?.data?.length) {\n // const { data: newThreads } = data?.threadMessages;\n // setThreadsData((oldThreads: any) => uniqBy([...oldThreads, ...newThreads], ({ id }) => id));\n // }\n // }, [data]);\n\n // React.useEffect(() => {\n // if (threadCreatedUpdated?.threadCreatedUpdated?.data) {\n // const { data: newThreads } = threadCreatedUpdated?.threadCreatedUpdated;\n\n // setThreadsData((oldThreads: any) => {\n // const i = oldThreads.findIndex((el: any) => el.id === newThreads?.id);\n // if (i > -1) oldThreads[i] = newThreads; // (2)\n // else oldThreads.push(newThreads);\n // return oldThreads;\n // });\n // // setThreadsData((oldThreads: any) => uniqBy([...oldThreads, newThreads], ({ id }) => id));\n // }\n // }, [threadCreatedUpdated]);\n\n const setData = React.useCallback((newThreads: any) => {\n setThreadsData((oldThreads: any) => {\n const i = oldThreads.findIndex((el: any) => el.id === newThreads?.id);\n if (i > -1) oldThreads[i] = newThreads; // (2)\n else oldThreads.push(newThreads);\n return oldThreads;\n });\n // setThreadsData((oldThreads: any) => uniqBy([...oldThreads, newThreads], ({ id }) => id));\n }, []);\n\n // const threads = React.useMemo(() => {\n // if (!threadData?.length) return null;\n // return orderBy(threadData, ['updatedAt'], ['desc']) || [];\n // //return threadData || [];\n // }, [threadData]);\n\n const threads = React.useMemo(() => {\n // if (!data?.threadMessages?.data?.length) return null;\n // const { data: newThreads } = data?.threadMessages;\n if (data?.threadMessages?.data?.length == 0) return [];\n const threadsFiltered = data?.threadMessages?.data\n ? uniqBy([...data?.threadMessages?.data], ({ id }: any) => id)\n : [];\n return orderBy(threadsFiltered, ['updatedAt'], ['desc']) || [];\n }, [data]);\n\n const threadReplies = React.useMemo(() => {\n if (!threads?.length) return null;\n return threads?.map((t: any) => t?.replies)?.flat(1) || [];\n //return threadData || [];\n }, [threads]);\n\n const handleSelectThread = useCallback((id: any, title: any, postParentId: any) => {\n navigation.navigate(config.THREAD_MESSEGE_PATH as any, {\n channelId: id,\n role: role?.toString(),\n title: title,\n postParentId: postParentId,\n hideTabBar: true,\n });\n // if (params?.channelId) {\n // navigation.navigate(config.THREAD_MESSEGE_PATH as any, {\n // channelId: params?.channelId,\n // title: params?.title ?? null,\n // postParentId: postParentId,\n // hideTabBar: true,\n // });\n // } else {\n // navigation.navigate(config.THREAD_MESSEGE_PATH as any, {\n // channelId: id,\n // title: title,\n // postParentId: postParentId,\n // hideTabBar: true,\n // });\n // }\n }, []);\n\n const handleRefresh = useCallback(() => {\n refetch({\n channelId: channelId?.toString(),\n role: role?.toString(),\n limit: MESSAGES_PER_PAGE,\n repliesLimit2: 5,\n });\n // .then(({ data }) => {\n // if (!data?.threadMessages?.data) {\n // return;\n // }\n\n // if (data?.threadMessages?.data?.length) {\n // const { data: newThreads } = data?.threadMessages;\n // setThreadsData((oldThreads: any) => uniqBy([...oldThreads, ...newThreads], ({ id }) => id));\n // }\n // });\n }, []);\n\n const fetchMoreThreads = useCallback(() => {\n refetch({\n channelId: channelId?.toString(),\n role: role?.toString(),\n skip: threads?.length,\n });\n }, []);\n\n // if (!threadReplies || threadReplies?.length == 0) {\n // return (\n // <Center w=\"full\" bg={'f8f8f8'} height={'full'}>\n // You don't have any message yet!\n // </Center>\n // );\n // }\n console.log('threadLoading', threadLoading, ' threads?.length=', threads?.length);\n\n return (\n <Box\n flex={1}\n p={'$2'}\n pb={'$0'}\n $dark-borderColor=\"$coolGray600\"\n $dark-backgroundColor=\"$trueGray700\"\n $light-backgroundColor=\"$trueGray50\"\n >\n <FlatList\n style={{ flex: 1 }}\n data={threads && threads?.length > 0 ? threads : []}\n onRefresh={handleRefresh}\n refreshing={threadLoading}\n contentContainerStyle={{ paddingBottom: 60 }}\n ItemSeparatorComponent={() => <Box height=\"$0.5\" backgroundColor=\"$gray200\" />}\n renderItem={({ item: thread, index }) => (\n <ThreadViewItem\n key={index}\n onOpen={handleSelectThread}\n currentUser={auth}\n thread={thread}\n role={role}\n setData={setData}\n />\n )}\n ListEmptyComponent={() => (\n <>\n {/* {!threadLoading || threads?.length == 0} */}\n {!threadLoading && threads?.length == 0 && (\n <Box p={'$5'}>\n <Center mt={'$6'}>\n <Ionicons name=\"chatbubbles\" size={50} />\n <Text>You don't have any message yet!</Text>\n </Center>\n </Box>\n )}\n </>\n )}\n ListFooterComponent={() => (\n <>\n <SubscriptionHandler\n channelId={channelId}\n subscribeToNewMessages={() =>\n subscribeToMore({\n document: THREAD_CHAT_ADDED,\n variables: {\n channelId: channelId?.toString(),\n postParentId: null,\n },\n updateQuery: (prev, { subscriptionData }: any) => {\n if (!subscriptionData.data) return prev;\n const newPostThreadData: any =\n subscriptionData?.data?.threadCreatedUpdated?.data;\n const newMessage: any =\n subscriptionData?.data?.threadCreatedUpdated?.lastMessage;\n const data = prev?.threadMessages?.data?.map((t: any) =>\n t.id === newPostThreadData?.id\n ? {\n ...t,\n replies: [newMessage, ...t?.replies],\n replyCount: newPostThreadData?.replyCount,\n lastReplyAt: newPostThreadData?.lastReplyAt,\n updatedAt: newPostThreadData?.updatedAt,\n }\n : t,\n );\n\n return Object.assign({}, prev, {\n threadMessages: {\n ...prev?.threadMessages,\n // totalCount: prev?.threadMessages?.totalCount + 1,\n data: data,\n },\n });\n },\n })\n }\n />\n </>\n )}\n keyExtractor={(item, index) => 'threads-view-key' + index}\n onEndReached={fetchMoreThreads}\n onEndReachedThreshold={0.1}\n />\n </Box>\n );\n};\n\nconst SubscriptionHandler = ({ subscribeToNewMessages, channelId }: IThreadSubscriptionHandlerProps) => {\n useEffect(() => subscribeToNewMessages(), [channelId]);\n return <></>;\n};\n\nexport const ThreadsView = ThreadsViewComponent;\n\n// export const ThreadsView = React.memo(ThreadsViewComponent);\n"],"names":["React","THREAD_CHAT_ADDED","data"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ThreadsView.js","sources":["../../../../src/screens/inbox/containers/ThreadsView.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useEffect, useState } from 'react';\nimport { FlatList, Box, Heading, Input, Text, Icon, Center, Spinner, Button } from '@admin-layout/gluestack-ui-mobile';\nimport { Ionicons } from '@expo/vector-icons';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useNavigation, useRoute, useIsFocused, useFocusEffect } from '@react-navigation/native';\nimport { orderBy, uniqBy, startCase } from 'lodash-es';\nimport {\n useThreadMessagesQuery,\n OnThreadCreatedUpdatedDocument as THREAD_CHAT_ADDED,\n useOnThreadCreatedUpdatedSubscription,\n} from 'common/lib/generated/generated.js';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { CHANGE_SETTINGS_ACTION } from '@admin-layout/client';\nimport { ThreadViewItem } from '../components/ThreadsViewItem';\nimport { config } from '../config';\nconst { MESSAGES_PER_PAGE } = config;\n\nexport interface ThreadsViewProps {\n data: any;\n loading: boolean;\n refetch: any;\n subscribeToMore: any;\n error: any;\n channelId?: string;\n role?: string;\n channelsDetail?: any;\n refetchChannelDetail: (id: any) => Promise<any>;\n}\n\ninterface IThreadSubscriptionHandlerProps {\n subscribeToNewMessages: () => any;\n channelId: string | undefined;\n}\n\nconst ThreadsViewComponent = ({\n data,\n loading: threadLoading,\n refetch,\n subscribeToMore,\n error,\n channelId,\n role,\n channelsDetail,\n refetchChannelDetail,\n}: ThreadsViewProps) => {\n const { params } = useRoute<any>();\n const auth = useSelector(userSelector);\n const dispatch = useDispatch();\n const navigation = useNavigation<any>();\n const isFocused = useIsFocused();\n const [refreshing, setRefresh] = useState<boolean>(false);\n const [threadData, setThreadsData] = useState<any>([]);\n\n // const {\n // data,\n // loading: threadLoading,\n // error,\n // refetch,\n // subscribeToMore,\n // } = useThreadMessagesQuery({\n // variables: {\n // channelId: channelId?.toString(),\n // role: role?.toString(),\n // limit: MESSAGES_PER_PAGE,\n // repliesLimit2: 5,\n // },\n // // fetchPolicy: 'cache-and-network',\n // });\n\n // const { data: threadCreatedUpdated } = useOnThreadCreatedUpdatedSubscription({\n // variables: { channelId: channelId?.toString() },\n // });\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n navigation?.setOptions({ title: params?.title ?? 'Thread' });\n refetch({\n channelId: channelId?.toString(),\n role: role?.toString(),\n limit: MESSAGES_PER_PAGE,\n repliesLimit2: 5,\n });\n // .then(({ data }) => {\n // if (!data?.threadMessages?.data) {\n // return;\n // }\n\n // if (data?.threadMessages?.data?.length) {\n // const { data: newThreads } = data?.threadMessages;\n // setThreadsData((oldThreads: any) => uniqBy([...oldThreads, ...newThreads], ({ id }) => id));\n // }\n // });\n\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, []),\n );\n\n // React.useEffect(() => {\n // if (data?.threadMessages?.data?.length) {\n // const { data: newThreads } = data?.threadMessages;\n // setThreadsData((oldThreads: any) => uniqBy([...oldThreads, ...newThreads], ({ id }) => id));\n // }\n // }, [data]);\n\n // React.useEffect(() => {\n // if (threadCreatedUpdated?.threadCreatedUpdated?.data) {\n // const { data: newThreads } = threadCreatedUpdated?.threadCreatedUpdated;\n\n // setThreadsData((oldThreads: any) => {\n // const i = oldThreads.findIndex((el: any) => el.id === newThreads?.id);\n // if (i > -1) oldThreads[i] = newThreads; // (2)\n // else oldThreads.push(newThreads);\n // return oldThreads;\n // });\n // // setThreadsData((oldThreads: any) => uniqBy([...oldThreads, newThreads], ({ id }) => id));\n // }\n // }, [threadCreatedUpdated]);\n\n const setData = React.useCallback((newThreads: any) => {\n setThreadsData((oldThreads: any) => {\n const i = oldThreads.findIndex((el: any) => el.id === newThreads?.id);\n if (i > -1) oldThreads[i] = newThreads; // (2)\n else oldThreads.push(newThreads);\n return oldThreads;\n });\n // setThreadsData((oldThreads: any) => uniqBy([...oldThreads, newThreads], ({ id }) => id));\n }, []);\n\n // const threads = React.useMemo(() => {\n // if (!threadData?.length) return null;\n // return orderBy(threadData, ['updatedAt'], ['desc']) || [];\n // //return threadData || [];\n // }, [threadData]);\n\n const threads = React.useMemo(() => {\n // if (!data?.threadMessages?.data?.length) return null;\n // const { data: newThreads } = data?.threadMessages;\n if (data?.threadMessages?.data?.length == 0) return [];\n const threadsFiltered = data?.threadMessages?.data\n ? uniqBy([...data?.threadMessages?.data], ({ id }: any) => id)\n : [];\n return orderBy(threadsFiltered, ['updatedAt'], ['desc']) || [];\n }, [data]);\n\n const threadReplies = React.useMemo(() => {\n if (!threads?.length) return null;\n return threads?.map((t: any) => t?.replies)?.flat(1) || [];\n //return threadData || [];\n }, [threads]);\n\n const handleSelectThread = useCallback((id: any, title: any, postParentId: any) => {\n navigation.navigate(config.THREAD_MESSEGE_PATH as any, {\n channelId: id,\n role: role?.toString(),\n title: title,\n postParentId: postParentId,\n hideTabBar: true,\n });\n // if (params?.channelId) {\n // navigation.navigate(config.THREAD_MESSEGE_PATH as any, {\n // channelId: params?.channelId,\n // title: params?.title ?? null,\n // postParentId: postParentId,\n // hideTabBar: true,\n // });\n // } else {\n // navigation.navigate(config.THREAD_MESSEGE_PATH as any, {\n // channelId: id,\n // title: title,\n // postParentId: postParentId,\n // hideTabBar: true,\n // });\n // }\n }, []);\n\n const handleRefresh = useCallback(() => {\n refetch({\n channelId: channelId?.toString(),\n role: role?.toString(),\n limit: MESSAGES_PER_PAGE,\n repliesLimit2: 5,\n });\n // .then(({ data }) => {\n // if (!data?.threadMessages?.data) {\n // return;\n // }\n\n // if (data?.threadMessages?.data?.length) {\n // const { data: newThreads } = data?.threadMessages;\n // setThreadsData((oldThreads: any) => uniqBy([...oldThreads, ...newThreads], ({ id }) => id));\n // }\n // });\n }, []);\n\n const fetchMoreThreads = useCallback(() => {\n refetch({\n channelId: channelId?.toString(),\n role: role?.toString(),\n skip: threads?.length,\n });\n }, []);\n\n // if (!threadReplies || threadReplies?.length == 0) {\n // return (\n // <Center w=\"full\" bg={'f8f8f8'} height={'full'}>\n // You don't have any message yet!\n // </Center>\n // );\n // }\n console.log('threadLoading', threadLoading, ' threads?.length=', threads?.length);\n\n return (\n <Box\n flex={1}\n p={'$2'}\n pb={'$0'}\n $dark-borderColor=\"$coolGray600\"\n $dark-backgroundColor=\"$trueGray700\"\n $light-backgroundColor=\"$trueGray50\"\n >\n <FlatList\n style={{ flex: 1 }}\n data={threads && threads?.length > 0 ? threads : []}\n onRefresh={handleRefresh}\n refreshing={threadLoading}\n contentContainerStyle={{ paddingBottom: 60 }}\n ItemSeparatorComponent={() => <Box height=\"$0.5\" backgroundColor=\"$gray200\" />}\n renderItem={({ item: thread, index }) => (\n <ThreadViewItem\n key={index}\n onOpen={handleSelectThread}\n currentUser={auth}\n thread={thread}\n role={role}\n setData={setData}\n />\n )}\n ListEmptyComponent={() => (\n <>\n {/* {!threadLoading || threads?.length == 0} */}\n {!threadLoading && threads?.length == 0 && (\n <Box p={'$5'}>\n <Center mt={'$6'}>\n <Ionicons name=\"chatbubbles\" size={50} />\n <Text>You don't have any message yet!</Text>\n </Center>\n </Box>\n )}\n </>\n )}\n ListFooterComponent={() => (\n <>\n <SubscriptionHandler\n channelId={channelId}\n subscribeToNewMessages={() =>\n subscribeToMore({\n document: THREAD_CHAT_ADDED,\n variables: {\n channelId: channelId?.toString(),\n postParentId: null,\n },\n updateQuery: (prev, { subscriptionData }: any) => {\n if (!subscriptionData.data) return prev;\n const newPostThreadData: any =\n subscriptionData?.data?.threadCreatedUpdated?.data;\n const newMessage: any =\n subscriptionData?.data?.threadCreatedUpdated?.lastMessage;\n const data = prev?.threadMessages?.data?.map((t: any) =>\n t.id === newPostThreadData?.id\n ? {\n ...t,\n replies: [newMessage, ...t?.replies],\n replyCount: newPostThreadData?.replyCount,\n lastReplyAt: newPostThreadData?.lastReplyAt,\n updatedAt: newPostThreadData?.updatedAt,\n }\n : t,\n );\n\n return Object.assign({}, prev, {\n threadMessages: {\n ...prev?.threadMessages,\n // totalCount: prev?.threadMessages?.totalCount + 1,\n data: data,\n },\n });\n },\n })\n }\n />\n </>\n )}\n keyExtractor={(item, index) => 'threads-view-key' + index}\n onEndReached={fetchMoreThreads}\n onEndReachedThreshold={0.1}\n />\n </Box>\n );\n};\n\nconst SubscriptionHandler = ({ subscribeToNewMessages, channelId }: IThreadSubscriptionHandlerProps) => {\n useEffect(() => subscribeToNewMessages(), [channelId]);\n return <></>;\n};\n\nexport const ThreadsView = ThreadsViewComponent;\n\n// export const ThreadsView = React.memo(ThreadsViewComponent);\n"],"names":["React","THREAD_CHAT_ADDED","data"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@messenger-box/platform-mobile",
|
|
3
|
-
"version": "10.0.3-alpha.
|
|
3
|
+
"version": "10.0.3-alpha.5",
|
|
4
4
|
"description": "Sample core for higher packages to depend on",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "CDMBase LLC",
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"watch-ts": "tsc --watch"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@messenger-box/core": "10.0.3-alpha.
|
|
26
|
-
"@messenger-box/platform-client": "10.0.3-alpha.
|
|
25
|
+
"@messenger-box/core": "10.0.3-alpha.5",
|
|
26
|
+
"@messenger-box/platform-client": "10.0.3-alpha.5",
|
|
27
27
|
"base-64": "1.0.0",
|
|
28
28
|
"react-native-gifted-chat": "1.0.4"
|
|
29
29
|
},
|
|
@@ -43,5 +43,5 @@
|
|
|
43
43
|
"typescript": {
|
|
44
44
|
"definition": "lib/index.d.ts"
|
|
45
45
|
},
|
|
46
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "c7d0623dc1a572d1809011b21c9cfcdcb093076e"
|
|
47
47
|
}
|