diff --git a/app/actions/remote/post.ts b/app/actions/remote/post.ts
index 2b2c1e8e5..26f3e299d 100644
--- a/app/actions/remote/post.ts
+++ b/app/actions/remote/post.ts
@@ -552,3 +552,26 @@ export const togglePinPost = async (serverUrl: string, postId: string) => {
return {error};
}
};
+
+export const deletePost = async (serverUrl: string, postId: string) => {
+ const database = DatabaseManager.serverDatabases[serverUrl]?.database;
+ if (!database) {
+ return {error: `${serverUrl} database not found`};
+ }
+
+ let client: Client;
+ try {
+ client = NetworkManager.getClient(serverUrl);
+ } catch (error) {
+ return {error};
+ }
+
+ try {
+ await client.deletePost(postId);
+ const post = await removePost(serverUrl, {id: postId} as Post);
+ return {post};
+ } catch (error) {
+ forceLogoutIfNecessary(serverUrl, error as ClientErrorProps);
+ return {error};
+ }
+};
diff --git a/app/screens/post_options/options/delete_post_option.tsx b/app/screens/post_options/options/delete_post_option.tsx
index 73782d085..b8af596c3 100644
--- a/app/screens/post_options/options/delete_post_option.tsx
+++ b/app/screens/post_options/options/delete_post_option.tsx
@@ -1,22 +1,52 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
-import React from 'react';
+import React, {useCallback} from 'react';
+import {useIntl} from 'react-intl';
+import {Alert} from 'react-native';
+import {deletePost} from '@actions/remote/post';
+import {Screens} from '@constants';
+import {useServerUrl} from '@context/server';
import {t} from '@i18n';
+import {dismissBottomSheet} from '@screens/navigation';
import BaseOption from './base_option';
-//fixme: wire up handleDeletePost
-const DeletePostOption = () => {
- const handleDeletePost = () => null;
+type Props = {
+ postId: string ;
+}
+const DeletePostOption = ({postId}: Props) => {
+ const serverUrl = useServerUrl();
+ const {formatMessage} = useIntl();
+
+ const onPress = useCallback(() => {
+ Alert.alert(
+ formatMessage({id: 'mobile.post.delete_title', defaultMessage: 'Delete Post'}),
+ formatMessage({
+ id: 'mobile.post.delete_question',
+ defaultMessage: 'Are you sure you want to delete this post?',
+ }),
+ [{
+ text: formatMessage({id: 'mobile.post.cancel', defaultMessage: 'Cancel'}),
+ style: 'cancel',
+ }, {
+ text: formatMessage({id: 'post_info.del', defaultMessage: 'Delete'}),
+ style: 'destructive',
+ onPress: () => {
+ deletePost(serverUrl, postId);
+ dismissBottomSheet(Screens.POST_OPTIONS);
+ },
+ }],
+ );
+ }, [postId, serverUrl]);
return (
diff --git a/app/screens/post_options/options/edit_option.tsx b/app/screens/post_options/options/edit_option.tsx
index 6a3f2236d..f3ccd97ea 100644
--- a/app/screens/post_options/options/edit_option.tsx
+++ b/app/screens/post_options/options/edit_option.tsx
@@ -1,22 +1,30 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
-import React from 'react';
+import React, {useCallback} from 'react';
+import {Screens} from '@constants';
import {t} from '@i18n';
+import {dismissBottomSheet, goToScreen} from '@screens/navigation';
+import PostModel from '@typings/database/models/servers/post';
import BaseOption from './base_option';
-const EditOption = () => {
- const handleEdit = () => {
- //todo:
- };
+type Props = {
+ post: PostModel;
+}
+const EditOption = ({post}: Props) => {
+ const onPress = useCallback(async () => {
+ // https://mattermost.atlassian.net/browse/MM-41991
+ await dismissBottomSheet(Screens.POST_OPTIONS);
+ goToScreen('EDIT_SCREEN_NOT_IMPLEMENTED_YET', '', {post});
+ }, [post]);
return (
diff --git a/app/screens/post_options/post_options.tsx b/app/screens/post_options/post_options.tsx
index ed3db3610..e0076e115 100644
--- a/app/screens/post_options/post_options.tsx
+++ b/app/screens/post_options/post_options.tsx
@@ -89,8 +89,8 @@ const PostOptions = ({
postId={post.id}
/>
}
- {canEdit && }
- {canDelete && }
+ {canEdit && }
+ {canDelete && }
>
);
};
diff --git a/assets/base/i18n/en.json b/assets/base/i18n/en.json
index 828012ded..546d693b9 100644
--- a/assets/base/i18n/en.json
+++ b/assets/base/i18n/en.json
@@ -291,6 +291,8 @@
"mobile.post_textbox.uploadFailedDesc": "Some attachments failed to upload to the server. Are you sure you want to post the message?",
"mobile.post_textbox.uploadFailedTitle": "Attachment failure",
"mobile.post.cancel": "Cancel",
+ "mobile.post.delete_question": "Are you sure you want to delete this post?",
+ "mobile.post.delete_title": "Delete Post",
"mobile.post.failed_delete": "Delete Message",
"mobile.post.failed_retry": "Try Again",
"mobile.posts_view.moreMsg": "More New Messages Above",