chat 1.0.8 → 4.0.0
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/dist/chunk-ACQNDPTB.js +356 -0
- package/dist/chunk-ACQNDPTB.js.map +1 -0
- package/dist/index.d.ts +1312 -0
- package/dist/index.js +1433 -0
- package/dist/index.js.map +1 -0
- package/dist/jsx-runtime-D7zHSnXe.d.ts +349 -0
- package/dist/jsx-runtime.d.ts +1 -0
- package/dist/jsx-runtime.js +17 -0
- package/dist/jsx-runtime.js.map +1 -0
- package/package.json +61 -97
- package/lib/module/ChatContext/index.js +0 -2
- package/lib/module/ChatContext/index.js.map +0 -1
- package/lib/module/ChatContext/types.js +0 -2
- package/lib/module/ChatContext/types.js.map +0 -1
- package/lib/module/classes/Chat/index.js +0 -2
- package/lib/module/classes/Chat/index.js.map +0 -1
- package/lib/module/classes/Chat/types.js +0 -2
- package/lib/module/classes/Chat/types.js.map +0 -1
- package/lib/module/classes/Inbox/index.js +0 -2
- package/lib/module/classes/Inbox/index.js.map +0 -1
- package/lib/module/classes/Inbox/types.js +0 -2
- package/lib/module/classes/Inbox/types.js.map +0 -1
- package/lib/module/classes/Message/index.js +0 -2
- package/lib/module/classes/Message/index.js.map +0 -1
- package/lib/module/classes/Message/types.js +0 -2
- package/lib/module/classes/Message/types.js.map +0 -1
- package/lib/module/classes/Reaction/index.js +0 -2
- package/lib/module/classes/Reaction/index.js.map +0 -1
- package/lib/module/classes/Reaction/types.js +0 -2
- package/lib/module/classes/Reaction/types.js.map +0 -1
- package/lib/module/classes/Room/index.js +0 -2
- package/lib/module/classes/Room/index.js.map +0 -1
- package/lib/module/classes/Room/types.js +0 -2
- package/lib/module/classes/Room/types.js.map +0 -1
- package/lib/module/classes/index.js +0 -2
- package/lib/module/classes/index.js.map +0 -1
- package/lib/module/components/Avatar/index.js +0 -2
- package/lib/module/components/Avatar/index.js.map +0 -1
- package/lib/module/components/Chat/Bubble/index.js +0 -2
- package/lib/module/components/Chat/Bubble/index.js.map +0 -1
- package/lib/module/components/Chat/Composer/Input/index.js +0 -2
- package/lib/module/components/Chat/Composer/Input/index.js.map +0 -1
- package/lib/module/components/Chat/Composer/Send/index.js +0 -2
- package/lib/module/components/Chat/Composer/Send/index.js.map +0 -1
- package/lib/module/components/Chat/Composer/index.js +0 -2
- package/lib/module/components/Chat/Composer/index.js.map +0 -1
- package/lib/module/components/Chat/Media/Image/index.js +0 -2
- package/lib/module/components/Chat/Media/Image/index.js.map +0 -1
- package/lib/module/components/Chat/Media/index.js +0 -2
- package/lib/module/components/Chat/Media/index.js.map +0 -1
- package/lib/module/components/Chat/Message/Swiper/Action/index.js +0 -2
- package/lib/module/components/Chat/Message/Swiper/Action/index.js.map +0 -1
- package/lib/module/components/Chat/Message/Swiper/index.js +0 -2
- package/lib/module/components/Chat/Message/Swiper/index.js.map +0 -1
- package/lib/module/components/Chat/Message/Touchable/index.js +0 -2
- package/lib/module/components/Chat/Message/Touchable/index.js.map +0 -1
- package/lib/module/components/Chat/Message/index.js +0 -2
- package/lib/module/components/Chat/Message/index.js.map +0 -1
- package/lib/module/components/Chat/SystemMessage/index.js +0 -2
- package/lib/module/components/Chat/SystemMessage/index.js.map +0 -1
- package/lib/module/components/Chat/TypingFooter/index.js +0 -2
- package/lib/module/components/Chat/TypingFooter/index.js.map +0 -1
- package/lib/module/components/Chat/index.js +0 -2
- package/lib/module/components/Chat/index.js.map +0 -1
- package/lib/module/components/Chat/types.js +0 -2
- package/lib/module/components/Chat/types.js.map +0 -1
- package/lib/module/components/Chat-Old/Bubble/index.js +0 -2
- package/lib/module/components/Chat-Old/Bubble/index.js.map +0 -1
- package/lib/module/components/Chat-Old/Composer/Input/index.js +0 -2
- package/lib/module/components/Chat-Old/Composer/Input/index.js.map +0 -1
- package/lib/module/components/Chat-Old/Composer/Send/index.js +0 -2
- package/lib/module/components/Chat-Old/Composer/Send/index.js.map +0 -1
- package/lib/module/components/Chat-Old/Composer/index.js +0 -2
- package/lib/module/components/Chat-Old/Composer/index.js.map +0 -1
- package/lib/module/components/Chat-Old/Message/index.js +0 -2
- package/lib/module/components/Chat-Old/Message/index.js.map +0 -1
- package/lib/module/components/Chat-Old/Swiper/Action/index.js +0 -2
- package/lib/module/components/Chat-Old/Swiper/Action/index.js.map +0 -1
- package/lib/module/components/Chat-Old/Swiper/index.js +0 -2
- package/lib/module/components/Chat-Old/Swiper/index.js.map +0 -1
- package/lib/module/components/Chat-Old/SystemMessage/index.js +0 -2
- package/lib/module/components/Chat-Old/SystemMessage/index.js.map +0 -1
- package/lib/module/components/Chat-Old/index.js +0 -2
- package/lib/module/components/Chat-Old/index.js.map +0 -1
- package/lib/module/components/Chat-Old/types.js +0 -2
- package/lib/module/components/Chat-Old/types.js.map +0 -1
- package/lib/module/components/ChatProvider/index.js +0 -2
- package/lib/module/components/ChatProvider/index.js.map +0 -1
- package/lib/module/components/ChatProvider/types.js +0 -2
- package/lib/module/components/ChatProvider/types.js.map +0 -1
- package/lib/module/components/Inbox/Item/Circle/index.js +0 -2
- package/lib/module/components/Inbox/Item/Circle/index.js.map +0 -1
- package/lib/module/components/Inbox/Item/Circle/types.js +0 -2
- package/lib/module/components/Inbox/Item/Circle/types.js.map +0 -1
- package/lib/module/components/Inbox/Item/Initials/index.js +0 -2
- package/lib/module/components/Inbox/Item/Initials/index.js.map +0 -1
- package/lib/module/components/Inbox/Item/ItemDate/index.js +0 -2
- package/lib/module/components/Inbox/Item/ItemDate/index.js.map +0 -1
- package/lib/module/components/Inbox/Item/Separator/index.js +0 -2
- package/lib/module/components/Inbox/Item/Separator/index.js.map +0 -1
- package/lib/module/components/Inbox/Item/Subtitle/index.js +0 -2
- package/lib/module/components/Inbox/Item/Subtitle/index.js.map +0 -1
- package/lib/module/components/Inbox/Item/Swipeable/index.js +0 -2
- package/lib/module/components/Inbox/Item/Swipeable/index.js.map +0 -1
- package/lib/module/components/Inbox/Item/Title/index.js +0 -2
- package/lib/module/components/Inbox/Item/Title/index.js.map +0 -1
- package/lib/module/components/Inbox/Item/UnreadIndicator/index.js +0 -2
- package/lib/module/components/Inbox/Item/UnreadIndicator/index.js.map +0 -1
- package/lib/module/components/Inbox/Item/index.js +0 -2
- package/lib/module/components/Inbox/Item/index.js.map +0 -1
- package/lib/module/components/Inbox/index.js +0 -2
- package/lib/module/components/Inbox/index.js.map +0 -1
- package/lib/module/components/Inbox/question.md +0 -21
- package/lib/module/components/Inbox/readme.md +0 -21
- package/lib/module/components/Inbox/types.js +0 -2
- package/lib/module/components/Inbox/types.js.map +0 -1
- package/lib/module/components/RoomCreator/Content/Footer/Button/index.js +0 -2
- package/lib/module/components/RoomCreator/Content/Footer/Button/index.js.map +0 -1
- package/lib/module/components/RoomCreator/Content/Footer/Input/index.js +0 -2
- package/lib/module/components/RoomCreator/Content/Footer/Input/index.js.map +0 -1
- package/lib/module/components/RoomCreator/Content/Footer/index.js +0 -2
- package/lib/module/components/RoomCreator/Content/Footer/index.js.map +0 -1
- package/lib/module/components/RoomCreator/Content/Item/Icon/index.js +0 -2
- package/lib/module/components/RoomCreator/Content/Item/Icon/index.js.map +0 -1
- package/lib/module/components/RoomCreator/Content/Item/index.js +0 -2
- package/lib/module/components/RoomCreator/Content/Item/index.js.map +0 -1
- package/lib/module/components/RoomCreator/Content/index.js +0 -2
- package/lib/module/components/RoomCreator/Content/index.js.map +0 -1
- package/lib/module/components/RoomCreator/Header/index.js +0 -2
- package/lib/module/components/RoomCreator/Header/index.js.map +0 -1
- package/lib/module/components/RoomCreator/index.js +0 -2
- package/lib/module/components/RoomCreator/index.js.map +0 -1
- package/lib/module/components/RoomCreator/types.js +0 -2
- package/lib/module/components/RoomCreator/types.js.map +0 -1
- package/lib/module/components/TypingIndicator/index.js +0 -2
- package/lib/module/components/TypingIndicator/index.js.map +0 -1
- package/lib/module/components/index.js +0 -2
- package/lib/module/components/index.js.map +0 -1
- package/lib/module/helpers/getInitials.js +0 -2
- package/lib/module/helpers/getInitials.js.map +0 -1
- package/lib/module/helpers/sortByAvatar.js +0 -2
- package/lib/module/helpers/sortByAvatar.js.map +0 -1
- package/lib/module/hooks/index.js +0 -2
- package/lib/module/hooks/index.js.map +0 -1
- package/lib/module/hooks/useCreateRoom/index.js +0 -2
- package/lib/module/hooks/useCreateRoom/index.js.map +0 -1
- package/lib/module/hooks/useCreator/index.js +0 -2
- package/lib/module/hooks/useCreator/index.js.map +0 -1
- package/lib/module/hooks/useInbox/index.js +0 -2
- package/lib/module/hooks/useInbox/index.js.map +0 -1
- package/lib/module/hooks/useInbox/types.js +0 -2
- package/lib/module/hooks/useInbox/types.js.map +0 -1
- package/lib/module/hooks/useMessages/index.js +0 -2
- package/lib/module/hooks/useMessages/index.js.map +0 -1
- package/lib/module/hooks/useMessages/types.js +0 -2
- package/lib/module/hooks/useMessages/types.js.map +0 -1
- package/lib/module/hooks/useRoom/index.js +0 -2
- package/lib/module/hooks/useRoom/index.js.map +0 -1
- package/lib/module/hooks/useRoom/types.js +0 -2
- package/lib/module/hooks/useRoom/types.js.map +0 -1
- package/lib/module/hooks/useSend/useSendToGroup/index.js +0 -2
- package/lib/module/hooks/useSend/useSendToGroup/index.js.map +0 -1
- package/lib/module/hooks/useSend/useSendToPeople/index.js +0 -2
- package/lib/module/hooks/useSend/useSendToPeople/index.js.map +0 -1
- package/lib/module/hooks/useTyping/index.js +0 -2
- package/lib/module/hooks/useTyping/index.js.map +0 -1
- package/lib/module/hooks/useTypingOLD/index.js +0 -2
- package/lib/module/hooks/useTypingOLD/index.js.map +0 -1
- package/lib/module/hooks/useTypingOLD/types.js +0 -2
- package/lib/module/hooks/useTypingOLD/types.js.map +0 -1
- package/lib/module/hooks/useViewMessages/index.js +0 -2
- package/lib/module/hooks/useViewMessages/index.js.map +0 -1
- package/lib/module/hooks/useViewMessages/types.js +0 -2
- package/lib/module/hooks/useViewMessages/types.js.map +0 -1
- package/lib/module/hooks/useViewMessagesOld/index.js +0 -2
- package/lib/module/hooks/useViewMessagesOld/index.js.map +0 -1
- package/lib/module/index.js +0 -2
- package/lib/module/index.js.map +0 -1
- package/lib/typescript/ChatContext/index.d.ts +0 -2
- package/lib/typescript/ChatContext/types.d.ts +0 -4
- package/lib/typescript/classes/Chat/index.d.ts +0 -14
- package/lib/typescript/classes/Chat/types.d.ts +0 -21
- package/lib/typescript/classes/Inbox/types.d.ts +0 -2
- package/lib/typescript/classes/Message/index.d.ts +0 -47
- package/lib/typescript/classes/Message/types.d.ts +0 -66
- package/lib/typescript/classes/Reaction/index.d.ts +0 -17
- package/lib/typescript/classes/Reaction/types.d.ts +0 -33
- package/lib/typescript/classes/Room/index.d.ts +0 -42
- package/lib/typescript/classes/Room/types.d.ts +0 -112
- package/lib/typescript/classes/index.d.ts +0 -4
- package/lib/typescript/components/Avatar/index.d.ts +0 -4
- package/lib/typescript/components/Chat/Bubble/index.d.ts +0 -4
- package/lib/typescript/components/Chat/Composer/Input/index.d.ts +0 -7
- package/lib/typescript/components/Chat/Composer/Send/index.d.ts +0 -4
- package/lib/typescript/components/Chat/Composer/index.d.ts +0 -8
- package/lib/typescript/components/Chat/Media/Image/index.d.ts +0 -7
- package/lib/typescript/components/Chat/Media/index.d.ts +0 -4
- package/lib/typescript/components/Chat/Message/Touchable/index.d.ts +0 -4
- package/lib/typescript/components/Chat/Message/index.d.ts +0 -8
- package/lib/typescript/components/Chat/SystemMessage/index.d.ts +0 -4
- package/lib/typescript/components/Chat/TypingFooter/index.d.ts +0 -4
- package/lib/typescript/components/Chat/index.d.ts +0 -8
- package/lib/typescript/components/Chat/types.d.ts +0 -843
- package/lib/typescript/components/ChatProvider/index.d.ts +0 -10
- package/lib/typescript/components/ChatProvider/types.d.ts +0 -7
- package/lib/typescript/components/Inbox/Item/Initials/index.d.ts +0 -4
- package/lib/typescript/components/Inbox/Item/ItemDate/index.d.ts +0 -4
- package/lib/typescript/components/Inbox/Item/Separator/index.d.ts +0 -6
- package/lib/typescript/components/Inbox/Item/Subtitle/index.d.ts +0 -3
- package/lib/typescript/components/Inbox/Item/Swipeable/index.d.ts +0 -4
- package/lib/typescript/components/Inbox/Item/Title/index.d.ts +0 -3
- package/lib/typescript/components/Inbox/Item/UnreadIndicator/index.d.ts +0 -4
- package/lib/typescript/components/Inbox/Item/index.d.ts +0 -6
- package/lib/typescript/components/Inbox/index.d.ts +0 -4
- package/lib/typescript/components/Inbox/types.d.ts +0 -304
- package/lib/typescript/components/RoomCreator/Content/Footer/Button/index.d.ts +0 -4
- package/lib/typescript/components/RoomCreator/Content/Footer/Input/index.d.ts +0 -4
- package/lib/typescript/components/RoomCreator/Content/Footer/index.d.ts +0 -3
- package/lib/typescript/components/RoomCreator/Content/Item/Icon/index.d.ts +0 -4
- package/lib/typescript/components/RoomCreator/Content/Item/index.d.ts +0 -4
- package/lib/typescript/components/RoomCreator/Content/index.d.ts +0 -4
- package/lib/typescript/components/RoomCreator/Header/index.d.ts +0 -4
- package/lib/typescript/components/RoomCreator/index.d.ts +0 -4
- package/lib/typescript/components/RoomCreator/types.d.ts +0 -208
- package/lib/typescript/components/TypingIndicator/index.d.ts +0 -9
- package/lib/typescript/components/index.d.ts +0 -12
- package/lib/typescript/helpers/getInitials.d.ts +0 -1
- package/lib/typescript/hooks/index.d.ts +0 -8
- package/lib/typescript/hooks/useCreator/index.d.ts +0 -27
- package/lib/typescript/hooks/useInbox/index.d.ts +0 -29
- package/lib/typescript/hooks/useInbox/types.d.ts +0 -5
- package/lib/typescript/hooks/useMessages/index.d.ts +0 -24
- package/lib/typescript/hooks/useMessages/types.d.ts +0 -5
- package/lib/typescript/hooks/useRoom/index.d.ts +0 -26
- package/lib/typescript/hooks/useRoom/types.d.ts +0 -5
- package/lib/typescript/hooks/useSend/useSendToGroup/index.d.ts +0 -6
- package/lib/typescript/hooks/useSend/useSendToPeople/index.d.ts +0 -6
- package/lib/typescript/hooks/useTyping/index.d.ts +0 -36
- package/lib/typescript/hooks/useViewMessages/index.d.ts +0 -18
- package/lib/typescript/hooks/useViewMessages/types.d.ts +0 -20
- package/lib/typescript/index.d.ts +0 -11
- package/readme.md +0 -201
- package/src/ChatContext/index.tsx +0 -9
- package/src/ChatContext/types.ts +0 -4
- package/src/classes/Chat/index.ts +0 -46
- package/src/classes/Chat/types.ts +0 -23
- package/src/classes/Inbox/index.ts +0 -12
- package/src/classes/Inbox/types.ts +0 -3
- package/src/classes/Message/index.ts +0 -310
- package/src/classes/Message/types.ts +0 -118
- package/src/classes/Reaction/index.ts +0 -108
- package/src/classes/Reaction/types.ts +0 -37
- package/src/classes/Room/index.ts +0 -323
- package/src/classes/Room/types.ts +0 -161
- package/src/classes/index.ts +0 -4
- package/src/components/Avatar/index.tsx +0 -25
- package/src/components/Chat/Bubble/index.tsx +0 -139
- package/src/components/Chat/Composer/Input/index.tsx +0 -45
- package/src/components/Chat/Composer/Send/index.tsx +0 -51
- package/src/components/Chat/Composer/index.tsx +0 -187
- package/src/components/Chat/Media/Image/index.tsx +0 -26
- package/src/components/Chat/Media/index.tsx +0 -11
- package/src/components/Chat/Message/Swiper/Action/index.tsx +0 -7
- package/src/components/Chat/Message/Swiper/index.tsx +0 -32
- package/src/components/Chat/Message/Touchable/index.tsx +0 -60
- package/src/components/Chat/Message/index.tsx +0 -328
- package/src/components/Chat/SystemMessage/index.tsx +0 -44
- package/src/components/Chat/TypingFooter/index.tsx +0 -48
- package/src/components/Chat/index.tsx +0 -596
- package/src/components/Chat/types.ts +0 -913
- package/src/components/Chat-Old/Bubble/index.tsx +0 -58
- package/src/components/Chat-Old/Composer/Input/index.tsx +0 -34
- package/src/components/Chat-Old/Composer/Send/index.tsx +0 -37
- package/src/components/Chat-Old/Composer/index.tsx +0 -131
- package/src/components/Chat-Old/Message/index.tsx +0 -160
- package/src/components/Chat-Old/Swiper/Action/index.tsx +0 -7
- package/src/components/Chat-Old/Swiper/index.tsx +0 -30
- package/src/components/Chat-Old/SystemMessage/index.tsx +0 -44
- package/src/components/Chat-Old/index.tsx +0 -356
- package/src/components/Chat-Old/types.ts +0 -752
- package/src/components/ChatProvider/index.tsx +0 -31
- package/src/components/ChatProvider/types.ts +0 -8
- package/src/components/Inbox/Item/Circle/index.tsx +0 -47
- package/src/components/Inbox/Item/Circle/types.ts +0 -8
- package/src/components/Inbox/Item/Initials/index.tsx +0 -41
- package/src/components/Inbox/Item/ItemDate/index.tsx +0 -26
- package/src/components/Inbox/Item/Separator/index.tsx +0 -13
- package/src/components/Inbox/Item/Subtitle/index.tsx +0 -23
- package/src/components/Inbox/Item/Swipeable/index.tsx +0 -143
- package/src/components/Inbox/Item/Title/index.tsx +0 -23
- package/src/components/Inbox/Item/UnreadIndicator/index.tsx +0 -84
- package/src/components/Inbox/Item/index.tsx +0 -307
- package/src/components/Inbox/index.tsx +0 -315
- package/src/components/Inbox/question.md +0 -21
- package/src/components/Inbox/readme.md +0 -21
- package/src/components/Inbox/types.ts +0 -371
- package/src/components/RoomCreator/Content/Footer/Button/index.tsx +0 -55
- package/src/components/RoomCreator/Content/Footer/Input/index.tsx +0 -27
- package/src/components/RoomCreator/Content/Footer/index.tsx +0 -72
- package/src/components/RoomCreator/Content/Item/Icon/index.tsx +0 -16
- package/src/components/RoomCreator/Content/Item/index.tsx +0 -87
- package/src/components/RoomCreator/Content/index.tsx +0 -75
- package/src/components/RoomCreator/Header/index.tsx +0 -74
- package/src/components/RoomCreator/index.tsx +0 -177
- package/src/components/RoomCreator/types.ts +0 -233
- package/src/components/TypingIndicator/index.tsx +0 -169
- package/src/components/index.ts +0 -18
- package/src/helpers/getInitials.ts +0 -11
- package/src/helpers/sortByAvatar.ts +0 -1
- package/src/hooks/index.ts +0 -8
- package/src/hooks/useCreateRoom/index.ts +0 -34
- package/src/hooks/useCreator/index.ts +0 -33
- package/src/hooks/useInbox/index.ts +0 -76
- package/src/hooks/useInbox/types.ts +0 -6
- package/src/hooks/useMessages/index.ts +0 -109
- package/src/hooks/useMessages/types.ts +0 -6
- package/src/hooks/useRoom/index.ts +0 -82
- package/src/hooks/useRoom/types.ts +0 -6
- package/src/hooks/useSend/useSendToGroup/index.ts +0 -38
- package/src/hooks/useSend/useSendToPeople/index.ts +0 -38
- package/src/hooks/useTyping/index.ts +0 -154
- package/src/hooks/useTypingOLD/index.ts +0 -67
- package/src/hooks/useTypingOLD/types.ts +0 -7
- package/src/hooks/useViewMessages/index.ts +0 -61
- package/src/hooks/useViewMessages/types.ts +0 -22
- package/src/hooks/useViewMessagesOld/index.ts +0 -39
- package/src/index.ts +0 -13
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import { View, Text, StyleSheet, Image } from 'react-native'
|
|
3
|
-
import { RoomCreatorHeaderProps } from '../types'
|
|
4
|
-
import Animated from 'react-native-reanimated'
|
|
5
|
-
|
|
6
|
-
export default (props: RoomCreatorHeaderProps) => {
|
|
7
|
-
return (
|
|
8
|
-
<Animated.View
|
|
9
|
-
style={[
|
|
10
|
-
styles.container,
|
|
11
|
-
{ backgroundColor: props.backgroundColor },
|
|
12
|
-
props.containerStyle
|
|
13
|
-
]}
|
|
14
|
-
>
|
|
15
|
-
<View style={[styles.notchContainer]}>
|
|
16
|
-
<View style={styles.notch} />
|
|
17
|
-
</View>
|
|
18
|
-
<View style={styles.wrapper}>
|
|
19
|
-
{!!props.image && (
|
|
20
|
-
<View style={[styles.imageContainer, props.imageStyle]}>
|
|
21
|
-
<Image style={[styles.image]} source={{ uri: props.image }} />
|
|
22
|
-
</View>
|
|
23
|
-
)}
|
|
24
|
-
<View>
|
|
25
|
-
{!!props.title && (
|
|
26
|
-
<Text style={[styles.text, props.titleStyle]}>{props.title}</Text>
|
|
27
|
-
)}
|
|
28
|
-
{!!props.subtitle && (
|
|
29
|
-
<Text style={[props.subtitleStyle]}>{props.subtitle}</Text>
|
|
30
|
-
)}
|
|
31
|
-
</View>
|
|
32
|
-
</View>
|
|
33
|
-
</Animated.View>
|
|
34
|
-
)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
const styles = StyleSheet.create({
|
|
38
|
-
container: {
|
|
39
|
-
// height: 75,
|
|
40
|
-
borderTopRightRadius: 10,
|
|
41
|
-
borderTopLeftRadius: 10,
|
|
42
|
-
overflow: 'hidden',
|
|
43
|
-
backgroundColor: 'white',
|
|
44
|
-
borderBottomColor: 'lightgray',
|
|
45
|
-
borderBottomWidth: 1,
|
|
46
|
-
padding: 10,
|
|
47
|
-
zIndex: -1
|
|
48
|
-
},
|
|
49
|
-
wrapper: {
|
|
50
|
-
flexDirection: 'row'
|
|
51
|
-
},
|
|
52
|
-
text: {
|
|
53
|
-
fontWeight: 'bold',
|
|
54
|
-
fontSize: 18
|
|
55
|
-
},
|
|
56
|
-
notchContainer: {
|
|
57
|
-
alignItems: 'center',
|
|
58
|
-
paddingVertical: 10
|
|
59
|
-
},
|
|
60
|
-
notch: {
|
|
61
|
-
width: 40,
|
|
62
|
-
height: 5,
|
|
63
|
-
borderRadius: 5,
|
|
64
|
-
backgroundColor: 'lightgray'
|
|
65
|
-
},
|
|
66
|
-
image: {
|
|
67
|
-
...StyleSheet.absoluteFillObject
|
|
68
|
-
},
|
|
69
|
-
imageContainer: {
|
|
70
|
-
height: 80,
|
|
71
|
-
width: 80,
|
|
72
|
-
marginRight: 10
|
|
73
|
-
}
|
|
74
|
-
})
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
import React, { useMemo, useRef, useState, useEffect } from 'react'
|
|
2
|
-
import BottomSheet from 'reanimated-bottom-sheet'
|
|
3
|
-
import Header from './Header'
|
|
4
|
-
import Content from './Content'
|
|
5
|
-
import Animated from 'react-native-reanimated'
|
|
6
|
-
import {
|
|
7
|
-
RoomCreatorProps,
|
|
8
|
-
Selected,
|
|
9
|
-
RoomCreatorContentProps,
|
|
10
|
-
RoomCreatorHeaderProps
|
|
11
|
-
} from './types'
|
|
12
|
-
|
|
13
|
-
const { Value, useCode, block, cond, eq, call, and } = Animated
|
|
14
|
-
|
|
15
|
-
const initialSelected: Selected = {}
|
|
16
|
-
|
|
17
|
-
function RoomCreator(props: RoomCreatorProps) {
|
|
18
|
-
const sheetRef = useRef<BottomSheet>(null)
|
|
19
|
-
const callbackNode = useMemo(() => props.callbackNode || new Value(1), [
|
|
20
|
-
props.callbackNode
|
|
21
|
-
])
|
|
22
|
-
const [selectedState, setSelected] = useState<Selected>(initialSelected)
|
|
23
|
-
const [text, setText] = useState('')
|
|
24
|
-
|
|
25
|
-
const ref = props.sheetRef !== undefined ? props.sheetRef : sheetRef
|
|
26
|
-
|
|
27
|
-
// should we handle selected state or not
|
|
28
|
-
const selected = props.selected || selectedState
|
|
29
|
-
|
|
30
|
-
const ready = useMemo(
|
|
31
|
-
() =>
|
|
32
|
-
props.isReadyFunc
|
|
33
|
-
? props.isReadyFunc(selected)
|
|
34
|
-
: !!Object.keys(selected).filter(Boolean).length,
|
|
35
|
-
[props, selected]
|
|
36
|
-
)
|
|
37
|
-
|
|
38
|
-
const mounted = useRef(0)
|
|
39
|
-
|
|
40
|
-
useCode(
|
|
41
|
-
() =>
|
|
42
|
-
block([
|
|
43
|
-
cond(
|
|
44
|
-
// if the sheet just opened
|
|
45
|
-
eq(callbackNode, 1),
|
|
46
|
-
call([], onDidClose),
|
|
47
|
-
// if the sheet just closed
|
|
48
|
-
cond(
|
|
49
|
-
and(eq(callbackNode, 0), (mounted.current, 1)),
|
|
50
|
-
call([], onDidOpen)
|
|
51
|
-
)
|
|
52
|
-
)
|
|
53
|
-
]),
|
|
54
|
-
[callbackNode, onDidClose, onDidOpen]
|
|
55
|
-
)
|
|
56
|
-
|
|
57
|
-
useEffect(() => {
|
|
58
|
-
if (!mounted.current) mounted.current = 1
|
|
59
|
-
}, [])
|
|
60
|
-
|
|
61
|
-
function reset() {
|
|
62
|
-
setSelected(initialSelected)
|
|
63
|
-
setText('')
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
const toggleSelected = (id: string) => {
|
|
67
|
-
if (props.onSelectItem) return props.onSelectItem(id)
|
|
68
|
-
|
|
69
|
-
setSelected(currentlySelected => {
|
|
70
|
-
const user = props.users.find(u => u.id === id)
|
|
71
|
-
if (currentlySelected[id] || !user) {
|
|
72
|
-
const { [id]: pressed, ...ommitted } = currentlySelected
|
|
73
|
-
return ommitted
|
|
74
|
-
}
|
|
75
|
-
return {
|
|
76
|
-
...currentlySelected,
|
|
77
|
-
[id]: user.type
|
|
78
|
-
}
|
|
79
|
-
})
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
const open = () => ref.current && ref.current.snapTo(1)
|
|
83
|
-
const close = () => ref.current && ref.current.snapTo(0)
|
|
84
|
-
|
|
85
|
-
if (props.creatorRef) {
|
|
86
|
-
props.creatorRef.current = {
|
|
87
|
-
open,
|
|
88
|
-
close
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
// useEffect(() => {
|
|
93
|
-
// if (props.isOpen === true) open()
|
|
94
|
-
// else close()
|
|
95
|
-
// }, [props.isOpen])
|
|
96
|
-
|
|
97
|
-
function onDidClose() {
|
|
98
|
-
if (props.onDidClose) props.onDidClose()
|
|
99
|
-
reset()
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
function onDidOpen() {
|
|
103
|
-
if (props.onDidOpen) props.onDidOpen()
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
const renderHeader = () => {
|
|
107
|
-
const headerProps: RoomCreatorHeaderProps = {
|
|
108
|
-
callbackNode,
|
|
109
|
-
image: props.headerImage,
|
|
110
|
-
imageStyle: props.headerImageStyle,
|
|
111
|
-
subtitle: props.headerSubtitle,
|
|
112
|
-
subtitleStyle: props.headerSubtitleStyle,
|
|
113
|
-
title: props.headerTitle || 'New Message',
|
|
114
|
-
titleStyle: props.headerTitleStyle,
|
|
115
|
-
backgroundColor: props.headerBackgroundColor || '#f8f8f8',
|
|
116
|
-
containerStyle: props.headerContainerStyle
|
|
117
|
-
}
|
|
118
|
-
if (props.renderHeader) return props.renderHeader(headerProps)
|
|
119
|
-
if (props.renderHeader === null) return null
|
|
120
|
-
|
|
121
|
-
return <Header {...headerProps} />
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
const renderContent = () => {
|
|
125
|
-
const contentProps: RoomCreatorContentProps = {
|
|
126
|
-
toggleSelected,
|
|
127
|
-
selected,
|
|
128
|
-
renderFooter: props.renderFooter,
|
|
129
|
-
buttons: props.buttons,
|
|
130
|
-
renderButton: props.renderButton,
|
|
131
|
-
ButtonComponent: props.ButtonComponent,
|
|
132
|
-
users: props.users,
|
|
133
|
-
renderItem: props.renderItem,
|
|
134
|
-
ready,
|
|
135
|
-
renderSelectedIcon: props.renderSelectedIcon,
|
|
136
|
-
selectedIconActiveColor: props.selectedIconActiveColor,
|
|
137
|
-
selectedIconInactiveColor: props.selectedIconInactiveColor,
|
|
138
|
-
enableTextInput: props.enableTextInput,
|
|
139
|
-
inputContainerStyle: props.inputContainerStyle,
|
|
140
|
-
inputStyle: props.inputStyle,
|
|
141
|
-
showInputWhenNotReady: props.showInputWhenNotReady,
|
|
142
|
-
inputProps: props.inputProps,
|
|
143
|
-
onChangeText: setText,
|
|
144
|
-
text
|
|
145
|
-
}
|
|
146
|
-
if (props.renderContent) return props.renderContent(contentProps)
|
|
147
|
-
if (props.renderContent === null) return null
|
|
148
|
-
|
|
149
|
-
return <Content {...contentProps} />
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
const snapPoints = useMemo(() => props.snapPoints || ['0%', '90%'], [
|
|
153
|
-
props.snapPoints
|
|
154
|
-
])
|
|
155
|
-
|
|
156
|
-
const initialSnap = props.startOpen ? 1 : 0
|
|
157
|
-
|
|
158
|
-
const renderSheet = () => {
|
|
159
|
-
return (
|
|
160
|
-
<BottomSheet
|
|
161
|
-
{...{ initialSnap }}
|
|
162
|
-
{...props.sheetProps}
|
|
163
|
-
{...{
|
|
164
|
-
renderHeader,
|
|
165
|
-
renderContent,
|
|
166
|
-
snapPoints,
|
|
167
|
-
callbackNode,
|
|
168
|
-
ref
|
|
169
|
-
}}
|
|
170
|
-
/>
|
|
171
|
-
)
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
return <>{renderSheet()}</>
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
export default RoomCreator
|
|
@@ -1,233 +0,0 @@
|
|
|
1
|
-
import { ReactNode, ComponentType, ReactElement } from 'react'
|
|
2
|
-
import Animated from 'react-native-reanimated'
|
|
3
|
-
import BottomSheet from 'reanimated-bottom-sheet'
|
|
4
|
-
import {
|
|
5
|
-
NewMessageModel,
|
|
6
|
-
SendFromFeedRecipients,
|
|
7
|
-
SendFromFeedRecipientArray
|
|
8
|
-
} from '../../classes/Message/types'
|
|
9
|
-
import { RoomMembers } from '../../classes/Room/types'
|
|
10
|
-
import {
|
|
11
|
-
TextStyle,
|
|
12
|
-
StyleProp,
|
|
13
|
-
ImageStyle,
|
|
14
|
-
ViewStyle,
|
|
15
|
-
TextInputProps
|
|
16
|
-
} from 'react-native'
|
|
17
|
-
// import { RoomCreatorItemProps } from './types'
|
|
18
|
-
|
|
19
|
-
export interface RoomCreatorRef {
|
|
20
|
-
open: () => void
|
|
21
|
-
close: () => void
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
interface RoomCreatorItem extends User {
|
|
25
|
-
type: Selected[keyof Selected]
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export interface RoomCreatorProps {
|
|
29
|
-
renderHeader?: null | ((props: RoomCreatorHeaderProps) => ReactNode)
|
|
30
|
-
renderContent?: null | ((props: RoomCreatorContentProps) => ReactNode)
|
|
31
|
-
snapPoints?: [string, string] | [number, number]
|
|
32
|
-
callbackNode?: Animated.Value<number>
|
|
33
|
-
sheetProps?: Omit<BottomSheet['props'], 'snapPoints'>
|
|
34
|
-
sheetRef?: React.MutableRefObject<BottomSheet>
|
|
35
|
-
creatorRef?: React.MutableRefObject<RoomCreatorRef>
|
|
36
|
-
message?: null | NewMessageModel
|
|
37
|
-
renderFooter?: null | ((props: RoomCreatorFooterProps) => ReactNode)
|
|
38
|
-
disableSendAsGroup?: boolean
|
|
39
|
-
onSendSeparately?: RoomCreatorFunctions['onSendSeparately']
|
|
40
|
-
onCreateRoom?: RoomCreatorFunctions['onCreateRoom']
|
|
41
|
-
onSendAsGroup?: RoomCreatorFunctions['onSendAsGroup']
|
|
42
|
-
selected?: Selected
|
|
43
|
-
/**
|
|
44
|
-
* (Optional) Function called when a user is pressed.
|
|
45
|
-
* If used, the internal state manager of pressed items is disabled.
|
|
46
|
-
*
|
|
47
|
-
* **Important** you must use the `selected` too prop if you use this prop.
|
|
48
|
-
*
|
|
49
|
-
* @param id - the ID of the pressed user
|
|
50
|
-
*
|
|
51
|
-
* @example
|
|
52
|
-
* ```javascript
|
|
53
|
-
* return <Inbox selected={selected} onSelectItem />
|
|
54
|
-
* ```
|
|
55
|
-
*/
|
|
56
|
-
onSelectItem?: (id: string) => void
|
|
57
|
-
users: Array<RoomCreatorItem>
|
|
58
|
-
onDidClose?: () => void
|
|
59
|
-
onDidOpen?: () => void
|
|
60
|
-
text?: string
|
|
61
|
-
onChangeText?: string
|
|
62
|
-
disableComposer?: boolean
|
|
63
|
-
isReadyFunc?: (selected: Selected) => boolean
|
|
64
|
-
startOpen?: boolean
|
|
65
|
-
buttons: Buttons
|
|
66
|
-
renderButton?: (props: RenderButtonProps) => ReactNode | null
|
|
67
|
-
ButtonComponent?: ComponentType<RenderButtonProps>
|
|
68
|
-
headerTitle?: string
|
|
69
|
-
headerTitleStyle?: RoomCreatorHeaderProps['titleStyle']
|
|
70
|
-
headerSubtitle?: RoomCreatorHeaderProps['subtitle']
|
|
71
|
-
headerSubtitleStyle?: RoomCreatorHeaderProps['subtitleStyle']
|
|
72
|
-
headerImage?: RoomCreatorHeaderProps['image']
|
|
73
|
-
headerImageStyle?: RoomCreatorHeaderProps['imageStyle']
|
|
74
|
-
renderItem?: null | ((props: RoomCreatorItemProps) => ReactElement)
|
|
75
|
-
selectedIconActiveColor?: string
|
|
76
|
-
selectedIconInactiveColor?: string
|
|
77
|
-
renderSelectedIcon?: (iconProps: SelectedIconProps) => ReactNode | null
|
|
78
|
-
/**
|
|
79
|
-
* Optionally enable text box. Text will be passed to onPress function for all buttons.
|
|
80
|
-
*/
|
|
81
|
-
enableTextInput?: RoomCreatorFooterProps['enableTextInput']
|
|
82
|
-
inputStyle?: RoomCreatorFooterProps['inputStyle']
|
|
83
|
-
inputContainerStyle?: RoomCreatorFooterProps['inputContainerStyle']
|
|
84
|
-
showInputWhenNotReady?: RoomCreatorFooterProps['showInputWhenNotReady']
|
|
85
|
-
inputProps?: RoomCreatorInputProps['inputProps']
|
|
86
|
-
headerBackgroundColor?: string
|
|
87
|
-
headerContainerStyle?: ViewStyle
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export type RoomCreatorFunctions = {
|
|
91
|
-
onSendSeparately: (details: {
|
|
92
|
-
message: NewMessageModel
|
|
93
|
-
members: SendFromFeedRecipients
|
|
94
|
-
}) => Promise<void>
|
|
95
|
-
onCreateRoom: (members: RoomMembers) => void
|
|
96
|
-
onSendAsGroup: (details: {
|
|
97
|
-
message: NewMessageModel
|
|
98
|
-
members: SendFromFeedRecipientArray['recipients']
|
|
99
|
-
}) => Promise<any>
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
export interface RoomCreatorItemProps {
|
|
103
|
-
name: string
|
|
104
|
-
id: string
|
|
105
|
-
avatar: string
|
|
106
|
-
selected: boolean
|
|
107
|
-
handle?: string
|
|
108
|
-
toggleSelected: (id: string) => void
|
|
109
|
-
renderSelectedIcon?: RoomCreatorProps['renderSelectedIcon']
|
|
110
|
-
selectedIconActiveColor?: RoomCreatorProps['selectedIconActiveColor']
|
|
111
|
-
selectedIconInactiveColor?: RoomCreatorProps['selectedIconInactiveColor']
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
export interface SelectedIconProps {
|
|
115
|
-
activeColor: string
|
|
116
|
-
inactiveColor: string
|
|
117
|
-
active: boolean
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
export interface RoomCreatorContentProps {
|
|
121
|
-
toggleSelected: (id: string) => void
|
|
122
|
-
selected: Selected
|
|
123
|
-
renderFooter?: RoomCreatorProps['renderFooter']
|
|
124
|
-
renderButton?: RoomCreatorProps['renderButton']
|
|
125
|
-
buttons: RoomCreatorProps['buttons']
|
|
126
|
-
ButtonComponent?: RoomCreatorProps['ButtonComponent']
|
|
127
|
-
users: RoomCreatorProps['users']
|
|
128
|
-
renderItem?: RoomCreatorProps['renderItem']
|
|
129
|
-
ready: boolean
|
|
130
|
-
renderSelectedIcon?: RoomCreatorProps['renderSelectedIcon']
|
|
131
|
-
selectedIconActiveColor?: RoomCreatorProps['selectedIconActiveColor']
|
|
132
|
-
selectedIconInactiveColor?: RoomCreatorProps['selectedIconInactiveColor']
|
|
133
|
-
enableTextInput?: RoomCreatorFooterProps['enableTextInput']
|
|
134
|
-
inputStyle?: RoomCreatorFooterProps['inputStyle']
|
|
135
|
-
inputContainerStyle?: RoomCreatorFooterProps['inputContainerStyle']
|
|
136
|
-
showInputWhenNotReady?: RoomCreatorFooterProps['showInputWhenNotReady']
|
|
137
|
-
inputProps?: RoomCreatorInputProps['inputProps']
|
|
138
|
-
text: RoomCreatorInputProps['text']
|
|
139
|
-
onChangeText: RoomCreatorInputProps['onChangeText']
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
export interface RoomCreatorHeaderProps {
|
|
143
|
-
callbackNode: Animated.Value<number>
|
|
144
|
-
title: string
|
|
145
|
-
subtitle?: string
|
|
146
|
-
image?: string
|
|
147
|
-
imageStyle?: StyleProp<ImageStyle>
|
|
148
|
-
titleStyle?: StyleProp<TextStyle>
|
|
149
|
-
subtitleStyle?: StyleProp<TextStyle>
|
|
150
|
-
backgroundColor?: string
|
|
151
|
-
containerStyle?: ViewStyle
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
export interface RoomCreatorFooterProps {
|
|
155
|
-
ButtonComponent?: RoomCreatorProps['ButtonComponent']
|
|
156
|
-
renderButton?: RoomCreatorProps['renderButton']
|
|
157
|
-
buttons: RoomCreatorProps['buttons']
|
|
158
|
-
ready: boolean
|
|
159
|
-
selected: Selected
|
|
160
|
-
enableTextInput: boolean
|
|
161
|
-
inputStyle?: RoomCreatorInputProps['inputStyle']
|
|
162
|
-
inputContainerStyle?: RoomCreatorInputProps['inputContainerStyle']
|
|
163
|
-
inputProps?: RoomCreatorInputProps['inputProps']
|
|
164
|
-
showInputWhenNotReady: boolean
|
|
165
|
-
text: RoomCreatorInputProps['text']
|
|
166
|
-
onChangeText: RoomCreatorInputProps['onChangeText']
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
export interface RoomCreatorInputProps {
|
|
170
|
-
text: string
|
|
171
|
-
onChangeText: TextInputProps['onChangeText']
|
|
172
|
-
inputProps?: TextInputProps
|
|
173
|
-
inputStyle?: TextInputProps['style']
|
|
174
|
-
inputContainerStyle?: StyleProp<ViewStyle>
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
export interface Selected {
|
|
178
|
-
[id: string]: 'room' | 'user'
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
/**
|
|
182
|
-
* Buttons will show up at the bottom of the room creator
|
|
183
|
-
*
|
|
184
|
-
* @example
|
|
185
|
-
* Note that in the example below, you will need to make sure that selected matches the proper schema for members. It is left this way for simplicity.
|
|
186
|
-
* ```javascript
|
|
187
|
-
* <Inbox
|
|
188
|
-
* buttons={[
|
|
189
|
-
* {
|
|
190
|
-
* text: 'Start Chat',
|
|
191
|
-
* onPress: (selected) => new Room({ members: selected }).create()
|
|
192
|
-
* }
|
|
193
|
-
* ]}
|
|
194
|
-
* />
|
|
195
|
-
* ```
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
*/
|
|
199
|
-
export interface Button {
|
|
200
|
-
text: string
|
|
201
|
-
onPress: (config: {
|
|
202
|
-
selected: Selected
|
|
203
|
-
ready: boolean
|
|
204
|
-
loading: boolean
|
|
205
|
-
text: string
|
|
206
|
-
}) => any | Promise<any>
|
|
207
|
-
disabledString?: string
|
|
208
|
-
color?: string
|
|
209
|
-
textColor?: string
|
|
210
|
-
disabledColor?: string
|
|
211
|
-
disabledTextColor?: string
|
|
212
|
-
ready?: boolean
|
|
213
|
-
loading?: boolean
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
export interface RenderButtonProps {
|
|
217
|
-
backgroundColor: string
|
|
218
|
-
text: string
|
|
219
|
-
textColor: string
|
|
220
|
-
onPress: () => void
|
|
221
|
-
ready: boolean
|
|
222
|
-
index: number
|
|
223
|
-
loading: boolean
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
export interface User {
|
|
227
|
-
id: string
|
|
228
|
-
name: string
|
|
229
|
-
avatar: string
|
|
230
|
-
handle?: string
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
export type Buttons = Button[]
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import { View, StyleSheet } from 'react-native'
|
|
3
|
-
import { LinearGradient } from 'expo-linear-gradient'
|
|
4
|
-
import Animated, { Easing } from 'react-native-reanimated'
|
|
5
|
-
|
|
6
|
-
const {
|
|
7
|
-
Value,
|
|
8
|
-
useCode,
|
|
9
|
-
interpolate,
|
|
10
|
-
Clock,
|
|
11
|
-
set,
|
|
12
|
-
block,
|
|
13
|
-
startClock,
|
|
14
|
-
cond,
|
|
15
|
-
stopClock,
|
|
16
|
-
timing
|
|
17
|
-
} = Animated
|
|
18
|
-
|
|
19
|
-
const dots = [1, 2, 3]
|
|
20
|
-
const length = dots.length
|
|
21
|
-
|
|
22
|
-
export default function(props: TypingIndicatorProps) {
|
|
23
|
-
const animatedValue = new Value(0)
|
|
24
|
-
const config = {
|
|
25
|
-
duration: 2500,
|
|
26
|
-
toValue: new Value(length + 1),
|
|
27
|
-
easing: Easing.inOut(Easing.linear)
|
|
28
|
-
}
|
|
29
|
-
useCode(() => set(animatedValue, runLoop(config)), [animatedValue])
|
|
30
|
-
|
|
31
|
-
const { theme = 'red' } = props
|
|
32
|
-
|
|
33
|
-
if (props.hide) return null
|
|
34
|
-
|
|
35
|
-
const renderDot = (index: number) => {
|
|
36
|
-
const opacity = interpolate(animatedValue, {
|
|
37
|
-
inputRange: [index - 1, index, index + 1],
|
|
38
|
-
outputRange: [0, 1, 0]
|
|
39
|
-
})
|
|
40
|
-
return (
|
|
41
|
-
<View key={index.toString()} style={styles.dot}>
|
|
42
|
-
<LinearGradient
|
|
43
|
-
{...{
|
|
44
|
-
colors: props.dotEmptyColors || themes[theme].emptyDotColors,
|
|
45
|
-
start: [0.9, 0.9],
|
|
46
|
-
end: [0.1, 0.1]
|
|
47
|
-
}}
|
|
48
|
-
style={{ flex: 1 }}
|
|
49
|
-
/>
|
|
50
|
-
<Animated.View style={{ opacity, ...StyleSheet.absoluteFillObject }}>
|
|
51
|
-
<LinearGradient
|
|
52
|
-
{...{
|
|
53
|
-
colors: props.dotColors || themes[theme].dotColors,
|
|
54
|
-
start: [0.1, 0.1],
|
|
55
|
-
end: [0.9, 0.9]
|
|
56
|
-
}}
|
|
57
|
-
style={{ flex: 1 }}
|
|
58
|
-
/>
|
|
59
|
-
</Animated.View>
|
|
60
|
-
</View>
|
|
61
|
-
)
|
|
62
|
-
}
|
|
63
|
-
return (
|
|
64
|
-
<View style={styles.container}>
|
|
65
|
-
<LinearGradient
|
|
66
|
-
{...{
|
|
67
|
-
colors: props.backgroundColors || themes[theme].backgroundColors,
|
|
68
|
-
start: [0.1, 0.1],
|
|
69
|
-
end: [0.9, 0.9]
|
|
70
|
-
}}
|
|
71
|
-
style={styles.wrapper}
|
|
72
|
-
>
|
|
73
|
-
<View style={styles.dots}>{dots.map(renderDot)}</View>
|
|
74
|
-
</LinearGradient>
|
|
75
|
-
</View>
|
|
76
|
-
)
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
const themes = {
|
|
80
|
-
purple: {
|
|
81
|
-
backgroundColors: ['#7950f2', '#5f3dc4'],
|
|
82
|
-
dotColors: ['white', 'white'],
|
|
83
|
-
emptyDotColors: ['#adb5bd', '#adb5bd']
|
|
84
|
-
},
|
|
85
|
-
red: {
|
|
86
|
-
backgroundColors: ['#E5E5EA', '#E5E5EA'],
|
|
87
|
-
dotColors: ['#ff8000', '#ec2a80'],
|
|
88
|
-
emptyDotColors: ['#D1D1D6', '#D1D1D6']
|
|
89
|
-
},
|
|
90
|
-
default: {
|
|
91
|
-
backgroundColors: ['#E5E5EA', '#E5E5EA'],
|
|
92
|
-
dotColors: ['#8E8E93', '#8E8E93'],
|
|
93
|
-
emptyDotColors: ['#D1D1D6', '#D1D1D6']
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
export interface TypingIndicatorProps {
|
|
98
|
-
hide?: boolean
|
|
99
|
-
backgroundColors?: string[]
|
|
100
|
-
dotColors?: string[]
|
|
101
|
-
dotEmptyColors?: string[]
|
|
102
|
-
theme?: 'purple' | 'red' | 'default'
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
const dotSize = 9
|
|
106
|
-
const padding = dotSize / 4
|
|
107
|
-
const paddingVertical = padding * 5
|
|
108
|
-
const totalHeight = dotSize + paddingVertical * 2
|
|
109
|
-
|
|
110
|
-
const styles = StyleSheet.create({
|
|
111
|
-
container: {
|
|
112
|
-
alignItems: 'flex-start'
|
|
113
|
-
},
|
|
114
|
-
wrapper: {
|
|
115
|
-
paddingHorizontal: padding * 3,
|
|
116
|
-
paddingVertical,
|
|
117
|
-
borderRadius: totalHeight / 2
|
|
118
|
-
},
|
|
119
|
-
dots: {
|
|
120
|
-
flexDirection: 'row'
|
|
121
|
-
},
|
|
122
|
-
dot: {
|
|
123
|
-
height: dotSize,
|
|
124
|
-
width: dotSize,
|
|
125
|
-
borderRadius: dotSize / 2,
|
|
126
|
-
backgroundColor: 'white',
|
|
127
|
-
marginHorizontal: padding,
|
|
128
|
-
overflow: 'hidden'
|
|
129
|
-
}
|
|
130
|
-
})
|
|
131
|
-
|
|
132
|
-
function runLoop(config: Animated.TimingConfig) {
|
|
133
|
-
const clock = new Clock()
|
|
134
|
-
|
|
135
|
-
const state = {
|
|
136
|
-
finished: new Value(0),
|
|
137
|
-
position: new Value(0),
|
|
138
|
-
time: new Value(0),
|
|
139
|
-
frameTime: new Value(0)
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
return block([
|
|
143
|
-
// start right away
|
|
144
|
-
startClock(clock),
|
|
145
|
-
|
|
146
|
-
// process your state
|
|
147
|
-
timing(clock, state, config),
|
|
148
|
-
|
|
149
|
-
// when over (processed by timing at the end)
|
|
150
|
-
cond(state.finished, [
|
|
151
|
-
// we stop
|
|
152
|
-
stopClock(clock),
|
|
153
|
-
|
|
154
|
-
// set flag ready to be restarted
|
|
155
|
-
set(state.finished, 0),
|
|
156
|
-
// same value as the initial defined in the state creation
|
|
157
|
-
set(state.position, 0),
|
|
158
|
-
|
|
159
|
-
// very important to reset this ones !!! as mentioned in the doc about timing is saying
|
|
160
|
-
set(state.time, 0),
|
|
161
|
-
set(state.frameTime, 0),
|
|
162
|
-
|
|
163
|
-
// and we restart
|
|
164
|
-
startClock(clock)
|
|
165
|
-
]),
|
|
166
|
-
|
|
167
|
-
state.position
|
|
168
|
-
])
|
|
169
|
-
}
|
package/src/components/index.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export { default as Inbox } from './Inbox'
|
|
2
|
-
export { default as RoomCreator } from './RoomCreator'
|
|
3
|
-
export { default as CreateRoomList } from './RoomCreator/Content'
|
|
4
|
-
export { default as TypingIndicator } from './TypingIndicator'
|
|
5
|
-
export { default as Messages } from './Chat'
|
|
6
|
-
export { default as Avatar } from './Avatar'
|
|
7
|
-
export {
|
|
8
|
-
default as ChatProvider,
|
|
9
|
-
chat,
|
|
10
|
-
fuego,
|
|
11
|
-
setChat,
|
|
12
|
-
setFuego,
|
|
13
|
-
} from './ChatProvider'
|
|
14
|
-
export { default as Initials } from './Inbox/Item/Initials'
|
|
15
|
-
export { default as Bubble } from './Chat/Bubble'
|
|
16
|
-
export { default as UnreadIndicator } from './Inbox/Item/UnreadIndicator'
|
|
17
|
-
export { default as Composer } from './Chat/Composer'
|
|
18
|
-
export { default as SystemMessage } from './Chat/SystemMessage'
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export const getInitials = function(name: string | null, maxLength = 2) {
|
|
2
|
-
const parts = name?.split(' ') ?? ''
|
|
3
|
-
let initials = ''
|
|
4
|
-
for (let i = 0; i < parts.length; i++) {
|
|
5
|
-
if (parts[i].length > 0 && parts[i] !== '') {
|
|
6
|
-
initials += parts[i][0]
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
if (maxLength) initials = initials.slice(0, maxLength)
|
|
10
|
-
return initials
|
|
11
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default (a, b) => (a.avatar > b.avatar ? 1 : -1)
|
package/src/hooks/index.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export { default as useMessages } from './useMessages'
|
|
2
|
-
export { default as useRoom } from './useRoom'
|
|
3
|
-
export { default as useTyping } from './useTyping'
|
|
4
|
-
export { default as useInbox } from './useInbox'
|
|
5
|
-
export { default as useCreator } from './useCreator'
|
|
6
|
-
export { default as useViewMessages } from './useViewMessages'
|
|
7
|
-
export { default as useSendToPeople } from './useSend/useSendToPeople'
|
|
8
|
-
export { default as useSendToGroup } from './useSend/useSendToGroup'
|