diff --git a/app/src/main/java/org/communiquons/android/comunic/client/api/APIRequest.java b/app/src/main/java/org/communiquons/android/comunic/client/api/APIRequest.java index fd1b4df..14af62c 100644 --- a/app/src/main/java/org/communiquons/android/comunic/client/api/APIRequest.java +++ b/app/src/main/java/org/communiquons/android/comunic/client/api/APIRequest.java @@ -120,8 +120,8 @@ public class APIRequest { * @param params The request parametres to update */ private void addAPItokens(APIRequestParameters params){ - params.addParameter("serviceName", BuildConfig.api_service_name); - params.addParameter("serviceToken", BuildConfig.api_service_token); + params.addString("serviceName", BuildConfig.api_service_name); + params.addString("serviceToken", BuildConfig.api_service_token); } /** @@ -145,8 +145,8 @@ public class APIRequest { return; //Not enough tokens //Add them to the request - params.addParameter("userToken1", tokens.get(0)); - params.addParameter("userToken2", tokens.get(1)); + params.addString("userToken1", tokens.get(0)); + params.addString("userToken2", tokens.get(1)); } diff --git a/app/src/main/java/org/communiquons/android/comunic/client/api/APIRequestParameters.java b/app/src/main/java/org/communiquons/android/comunic/client/api/APIRequestParameters.java index 3fb8c73..08ac139 100644 --- a/app/src/main/java/org/communiquons/android/comunic/client/api/APIRequestParameters.java +++ b/app/src/main/java/org/communiquons/android/comunic/client/api/APIRequestParameters.java @@ -2,8 +2,6 @@ package org.communiquons.android.comunic.client.api; import android.content.Context; -import org.communiquons.android.comunic.client.api.APIPostData; - import java.util.ArrayList; /** @@ -54,7 +52,7 @@ public class APIRequestParameters { * @param name The name of the new key * @param value The value of the new key */ - public void addParameter(String name, String value){ + public void addString(String name, String value){ parameters.add(new APIPostData(name, value)); } @@ -64,8 +62,8 @@ public class APIRequestParameters { * @param name The name of the new key * @param value The value of the new key (int) */ - public void addParameter(String name, int value){ - this.addParameter(name, ""+value); + public void addInt(String name, int value){ + this.addString(name, ""+value); } /** @@ -74,8 +72,8 @@ public class APIRequestParameters { * @param name The name of the new key * @param value The value of the new key (boolean) */ - public void addParameter(String name, boolean value){ - this.addParameter(name, value ? "true" : "false"); + public void addBoolean(String name, boolean value){ + this.addString(name, value ? "true" : "false"); } /** diff --git a/app/src/main/java/org/communiquons/android/comunic/client/data/UsersInfo/GetUsersHelper.java b/app/src/main/java/org/communiquons/android/comunic/client/data/UsersInfo/GetUsersHelper.java index c920bd4..9921f76 100644 --- a/app/src/main/java/org/communiquons/android/comunic/client/data/UsersInfo/GetUsersHelper.java +++ b/app/src/main/java/org/communiquons/android/comunic/client/data/UsersInfo/GetUsersHelper.java @@ -120,7 +120,7 @@ public class GetUsersHelper { //Perform an API request APIRequestParameters params = new APIRequestParameters(mContext, "user/getAdvancedUserInfos"); - params.addParameter("userID", userID); + params.addInt("userID", userID); //Perform the request try { @@ -237,8 +237,8 @@ public class GetUsersHelper { //Make an API request APIRequestParameters params = new APIRequestParameters(mContext, "search/user"); - params.addParameter("query", query); - params.addParameter("searchLimit", ""+limit); + params.addString("query", query); + params.addString("searchLimit", ""+limit); try { @@ -281,7 +281,7 @@ public class GetUsersHelper { for(int id : IDs) { id_string += id + ","; } - requestParameters.addParameter("usersID", id_string); + requestParameters.addString("usersID", id_string); try { diff --git a/app/src/main/java/org/communiquons/android/comunic/client/data/conversations/ConversationMessagesHelper.java b/app/src/main/java/org/communiquons/android/comunic/client/data/conversations/ConversationMessagesHelper.java index 95d0207..eae7116 100644 --- a/app/src/main/java/org/communiquons/android/comunic/client/data/conversations/ConversationMessagesHelper.java +++ b/app/src/main/java/org/communiquons/android/comunic/client/data/conversations/ConversationMessagesHelper.java @@ -91,12 +91,12 @@ public class ConversationMessagesHelper { //Make an API request APIRequestParameters params = new APIRequestParameters(mContext, "conversations/sendMessage"); - params.addParameter("conversationID", ""+convID); - params.addParameter("message", message); + params.addString("conversationID", ""+convID); + params.addString("message", message); //Include image (if any) if(image != null) - params.addParameter("image", "data:image/png;base64," + image); + params.addString("image", "data:image/png;base64," + image); try { new APIRequest().exec(params); @@ -156,8 +156,8 @@ public class ConversationMessagesHelper { //Prepare a request on the API APIRequestParameters params = new APIRequestParameters(mContext, "conversations/refresh_single"); - params.addParameter("conversationID", ""+conversationID); - params.addParameter("last_message_id", ""+last_message_id); + params.addString("conversationID", ""+conversationID); + params.addString("last_message_id", ""+last_message_id); ArrayList list = new ArrayList<>(); diff --git a/app/src/main/java/org/communiquons/android/comunic/client/data/conversations/ConversationsListHelper.java b/app/src/main/java/org/communiquons/android/comunic/client/data/conversations/ConversationsListHelper.java index a415784..1725be6 100644 --- a/app/src/main/java/org/communiquons/android/comunic/client/data/conversations/ConversationsListHelper.java +++ b/app/src/main/java/org/communiquons/android/comunic/client/data/conversations/ConversationsListHelper.java @@ -117,8 +117,8 @@ public class ConversationsListHelper { //Prepare an API request APIRequestParameters params = new APIRequestParameters(mContext, "conversations/getPrivate"); - params.addParameter("otherUser", userID); - params.addParameter("allowCreate", allowCreate); + params.addInt("otherUser", userID); + params.addBoolean("allowCreate", allowCreate); //Try to perform request try { @@ -215,7 +215,7 @@ public class ConversationsListHelper { //Delete the conversation on the API APIRequestParameters params = new APIRequestParameters(mContext, "conversations/delete"); - params.addParameter("conversationID", ""+convID); + params.addString("conversationID", ""+convID); try { new APIRequest().exec(params); @@ -246,9 +246,9 @@ public class ConversationsListHelper { //Make an API request APIRequestParameters params = new APIRequestParameters(mContext, "conversations/create"); - params.addParameter("name", name.equals("") ? "false" : name); - params.addParameter("follow", follow ? "true" : "false"); - params.addParameter("users", members_str); + params.addString("name", name.equals("") ? "false" : name); + params.addString("follow", follow ? "true" : "false"); + params.addString("users", members_str); //Perform the request try { @@ -290,18 +290,18 @@ public class ConversationsListHelper { //Prepare a request on the database APIRequestParameters params = new APIRequestParameters(mContext, "conversations/updateSettings"); - params.addParameter("conversationID", ""+convID); + params.addString("conversationID", ""+convID); //Add the name (if any) if(name != null) - params.addParameter("name", name.equals("") ? "false" : name); + params.addString("name", name.equals("") ? "false" : name); //Add the members (if any) if(members != null) - params.addParameter("members", ArrayUtils.int_array_to_string(members, ",")); + params.addString("members", ArrayUtils.int_array_to_string(members, ",")); //Add following state - params.addParameter("following", following ? "true" : "false"); + params.addString("following", following ? "true" : "false"); //Perform the request try { @@ -370,7 +370,7 @@ public class ConversationsListHelper { //Perform an API request APIRequestParameters params = new APIRequestParameters(mContext, "conversations/getInfosOne"); - params.addParameter("conversationID", ""+convID); + params.addString("conversationID", ""+convID); try { diff --git a/app/src/main/java/org/communiquons/android/comunic/client/data/friendsList/FriendsListHelper.java b/app/src/main/java/org/communiquons/android/comunic/client/data/friendsList/FriendsListHelper.java index 059797a..7a9c28e 100644 --- a/app/src/main/java/org/communiquons/android/comunic/client/data/friendsList/FriendsListHelper.java +++ b/app/src/main/java/org/communiquons/android/comunic/client/data/friendsList/FriendsListHelper.java @@ -70,7 +70,7 @@ public class FriendsListHelper { //Prepare the API request APIRequestParameters params = new APIRequestParameters(mContext, "friends/getList"); - params.addParameter("complete", true); + params.addBoolean("complete", true); //Prepare the result ArrayList friends = new ArrayList<>(); @@ -122,7 +122,7 @@ public class FriendsListHelper { try { //Remove the friend online APIRequestParameters delparams = new APIRequestParameters(mContext, "friends/remove"); - delparams.addParameter("friendID", ""+friend.getId()); + delparams.addString("friendID", ""+friend.getId()); new APIRequest().exec(delparams); //Remove the friend from the local database @@ -146,8 +146,8 @@ public class FriendsListHelper { //Perform a request to update the satus online APIRequestParameters reqParams = new APIRequestParameters(mContext, "friends/respondRequest"); - reqParams.addParameter("friendID", ""+friend.getId()); - reqParams.addParameter("accept", accept ? "true" : "false"); + reqParams.addInt("friendID", friend.getId()); + reqParams.addString("accept", accept ? "true" : "false"); new APIRequest().exec(reqParams); //Update the friend in the local database diff --git a/app/src/main/java/org/communiquons/android/comunic/client/data/posts/PostsHelper.java b/app/src/main/java/org/communiquons/android/comunic/client/data/posts/PostsHelper.java index 3274cdc..3e12f24 100644 --- a/app/src/main/java/org/communiquons/android/comunic/client/data/posts/PostsHelper.java +++ b/app/src/main/java/org/communiquons/android/comunic/client/data/posts/PostsHelper.java @@ -47,7 +47,7 @@ public class PostsHelper { //Perform a request on the API APIRequestParameters params = new APIRequestParameters(mContext, "posts/get_user"); - params.addParameter("userID", userID); + params.addInt("userID", userID); //Perform the request try { diff --git a/app/src/main/java/org/communiquons/android/comunic/client/data/utils/StringsUtils.java b/app/src/main/java/org/communiquons/android/comunic/client/data/utils/StringsUtils.java new file mode 100644 index 0000000..ec6f56f --- /dev/null +++ b/app/src/main/java/org/communiquons/android/comunic/client/data/utils/StringsUtils.java @@ -0,0 +1,28 @@ +package org.communiquons.android.comunic.client.data.utils; + +/** + * Strings utilities + * + * @author Pierre HUBERT + * Created by pierre on 3/12/18. + */ + +public class StringsUtils { + + /** + * Check the validity of a string to be send to the server + * + * @param string The string to check + * @return Depends of the validity of the string + */ + public static boolean isValidForContent(String string){ + + //Check the length of the string + if(string.length() < 5) + return false; + + //The string appears to be valid + return true; + } + +} diff --git a/app/src/main/java/org/communiquons/android/comunic/client/ui/activities/LoginActivity.java b/app/src/main/java/org/communiquons/android/comunic/client/ui/activities/LoginActivity.java index 60e9d47..c8bd3d7 100644 --- a/app/src/main/java/org/communiquons/android/comunic/client/ui/activities/LoginActivity.java +++ b/app/src/main/java/org/communiquons/android/comunic/client/ui/activities/LoginActivity.java @@ -110,8 +110,8 @@ public class LoginActivity extends AppCompatActivity { //Perform a request on the API to check user credentials and get login tokens APIRequestParameters params = new APIRequestParameters(this, "user/connectUSER"); - params.addParameter("userMail", ""+login_mail.getText()); - params.addParameter("userPassword", ""+login_password.getText()); + params.addString("userMail", ""+login_mail.getText()); + params.addString("userPassword", ""+login_password.getText()); //Create Request new APIRequestTask(){ diff --git a/app/src/main/java/org/communiquons/android/comunic/client/ui/adapters/PostsAdapter.java b/app/src/main/java/org/communiquons/android/comunic/client/ui/adapters/PostsAdapter.java index ae71137..f73b570 100644 --- a/app/src/main/java/org/communiquons/android/comunic/client/ui/adapters/PostsAdapter.java +++ b/app/src/main/java/org/communiquons/android/comunic/client/ui/adapters/PostsAdapter.java @@ -1,18 +1,22 @@ package org.communiquons.android.comunic.client.ui.adapters; import android.content.Context; +import android.os.AsyncTask; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.util.ArrayMap; import android.util.Log; +import android.util.Pair; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; +import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; +import android.widget.Toast; import org.communiquons.android.comunic.client.R; import org.communiquons.android.comunic.client.data.ImageLoad.ImageLoadManager; @@ -21,8 +25,10 @@ import org.communiquons.android.comunic.client.data.comments.Comment; import org.communiquons.android.comunic.client.data.posts.Post; import org.communiquons.android.comunic.client.data.posts.PostTypes; 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.UiUtils; import org.communiquons.android.comunic.client.data.utils.Utilities; +import org.communiquons.android.comunic.client.ui.views.EditCommentContentView; import java.util.ArrayList; @@ -69,7 +75,8 @@ public class PostsAdapter extends ArrayAdapter{ @NonNull @Override - public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { + public View getView(final int position, @Nullable View convertView, + @NonNull ViewGroup parent) { //Check if the view has to be inflated if(convertView == null) @@ -167,6 +174,81 @@ public class PostsAdapter extends ArrayAdapter{ convertView.findViewById(R.id.comments_list).setVisibility(View.GONE); } + + //Update comment creation form + View commentCreationForm = convertView.findViewById(R.id.create_comment_form); + EditCommentContentView input_comment = convertView.findViewById(R.id.input_comment_content); + if(comments == null){ + + //Hide comment creation form + commentCreationForm.setVisibility(View.GONE); + + } + else { + + //Display comment creation form + commentCreationForm.setVisibility(View.VISIBLE); + + //Make sure the form is correctly set up + if(input_comment.getPostID() != post.getId()){ + + //Reset input comment + input_comment.setPostID(post.getId()); + input_comment.setText(""); + + //Make the send button lives + final View finalConvertView = convertView; + convertView.findViewById(R.id.comment_send_button) + .setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + sendComment(position, finalConvertView); + } + }); + + } + } + return convertView; } + + /** + * Intend to send a new comment to the server + * + * @param pos The position of the post to update + * @param container The container of the post item + */ + private void sendComment(int pos, View container){ + + //Get post informations + Post post = getItem(pos); + if(post==null) + return; + + //Get informations about the comment + int postID = post.getId(); + String content = ((EditText) container.findViewById(R.id.input_comment_content)).getText()+""; + + //Check the comment's validity + if(!StringsUtils.isValidForContent(content)){ + Toast.makeText(getContext(), R.string.err_invalid_comment_content, + Toast.LENGTH_SHORT).show(); + return; + } + + //Submit the comment in a separate thread + new AsyncTask>(){ + + @Override + @Nullable + protected Pair doInBackground(Void... params) { + + //Try to create the comment + + + return null; + } + + }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + } } diff --git a/app/src/main/java/org/communiquons/android/comunic/client/ui/views/EditCommentContentView.java b/app/src/main/java/org/communiquons/android/comunic/client/ui/views/EditCommentContentView.java new file mode 100644 index 0000000..1918b6b --- /dev/null +++ b/app/src/main/java/org/communiquons/android/comunic/client/ui/views/EditCommentContentView.java @@ -0,0 +1,49 @@ +package org.communiquons.android.comunic.client.ui.views; + +import android.content.Context; +import android.util.AttributeSet; + +/** + * Comments creation input view + * + * @author Pierre HUBERT + * Created by pierre on 3/12/18. + */ + +public class EditCommentContentView extends android.support.v7.widget.AppCompatEditText { + + /** + * The ID of the target post + */ + private int postID; + + public EditCommentContentView(Context context) { + super(context); + } + + public EditCommentContentView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public EditCommentContentView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + /** + * Set the ID of the related post + * + * @param postID The ID of the post + */ + public void setPostID(int postID) { + this.postID = postID; + } + + /** + * Get the ID of the related post + * + * @return The ID of the related post + */ + public int getPostID() { + return postID; + } +}