mirror of
https://github.com/pierre42100/ComunicAndroid
synced 2024-12-28 14:39:00 +00:00
Can like posts.
This commit is contained in:
parent
98fcec6779
commit
523b30cc90
@ -0,0 +1,71 @@
|
||||
package org.communiquons.android.comunic.client.data.likes;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import org.communiquons.android.comunic.client.api.APIRequest;
|
||||
import org.communiquons.android.comunic.client.api.APIRequestParameters;
|
||||
import org.communiquons.android.comunic.client.api.APIResponse;
|
||||
|
||||
/**
|
||||
* Likes Helper
|
||||
*
|
||||
* @author Pierre HUBERT
|
||||
* Created by pierre on 4/7/18.
|
||||
*/
|
||||
|
||||
public class LikesHelper {
|
||||
|
||||
/**
|
||||
* The context of the application
|
||||
*/
|
||||
private Context mContext;
|
||||
|
||||
/**
|
||||
* Public constructor of the likes helper class
|
||||
*
|
||||
* @param context The context of the application
|
||||
*/
|
||||
public LikesHelper(Context context){
|
||||
|
||||
//Save the context
|
||||
mContext = context.getApplicationContext();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the like other a content
|
||||
*
|
||||
* @param type The type of the element
|
||||
* @param id The ID of the target element
|
||||
* @param liking New liking status
|
||||
* @return TRUE for a success / FALSE for a failure
|
||||
*/
|
||||
public boolean update(LikesType type, int id, boolean liking){
|
||||
|
||||
//Perform an API request
|
||||
APIRequestParameters params = new APIRequestParameters(mContext, "likes/update");
|
||||
params.addInt("id", id);
|
||||
params.addBoolean("like", liking);
|
||||
|
||||
//Put the kind of element
|
||||
switch (type){
|
||||
case POST:
|
||||
params.addString("type", "post");
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new RuntimeException("Unrecognized kind of post !");
|
||||
}
|
||||
|
||||
//Intend to perform the request
|
||||
try {
|
||||
APIResponse response = new APIRequest().exec(params);
|
||||
|
||||
return response.getResponse_code() == 200;
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package org.communiquons.android.comunic.client.data.likes;
|
||||
|
||||
/**
|
||||
* Likes types
|
||||
*
|
||||
* @author Pierre HUBERT
|
||||
* Created by pierre on 4/7/18.
|
||||
*/
|
||||
|
||||
public enum LikesType {
|
||||
|
||||
/**
|
||||
* For the posts
|
||||
*/
|
||||
POST
|
||||
|
||||
}
|
@ -139,7 +139,7 @@ public class Post {
|
||||
|
||||
|
||||
//Set and get the number of likes other the like
|
||||
void setNumberLike(int numberLike) {
|
||||
public void setNumberLike(int numberLike) {
|
||||
this.numberLike = numberLike;
|
||||
}
|
||||
|
||||
@ -149,7 +149,7 @@ public class Post {
|
||||
|
||||
|
||||
//Set and get the liking state over the post
|
||||
void setLiking(boolean liking) {
|
||||
public void setLiking(boolean liking) {
|
||||
isLiking = liking;
|
||||
}
|
||||
|
||||
|
@ -166,6 +166,13 @@ public class PostsAdapter extends ArrayAdapter<Post>{
|
||||
LikeButtonView likeButtonView = convertView.findViewById(R.id.like_button);
|
||||
likeButtonView.setNumberLikes(post.getNumberLike());
|
||||
likeButtonView.setIsLiking(post.isLiking());
|
||||
likeButtonView.setUpdateListener(new LikeButtonView.OnLikeUpdateListener() {
|
||||
@Override
|
||||
public void OnLikeUpdate(boolean isLiking) {
|
||||
//Call listener
|
||||
mListener.onPostLikeUpdate(post, isLiking);
|
||||
}
|
||||
});
|
||||
|
||||
//Process post comments
|
||||
ArrayList<Comment> comments = post.getComments_list();
|
||||
@ -282,6 +289,14 @@ public class PostsAdapter extends ArrayAdapter<Post>{
|
||||
*/
|
||||
void showPostActions(View button, int pos, Post post);
|
||||
|
||||
/**
|
||||
* Handles the update of the likes of a post
|
||||
*
|
||||
* @param post The target post
|
||||
* @param is_liking New liking status
|
||||
*/
|
||||
void onPostLikeUpdate(Post post, boolean is_liking);
|
||||
|
||||
/**
|
||||
* Handles the deletion process of a post
|
||||
*
|
||||
|
@ -24,6 +24,8 @@ import org.communiquons.android.comunic.client.data.UsersInfo.GetUsersHelper;
|
||||
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.CommentsHelper;
|
||||
import org.communiquons.android.comunic.client.data.likes.LikesHelper;
|
||||
import org.communiquons.android.comunic.client.data.likes.LikesType;
|
||||
import org.communiquons.android.comunic.client.data.posts.Post;
|
||||
import org.communiquons.android.comunic.client.data.posts.PostsHelper;
|
||||
import org.communiquons.android.comunic.client.data.posts.PostsList;
|
||||
@ -111,6 +113,11 @@ public class PostsListFragment extends Fragment
|
||||
*/
|
||||
GetUsersHelper mUserHelper;
|
||||
|
||||
/**
|
||||
* Likes helper
|
||||
*/
|
||||
LikesHelper mLikesHelper;
|
||||
|
||||
/**
|
||||
* Set the list of posts of the fragment
|
||||
*
|
||||
@ -129,6 +136,23 @@ public class PostsListFragment extends Fragment
|
||||
this.mUsersInfo = list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
|
||||
//Create post helper
|
||||
mPostsHelper = new PostsHelper(getActivity());
|
||||
|
||||
//Create comment helper
|
||||
mCommentsHelper = new CommentsHelper(getActivity());
|
||||
|
||||
//Create user helper
|
||||
mUserHelper = new GetUsersHelper(getActivity(), DatabaseHelper.getInstance(getActivity()));
|
||||
|
||||
//Create likes helper
|
||||
mLikesHelper = new LikesHelper(getActivity());
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
|
||||
@ -151,15 +175,6 @@ public class PostsListFragment extends Fragment
|
||||
*/
|
||||
public void show(){
|
||||
|
||||
//Create post helper
|
||||
mPostsHelper = new PostsHelper(getActivity());
|
||||
|
||||
//Create comment helper
|
||||
mCommentsHelper = new CommentsHelper(getActivity());
|
||||
|
||||
//Create user helper
|
||||
mUserHelper = new GetUsersHelper(getActivity(), DatabaseHelper.getInstance(getActivity()));
|
||||
|
||||
//Check if the list of posts is not null
|
||||
if(mPostsList == null && mUsersInfo == null)
|
||||
return;
|
||||
@ -292,6 +307,24 @@ public class PostsListFragment extends Fragment
|
||||
button.showContextMenu();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostLikeUpdate(final Post post, final boolean is_liking) {
|
||||
|
||||
//Save new post information
|
||||
post.setNumberLike(post.getNumberLike() + (is_liking ? 1 : -1));
|
||||
post.setLiking(is_liking);
|
||||
|
||||
//Perform the update in the background
|
||||
new AsyncTask<Void, Void, Boolean>(){
|
||||
|
||||
@Override
|
||||
protected Boolean doInBackground(Void... params) {
|
||||
return mLikesHelper.update(LikesType.POST, post.getId(), is_liking);
|
||||
}
|
||||
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deletePost(final int pos) {
|
||||
|
||||
|
@ -4,7 +4,6 @@ import android.content.Context;
|
||||
import android.support.annotation.AttrRes;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.annotation.StyleRes;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.widget.FrameLayout;
|
||||
@ -13,7 +12,6 @@ import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import org.communiquons.android.comunic.client.R;
|
||||
import org.communiquons.android.comunic.client.data.utils.StringsUtils;
|
||||
import org.communiquons.android.comunic.client.data.utils.UiUtils;
|
||||
|
||||
/**
|
||||
@ -50,6 +48,11 @@ public class LikeButtonView extends FrameLayout implements View.OnClickListener
|
||||
*/
|
||||
private int numberLikes = 0;
|
||||
|
||||
/**
|
||||
* Like Update listener
|
||||
*/
|
||||
private OnLikeUpdateListener mUpdateListener = null;
|
||||
|
||||
public LikeButtonView(@NonNull Context context) {
|
||||
super(context);
|
||||
initView();
|
||||
@ -127,6 +130,15 @@ public class LikeButtonView extends FrameLayout implements View.OnClickListener
|
||||
return mIsLiking;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set like update listener
|
||||
*
|
||||
* @param updateListener The listener for the like update
|
||||
*/
|
||||
public void setUpdateListener(OnLikeUpdateListener updateListener) {
|
||||
this.mUpdateListener = updateListener;
|
||||
}
|
||||
|
||||
/**
|
||||
* Refresh the like view
|
||||
*/
|
||||
@ -163,5 +175,22 @@ public class LikeButtonView extends FrameLayout implements View.OnClickListener
|
||||
//Refresh display
|
||||
refresh();
|
||||
|
||||
//Call listener (if any)
|
||||
if(mUpdateListener != null)
|
||||
mUpdateListener.OnLikeUpdate(mIsLiking);
|
||||
}
|
||||
|
||||
/**
|
||||
* Likes update listener interface
|
||||
*/
|
||||
public interface OnLikeUpdateListener {
|
||||
|
||||
/**
|
||||
* This method is called when an update is done on a like
|
||||
*
|
||||
* @param isLiking New liking status
|
||||
*/
|
||||
void OnLikeUpdate(boolean isLiking);
|
||||
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user