diff options
Diffstat (limited to 'src/view/screens')
-rw-r--r-- | src/view/screens/Debug.tsx | 13 | ||||
-rw-r--r-- | src/view/screens/PostThread.tsx | 42 |
2 files changed, 52 insertions, 3 deletions
diff --git a/src/view/screens/Debug.tsx b/src/view/screens/Debug.tsx index f2349195e..eb5ffe20f 100644 --- a/src/view/screens/Debug.tsx +++ b/src/view/screens/Debug.tsx @@ -5,6 +5,7 @@ import {ThemeProvider, PaletteColorName} from 'lib/ThemeContext' import {usePalette} from 'lib/hooks/usePalette' import {s} from 'lib/styles' import {displayNotification} from 'lib/notifee' +import * as Toast from 'view/com/util/Toast' import {Text} from '../com/util/text/Text' import {ViewSelector} from '../com/util/ViewSelector' @@ -171,16 +172,24 @@ function ErrorView() { } function NotifsView() { - const trigger = () => { + const triggerPush = () => { displayNotification( 'Paul Frazee liked your post', "Hello world! This is a test of the notifications card. The text is long to see how that's handled.", ) } + const triggerToast = () => { + Toast.show('The task has been completed') + } + const triggerToast2 = () => { + Toast.show('The task has been completed successfully and with no problems') + } return ( <View style={s.p10}> <View style={s.flexRow}> - <Button onPress={trigger} label="Trigger" /> + <Button onPress={triggerPush} label="Trigger Push" /> + <Button onPress={triggerToast} label="Trigger Toast" /> + <Button onPress={triggerToast2} label="Trigger Toast 2" /> </View> </View> ) diff --git a/src/view/screens/PostThread.tsx b/src/view/screens/PostThread.tsx index e93fcb1ab..0b6829735 100644 --- a/src/view/screens/PostThread.tsx +++ b/src/view/screens/PostThread.tsx @@ -1,15 +1,21 @@ import React, {useEffect, useMemo} from 'react' -import {View} from 'react-native' +import {StyleSheet, View} from 'react-native' import {makeRecordUri} from 'lib/strings/url-helpers' import {ViewHeader} from '../com/util/ViewHeader' import {PostThread as PostThreadComponent} from '../com/post-thread/PostThread' +import {ComposePrompt} from 'view/com/composer/Prompt' import {PostThreadViewModel} from 'state/models/post-thread-view' import {ScreenParams} from '../routes' import {useStores} from 'state/index' import {s} from 'lib/styles' +import {useSafeAreaInsets} from 'react-native-safe-area-context' +import {clamp} from 'lodash' + +const SHELL_FOOTER_HEIGHT = 44 export const PostThread = ({navIdx, visible, params}: ScreenParams) => { const store = useStores() + const safeAreaInsets = useSafeAreaInsets() const {name, rkey} = params const uri = makeRecordUri(name, 'app.bsky.feed.post', rkey) const view = useMemo<PostThreadViewModel>( @@ -48,12 +54,46 @@ export const PostThread = ({navIdx, visible, params}: ScreenParams) => { } }, [visible, store.nav, store.log, store.shell, name, navIdx, view]) + const onPressReply = React.useCallback(() => { + if (!view.thread) { + return + } + store.shell.openComposer({ + replyTo: { + uri: view.thread.post.uri, + cid: view.thread.post.cid, + text: view.thread.postRecord?.text as string, + author: { + handle: view.thread.post.author.handle, + displayName: view.thread.post.author.displayName, + avatar: view.thread.post.author.avatar, + }, + }, + onPost: () => view.refresh(), + }) + }, [view, store]) + return ( <View style={s.hContentRegion}> <ViewHeader title="Post" /> <View style={s.hContentRegion}> <PostThreadComponent uri={uri} view={view} /> </View> + <View + style={[ + styles.prompt, + {bottom: SHELL_FOOTER_HEIGHT + clamp(safeAreaInsets.bottom, 15, 30)}, + ]}> + <ComposePrompt onPressCompose={onPressReply} /> + </View> </View> ) } + +const styles = StyleSheet.create({ + prompt: { + position: 'absolute', + left: 0, + right: 0, + }, +}) |