mirror of
				https://github.com/pierre42100/ComunicAndroid
				synced 2025-10-30 17:14:43 +00:00 
			
		
		
		
	Can update comment content.
This commit is contained in:
		| @@ -102,6 +102,31 @@ public class CommentsHelper { | |||||||
|  |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Edit the content of the comment | ||||||
|  |      * | ||||||
|  |      * @param commentID The ID of the comment to update | ||||||
|  |      * @param content The new content of the comment | ||||||
|  |      * @return TRUE for a success / FALSE else | ||||||
|  |      */ | ||||||
|  |     public boolean editContent(int commentID, String content){ | ||||||
|  |  | ||||||
|  |         //Perform a request on the server | ||||||
|  |         APIRequestParameters params = new APIRequestParameters(mContext, "comments/edit"); | ||||||
|  |         params.addInt("commentID", commentID); | ||||||
|  |         params.addString("content", content); | ||||||
|  |  | ||||||
|  |         //Try to perform the request on the server | ||||||
|  |         try { | ||||||
|  |             APIResponse response = new APIRequest().exec(params); | ||||||
|  |             return  response.getResponse_code() == 200; | ||||||
|  |         } catch (Exception e) { | ||||||
|  |             e.printStackTrace(); | ||||||
|  |             return false; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Intend to delete a comment |      * Intend to delete a comment | ||||||
|      * |      * | ||||||
|   | |||||||
| @@ -320,6 +320,13 @@ public class PostsAdapter extends ArrayAdapter<Post>{ | |||||||
|          */ |          */ | ||||||
|         void onCommentLikeUpdate(Comment comment, boolean is_liking); |         void onCommentLikeUpdate(Comment comment, boolean is_liking); | ||||||
|  |  | ||||||
|  |         /** | ||||||
|  |          * Handles the update of the content of a comment | ||||||
|  |          * | ||||||
|  |          * @param comment The target comment | ||||||
|  |          */ | ||||||
|  |         void onUpdateCommentContent(Comment comment); | ||||||
|  |  | ||||||
|         /** |         /** | ||||||
|          * Handles the process of deletion of a comment. |          * Handles the process of deletion of a comment. | ||||||
|          * |          * | ||||||
|   | |||||||
| @@ -225,7 +225,7 @@ public class ConversationsListFragment extends Fragment implements AdapterView.O | |||||||
|  |  | ||||||
|             //Check for errors |             //Check for errors | ||||||
|             if(usersInfo == null){ |             if(usersInfo == null){ | ||||||
|                 Log.e(TAG, "Couldn't get informations about some users !"); |                 Log.e(TAG, "Couldn't get information about some users !"); | ||||||
|                 return; |                 return; | ||||||
|             } |             } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -391,8 +391,10 @@ public class PostsListFragment extends Fragment | |||||||
|                 inflater.inflate(R.menu.menu_comments_actions, menu); |                 inflater.inflate(R.menu.menu_comments_actions, menu); | ||||||
|  |  | ||||||
|                 //Disable moderation actions if required |                 //Disable moderation actions if required | ||||||
|                 if(comment.getUserID() != AccountUtils.getID(getActivity())) |                 if(comment.getUserID() != AccountUtils.getID(getActivity())) { | ||||||
|  |                     menu.findItem(R.id.action_edit_comment).setEnabled(false); | ||||||
|                     menu.findItem(R.id.action_delete).setEnabled(false); |                     menu.findItem(R.id.action_delete).setEnabled(false); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|                 //Save information about the comment in the fragment |                 //Save information about the comment in the fragment | ||||||
|                 MENU_ACTION = MENU_ACTION_COMMENTS; |                 MENU_ACTION = MENU_ACTION_COMMENTS; | ||||||
| @@ -419,6 +421,87 @@ public class PostsListFragment extends Fragment | |||||||
|  |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void onUpdateCommentContent(final Comment comment) { | ||||||
|  |  | ||||||
|  |         //Inflate the content of the dialog | ||||||
|  |         View content = getActivity().getLayoutInflater().inflate(R.layout.dialog_edit_comment, null); | ||||||
|  |         final EditCommentContentView commentInput = content.findViewById(R.id.input_comment_content); | ||||||
|  |         commentInput.setText(comment.getContent()); | ||||||
|  |  | ||||||
|  |         //Display a dialog | ||||||
|  |         new AlertDialog.Builder(getActivity()) | ||||||
|  |  | ||||||
|  |                 //Set general information | ||||||
|  |                 .setTitle(R.string.popup_editcomment_title) | ||||||
|  |                 .setNegativeButton(R.string.popup_editcomment_cancel, null) | ||||||
|  |                 .setView(content) | ||||||
|  |  | ||||||
|  |                 //Set positive action | ||||||
|  |                 .setPositiveButton(R.string.popup_editcomment_confirm, | ||||||
|  |                         new DialogInterface.OnClickListener() { | ||||||
|  |                     @Override | ||||||
|  |                     public void onClick(DialogInterface dialog, int which) { | ||||||
|  |                         submitNewComment(comment, commentInput.getText()+""); | ||||||
|  |                     } | ||||||
|  |                 }) | ||||||
|  |  | ||||||
|  |                 .show(); | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Submit the new content of the comment back to the server, after having done security check | ||||||
|  |      * | ||||||
|  |      * @param comment The comment to update | ||||||
|  |      * @param newContent The new content for the comment | ||||||
|  |      */ | ||||||
|  |     private void submitNewComment(final Comment comment, final String newContent){ | ||||||
|  |  | ||||||
|  |         //Check the length of the comment | ||||||
|  |         if(!StringsUtils.isValidForContent(newContent)){ | ||||||
|  |             Toast.makeText(getActivity(), R.string.err_invalid_comment_content, | ||||||
|  |                     Toast.LENGTH_SHORT).show(); | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         //Try to update the content of the comment on the server | ||||||
|  |         new AsyncTask<Void, Void, Comment>(){ | ||||||
|  |  | ||||||
|  |             @Override | ||||||
|  |             protected Comment doInBackground(Void... params) { | ||||||
|  |  | ||||||
|  |                 //Try to update the comment | ||||||
|  |                 if(!mCommentsHelper.editContent(comment.getId(), newContent)) | ||||||
|  |                     return null; | ||||||
|  |  | ||||||
|  |                 //Get a new version of the comment | ||||||
|  |                 return mCommentsHelper.getInfosSingle(comment.getId()); | ||||||
|  |  | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             @Override | ||||||
|  |             protected void onPostExecute(@Nullable Comment newComment) { | ||||||
|  |  | ||||||
|  |                 //Check if the activity has been destroyed | ||||||
|  |                 if(getActivity() == null) | ||||||
|  |                     return; | ||||||
|  |  | ||||||
|  |                 //Check for errors | ||||||
|  |                 if(newComment == null){ | ||||||
|  |                     Toast.makeText(getActivity(), R.string.err_update_comment_content, | ||||||
|  |                             Toast.LENGTH_SHORT).show(); | ||||||
|  |                     return; | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 //Update the comment content | ||||||
|  |                 comment.setContent(newComment.getContent()); | ||||||
|  |                 mPostsAdapter.notifyDataSetChanged(); | ||||||
|  |             } | ||||||
|  |         }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void deleteComment(final Comment comment) { |     public void deleteComment(final Comment comment) { | ||||||
|  |  | ||||||
| @@ -490,7 +573,13 @@ public class PostsListFragment extends Fragment | |||||||
|             if(mCurrCommentInContextMenu == null) |             if(mCurrCommentInContextMenu == null) | ||||||
|                 return false; |                 return false; | ||||||
|  |  | ||||||
|             //Check the action to perform |             //Edit the comment | ||||||
|  |             if(item.getItemId() == R.id.action_edit_comment){ | ||||||
|  |                 onUpdateCommentContent(mCurrCommentInContextMenu); | ||||||
|  |                 return true; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             //Delete the comment | ||||||
|             if(item.getItemId() == R.id.action_delete){ |             if(item.getItemId() == R.id.action_delete){ | ||||||
|                 deleteComment(mCurrCommentInContextMenu); |                 deleteComment(mCurrCommentInContextMenu); | ||||||
|                 return true; |                 return true; | ||||||
|   | |||||||
							
								
								
									
										12
									
								
								app/src/main/res/layout/dialog_edit_comment.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								app/src/main/res/layout/dialog_edit_comment.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
|  |     android:orientation="vertical" android:layout_width="match_parent" | ||||||
|  |     android:layout_height="match_parent"> | ||||||
|  |  | ||||||
|  |     <org.communiquons.android.comunic.client.ui.views.EditCommentContentView | ||||||
|  |         android:id="@+id/input_comment_content" | ||||||
|  |         android:layout_width="match_parent" | ||||||
|  |         android:layout_height="wrap_content" | ||||||
|  |         android:hint="@string/popup_editcomment_edit_placeholder"/> | ||||||
|  |  | ||||||
|  | </LinearLayout> | ||||||
| @@ -1,6 +1,10 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <menu xmlns:app="http://schemas.android.com/apk/res-auto" | <menu xmlns:android="http://schemas.android.com/apk/res/android"> | ||||||
|     xmlns:android="http://schemas.android.com/apk/res/android"> |  | ||||||
|  |     <!-- Update comment --> | ||||||
|  |     <item | ||||||
|  |         android:id="@+id/action_edit_comment" | ||||||
|  |         android:title="@string/action_edit_comment"/> | ||||||
|  |  | ||||||
|     <!-- Delete comment --> |     <!-- Delete comment --> | ||||||
|     <item |     <item | ||||||
|   | |||||||
| @@ -130,4 +130,10 @@ | |||||||
|     <string name="like_button_img">Like</string> |     <string name="like_button_img">Like</string> | ||||||
|     <string name="like_view_like">Like</string> |     <string name="like_view_like">Like</string> | ||||||
|     <string name="like_view_liking">Liking</string> |     <string name="like_view_liking">Liking</string> | ||||||
|  |     <string name="action_edit_comment">Edit</string> | ||||||
|  |     <string name="popup_editcomment_title">Edit the content of the comment</string> | ||||||
|  |     <string name="popup_editcomment_cancel">Cancel</string> | ||||||
|  |     <string name="popup_editcomment_confirm">Edit</string> | ||||||
|  |     <string name="popup_editcomment_edit_placeholder">New content for the comment</string> | ||||||
|  |     <string name="err_update_comment_content">An error occurred while trying to update comment content !</string> | ||||||
| </resources> | </resources> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Pierre
					Pierre