diff options
author | Paul Frazee <pfrazee@gmail.com> | 2022-11-16 16:16:43 -0600 |
---|---|---|
committer | Paul Frazee <pfrazee@gmail.com> | 2022-11-16 16:16:43 -0600 |
commit | 41ae87e770f23ebe5ad02dbc68a497e0fb2f2a3d (patch) | |
tree | 0bba2afc4eaa19abe64fafeaf2e6ac50861cae15 /src/view/com/posts/FeedItem.tsx | |
parent | bd1a4b198e3682f96354d83f1e1efccf31813f82 (diff) | |
download | voidsky-41ae87e770f23ebe5ad02dbc68a497e0fb2f2a3d.tar.zst |
Add post deletion
Diffstat (limited to 'src/view/com/posts/FeedItem.tsx')
-rw-r--r-- | src/view/com/posts/FeedItem.tsx | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/src/view/com/posts/FeedItem.tsx b/src/view/com/posts/FeedItem.tsx index d1e891d62..e4c54b32a 100644 --- a/src/view/com/posts/FeedItem.tsx +++ b/src/view/com/posts/FeedItem.tsx @@ -1,16 +1,16 @@ -import React, {useMemo} from 'react' +import React, {useMemo, useState} from 'react' import {observer} from 'mobx-react-lite' import {StyleSheet, Text, View} from 'react-native' import {AtUri} from '../../../third-party/uri' import * as PostType from '../../../third-party/api/src/client/types/app/bsky/feed/post' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import {FeedItemModel} from '../../../state/models/feed-view' -import {SharePostModel} from '../../../state/models/shell-ui' import {Link} from '../util/Link' import {UserInfoText} from '../util/UserInfoText' import {PostMeta} from '../util/PostMeta' import {PostCtrls} from '../util/PostCtrls' import {RichText} from '../util/RichText' +import Toast from '../util/Toast' import {UserAvatar} from '../util/UserAvatar' import {s, colors} from '../../lib/styles' import {useStores} from '../../../state' @@ -21,6 +21,7 @@ export const FeedItem = observer(function FeedItem({ item: FeedItemModel }) { const store = useStores() + const [deleted, setDeleted] = useState(false) const record = item.record as unknown as PostType.Record const itemHref = useMemo(() => { const urip = new AtUri(item.uri) @@ -57,8 +58,25 @@ export const FeedItem = observer(function FeedItem({ .toggleDownvote() .catch(e => console.error('Failed to toggle downvote', record, e)) } - const onPressShare = (uri: string) => { - store.shell.openModal(new SharePostModel(uri)) + const onDeletePost = () => { + item.delete().then( + () => { + setDeleted(true) + Toast.show('Post deleted', { + position: Toast.positions.TOP, + }) + }, + e => { + console.error(e) + Toast.show('Failed to delete post, please try again', { + position: Toast.positions.TOP, + }) + }, + ) + } + + if (deleted) { + return <View /> } return ( @@ -107,6 +125,8 @@ export const FeedItem = observer(function FeedItem({ authorHandle={item.author.handle} authorDisplayName={item.author.displayName} timestamp={item.indexedAt} + isAuthor={item.author.did === store.me.did} + onDeletePost={onDeletePost} /> {replyHref !== '' && ( <View style={[s.flexRow, s.mb5, {alignItems: 'center'}]}> |