[Clipclops] New clipclop dialog (#3750)
* add new routes with placeholder screens * add clops list * add a clop input * add some better padding to the clops * some more adjustments * add rnkc * implement rnkc * implement rnkc * be a little less weird about it * rename clop stuff * rename more clop * one more * add codegenerated lexicon * replace hailey's types * use codegen'd types in components * fix error + throw if fetch failed * remove bad imports * update messageslist and messageitem * import useState * replace hailey's types * use codegen'd types in components * add FAB * new chat dialog * error + default search term * fix typo * fix web styles * optimistically set chat data * use cursor instead of last rev * [Clipclops] Temp codegenerated lexicon (#3749) * add codegenerated lexicon * replace hailey's types * use codegen'd types in components * fix error + throw if fetch failed * remove bad imports * update messageslist and messageitem * import useState * add clop service URL hook * add dm service url storage * use context * use context for service url (temp) * remove log * cleanup merge * fix merge error * disable hack * sender-based message styles * temporary filter * merge cleanup * add `hideBackButton` * rm unneeded return * tried to be smart * hide go back button * use `searchActorTypeahead` instead --------- Co-authored-by: Hailey <me@haileyok.com>
This commit is contained in:
parent
2b7d796ca9
commit
bcd3678067
8 changed files with 352 additions and 56 deletions
|
@ -1,12 +1,16 @@
|
|||
import React from 'react'
|
||||
import {View} from 'react-native'
|
||||
|
||||
import {useAgent} from '#/state/session'
|
||||
import {atoms as a, useTheme} from '#/alf'
|
||||
import {Text} from '#/components/Typography'
|
||||
import * as TempDmChatDefs from '#/temp/dm/defs'
|
||||
|
||||
export function MessageItem({item}: {item: TempDmChatDefs.MessageView}) {
|
||||
const t = useTheme()
|
||||
const {getAgent} = useAgent()
|
||||
|
||||
const fromMe = item.sender?.did === getAgent().session?.did
|
||||
|
||||
return (
|
||||
<View
|
||||
|
@ -15,13 +19,17 @@ export function MessageItem({item}: {item: TempDmChatDefs.MessageView}) {
|
|||
a.px_md,
|
||||
a.my_xs,
|
||||
a.rounded_md,
|
||||
fromMe ? a.self_end : a.self_start,
|
||||
{
|
||||
backgroundColor: t.palette.primary_500,
|
||||
backgroundColor: fromMe
|
||||
? t.palette.primary_500
|
||||
: t.palette.contrast_50,
|
||||
maxWidth: '65%',
|
||||
borderRadius: 17,
|
||||
},
|
||||
]}>
|
||||
<Text style={[a.text_md, {lineHeight: 1.2, color: 'white'}]}>
|
||||
<Text
|
||||
style={[a.text_md, a.leading_snug, fromMe && {color: t.palette.white}]}>
|
||||
{item.text}
|
||||
</Text>
|
||||
</View>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import React, {useCallback, useMemo, useRef, useState} from 'react'
|
||||
import {Alert, FlatList, View, ViewToken} from 'react-native'
|
||||
import {FlatList, View, ViewToken} from 'react-native'
|
||||
import {Alert} from 'react-native'
|
||||
import {KeyboardAvoidingView} from 'react-native-keyboard-controller'
|
||||
|
||||
import {isWeb} from 'platform/detection'
|
||||
|
@ -64,6 +65,7 @@ export function MessagesList({chatId}: {chatId: string}) {
|
|||
const totalMessages = useRef(10)
|
||||
|
||||
// TODO later
|
||||
|
||||
const [_, setShowSpinner] = useState(false)
|
||||
|
||||
// Query Data
|
||||
|
@ -147,6 +149,8 @@ export function MessagesList({chatId}: {chatId: string}) {
|
|||
},
|
||||
)
|
||||
totalMessages.current = filtered.length
|
||||
|
||||
return filtered
|
||||
}, [chat])
|
||||
|
||||
return (
|
||||
|
@ -162,7 +166,7 @@ export function MessagesList({chatId}: {chatId: string}) {
|
|||
contentContainerStyle={{paddingHorizontal: 10}}
|
||||
// In the future, we might want to adjust this value. Not very concerning right now as long as we are only
|
||||
// dealing with text. But whenever we have images or other media and things are taller, we will want to lower
|
||||
// this...probably
|
||||
// this...probably.
|
||||
initialNumToRender={20}
|
||||
// Same with the max to render per batch. Let's be safe for now though.
|
||||
maxToRenderPerBatch={25}
|
||||
|
@ -175,7 +179,6 @@ export function MessagesList({chatId}: {chatId: string}) {
|
|||
maintainVisibleContentPosition={{
|
||||
minIndexForVisible: 0,
|
||||
}}
|
||||
// This is actually a header since we are inverted!
|
||||
ListFooterComponent={<MaybeLoader isLoading={false} />}
|
||||
removeClippedSubviews={true}
|
||||
ref={flatListRef}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue