mirror of
https://github.com/pierre42100/ComunicAndroid
synced 2024-11-23 22:09:30 +00:00
User can delete posts.
This commit is contained in:
parent
7a2177a45c
commit
54bb812e5c
@ -25,6 +25,7 @@ public class Post {
|
|||||||
private PostTypes type;
|
private PostTypes type;
|
||||||
private PostVisibilityLevels visibilityLevel;
|
private PostVisibilityLevels visibilityLevel;
|
||||||
private ArrayList<Comment> comments_list;
|
private ArrayList<Comment> comments_list;
|
||||||
|
private PostUserAccess user_access_level = PostUserAccess.NO_ACCESS;
|
||||||
|
|
||||||
//Files specific
|
//Files specific
|
||||||
private String file_path_url;
|
private String file_path_url;
|
||||||
@ -98,6 +99,15 @@ public class Post {
|
|||||||
return comments_list;
|
return comments_list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Set and post user access level
|
||||||
|
void setUser_access_level(PostUserAccess user_access_level) {
|
||||||
|
this.user_access_level = user_access_level;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PostUserAccess getUser_access_level() {
|
||||||
|
return user_access_level;
|
||||||
|
}
|
||||||
|
|
||||||
//Set and get file path url
|
//Set and get file path url
|
||||||
void setFile_path_url(String file_path_url) {
|
void setFile_path_url(String file_path_url) {
|
||||||
this.file_path_url = file_path_url;
|
this.file_path_url = file_path_url;
|
||||||
|
@ -0,0 +1,34 @@
|
|||||||
|
package org.communiquons.android.comunic.client.data.posts;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Post users access enum
|
||||||
|
*
|
||||||
|
* @author Pierre HUBERT
|
||||||
|
* Created by pierre on 3/25/18.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public enum PostUserAccess {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No access to the post
|
||||||
|
*/
|
||||||
|
NO_ACCESS,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Basic access to the post
|
||||||
|
* > Can see the post, put comments within it, like it...
|
||||||
|
*/
|
||||||
|
BASIC_ACCESS,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Intermediate access to the post
|
||||||
|
* > Can delete the post
|
||||||
|
*/
|
||||||
|
INTERMEDIATE_ACCESS,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Full access to the post
|
||||||
|
*/
|
||||||
|
FULL_ACCESS
|
||||||
|
|
||||||
|
}
|
@ -72,9 +72,34 @@ public class PostsHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse a JSON post informations into POST object
|
* Intend to delete a post specified by its ID
|
||||||
*
|
*
|
||||||
* @param json Source JSON post informations
|
* @param postID The ID of the post to delete
|
||||||
|
* @return TRUE in case of SUCCESS / FALSE else
|
||||||
|
*/
|
||||||
|
public boolean delete(int postID){
|
||||||
|
|
||||||
|
//Perform the request on the server
|
||||||
|
APIRequestParameters params = new APIRequestParameters(mContext, "posts/delete");
|
||||||
|
params.addInt("postID", postID);
|
||||||
|
|
||||||
|
//Intend to perform the request
|
||||||
|
try {
|
||||||
|
|
||||||
|
APIResponse response = new APIRequest().exec(params);
|
||||||
|
|
||||||
|
return response.getResponse_code() == 200;
|
||||||
|
|
||||||
|
} catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a JSON post information into POST object
|
||||||
|
*
|
||||||
|
* @param json Source JSON post information
|
||||||
* @return The created post element
|
* @return The created post element
|
||||||
*/
|
*/
|
||||||
private Post parse_json_post(JSONObject json) throws JSONException {
|
private Post parse_json_post(JSONObject json) throws JSONException {
|
||||||
@ -126,6 +151,25 @@ public class PostsHelper {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Determine the user access level to the post
|
||||||
|
switch (json.getString("user_access")){
|
||||||
|
|
||||||
|
case "basic":
|
||||||
|
post.setUser_access_level(PostUserAccess.BASIC_ACCESS);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "intermediate":
|
||||||
|
post.setUser_access_level(PostUserAccess.INTERMEDIATE_ACCESS);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "full":
|
||||||
|
post.setUser_access_level(PostUserAccess.FULL_ACCESS);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
post.setUser_access_level(PostUserAccess.NO_ACCESS);
|
||||||
|
}
|
||||||
|
|
||||||
//Get file path url (if any)
|
//Get file path url (if any)
|
||||||
if(json.getString("file_path_url") != null){
|
if(json.getString("file_path_url") != null){
|
||||||
post.setFile_path_url(json.getString("file_path_url"));
|
post.setFile_path_url(json.getString("file_path_url"));
|
||||||
|
@ -262,7 +262,7 @@ public class PostsAdapter extends ArrayAdapter<Post>{
|
|||||||
*
|
*
|
||||||
* @param pos The position of the post in the list
|
* @param pos The position of the post in the list
|
||||||
* @param button The button triggered to submit comment creation
|
* @param button The button triggered to submit comment creation
|
||||||
* @param post Informations about the target post
|
* @param post Information about the target post
|
||||||
* @param input The input where the comment comment was typed
|
* @param input The input where the comment comment was typed
|
||||||
*/
|
*/
|
||||||
void onCreateComment(int pos, View button, Post post, EditCommentContentView input);
|
void onCreateComment(int pos, View button, Post post, EditCommentContentView input);
|
||||||
@ -276,10 +276,17 @@ public class PostsAdapter extends ArrayAdapter<Post>{
|
|||||||
*/
|
*/
|
||||||
void showPostActions(View button, int pos, Post post);
|
void showPostActions(View button, int pos, Post post);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles the deletion process of a post
|
||||||
|
*
|
||||||
|
* @param pos The position of the post to delete
|
||||||
|
*/
|
||||||
|
void deletePost(int pos);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show the available actions for a comment
|
* Show the available actions for a comment
|
||||||
*
|
*
|
||||||
* @param button The button that provoqued the event
|
* @param button The button that provoked the event
|
||||||
* @param comment Target comment for the actions
|
* @param comment Target comment for the actions
|
||||||
*/
|
*/
|
||||||
void showCommentActions(View button, Comment comment);
|
void showCommentActions(View button, Comment comment);
|
||||||
|
@ -25,6 +25,8 @@ import org.communiquons.android.comunic.client.data.UsersInfo.UserInfo;
|
|||||||
import org.communiquons.android.comunic.client.data.comments.Comment;
|
import org.communiquons.android.comunic.client.data.comments.Comment;
|
||||||
import org.communiquons.android.comunic.client.data.comments.CommentsHelper;
|
import org.communiquons.android.comunic.client.data.comments.CommentsHelper;
|
||||||
import org.communiquons.android.comunic.client.data.posts.Post;
|
import org.communiquons.android.comunic.client.data.posts.Post;
|
||||||
|
import org.communiquons.android.comunic.client.data.posts.PostUserAccess;
|
||||||
|
import org.communiquons.android.comunic.client.data.posts.PostsHelper;
|
||||||
import org.communiquons.android.comunic.client.data.posts.PostsList;
|
import org.communiquons.android.comunic.client.data.posts.PostsList;
|
||||||
import org.communiquons.android.comunic.client.data.utils.StringsUtils;
|
import org.communiquons.android.comunic.client.data.utils.StringsUtils;
|
||||||
import org.communiquons.android.comunic.client.ui.adapters.PostsAdapter;
|
import org.communiquons.android.comunic.client.ui.adapters.PostsAdapter;
|
||||||
@ -94,6 +96,11 @@ public class PostsListFragment extends Fragment
|
|||||||
*/
|
*/
|
||||||
ListView mListView;
|
ListView mListView;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Posts helper
|
||||||
|
*/
|
||||||
|
PostsHelper mPostsHelper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Comments helper
|
* Comments helper
|
||||||
*/
|
*/
|
||||||
@ -144,6 +151,9 @@ public class PostsListFragment extends Fragment
|
|||||||
*/
|
*/
|
||||||
public void show(){
|
public void show(){
|
||||||
|
|
||||||
|
//Create post helper
|
||||||
|
mPostsHelper = new PostsHelper(getActivity());
|
||||||
|
|
||||||
//Create comment helper
|
//Create comment helper
|
||||||
mCommentsHelper = new CommentsHelper(getActivity());
|
mCommentsHelper = new CommentsHelper(getActivity());
|
||||||
|
|
||||||
@ -252,7 +262,7 @@ public class PostsListFragment extends Fragment
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void showPostActions(View button, final int pos, Post post) {
|
public void showPostActions(View button, final int pos, final Post post) {
|
||||||
|
|
||||||
button.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {
|
button.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {
|
||||||
@Override
|
@Override
|
||||||
@ -267,6 +277,14 @@ public class PostsListFragment extends Fragment
|
|||||||
MENU_ACTION = MENU_ACTIONS_POST;
|
MENU_ACTION = MENU_ACTIONS_POST;
|
||||||
mNumCurrPostInContextMenu = pos;
|
mNumCurrPostInContextMenu = pos;
|
||||||
|
|
||||||
|
//Disable some options if the user is not the post owner
|
||||||
|
if(post.getUser_access_level() != PostUserAccess.INTERMEDIATE_ACCESS &&
|
||||||
|
post.getUser_access_level() != PostUserAccess.FULL_ACCESS){
|
||||||
|
|
||||||
|
//Disable delete action
|
||||||
|
menu.findItem(R.id.action_delete).setEnabled(false);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -274,6 +292,58 @@ public class PostsListFragment extends Fragment
|
|||||||
button.showContextMenu();
|
button.showContextMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deletePost(final int pos) {
|
||||||
|
|
||||||
|
//Get information about the related post
|
||||||
|
final Post post = mPostsList.get(pos);
|
||||||
|
|
||||||
|
//Ask user confirmation
|
||||||
|
new AlertDialog.Builder(getActivity())
|
||||||
|
.setTitle(R.string.popup_deletepost_title)
|
||||||
|
.setMessage(R.string.popup_deletepost_message)
|
||||||
|
.setNegativeButton(R.string.popup_deletepost_cancel, null)
|
||||||
|
|
||||||
|
|
||||||
|
.setPositiveButton(R.string.popup_deletepost_confirm,
|
||||||
|
new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
|
||||||
|
//Remove the post from the list
|
||||||
|
mPostsList.remove(pos);
|
||||||
|
mPostsAdapter.notifyDataSetChanged();
|
||||||
|
|
||||||
|
//Perform post deletion
|
||||||
|
new AsyncTask<Integer, Void, Boolean>(){
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Boolean doInBackground(Integer... params) {
|
||||||
|
return mPostsHelper.delete(params[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostExecute(Boolean result) {
|
||||||
|
|
||||||
|
if(getActivity() == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(!result){
|
||||||
|
Toast.makeText(getActivity(), R.string.err_delete_post,
|
||||||
|
Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, post.getId());
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
.show();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void showCommentActions(View button, final Comment comment) {
|
public void showCommentActions(View button, final Comment comment) {
|
||||||
|
|
||||||
@ -352,6 +422,20 @@ public class PostsListFragment extends Fragment
|
|||||||
if(MENU_ACTION == MENU_ACTION_NONE)
|
if(MENU_ACTION == MENU_ACTION_NONE)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
//Check if the action is related to a post
|
||||||
|
if(MENU_ACTION == MENU_ACTIONS_POST){
|
||||||
|
|
||||||
|
//Check whether the related post exists or not
|
||||||
|
if(!(mPostsList.size() > mNumCurrPostInContextMenu))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
//Check if the request is to delete the comment
|
||||||
|
if(item.getItemId() == R.id.action_delete) {
|
||||||
|
deletePost(mNumCurrPostInContextMenu);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//Check if a comment action context menu has been created
|
//Check if a comment action context menu has been created
|
||||||
if(MENU_ACTION == MENU_ACTION_COMMENTS){
|
if(MENU_ACTION == MENU_ACTION_COMMENTS){
|
||||||
|
|
||||||
|
@ -114,4 +114,9 @@
|
|||||||
<string name="comment_action_btn_description">Actions on comment</string>
|
<string name="comment_action_btn_description">Actions on comment</string>
|
||||||
<string name="post_action_btn_description">Actions on post</string>
|
<string name="post_action_btn_description">Actions on post</string>
|
||||||
<string name="action_delete_post">Delete</string>
|
<string name="action_delete_post">Delete</string>
|
||||||
|
<string name="popup_deletepost_title">Delete post</string>
|
||||||
|
<string name="popup_deletepost_message">Are you sure do you want to delete this post! Will will not be able to undo this operation !</string>
|
||||||
|
<string name="popup_deletepost_cancel">No</string>
|
||||||
|
<string name="popup_deletepost_confirm">Yes</string>
|
||||||
|
<string name="err_delete_post">An error occurred while trying to delete post! Please try again later…</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
Reference in New Issue
Block a user