mirror of
https://github.com/pierre42100/ComunicAndroid
synced 2024-11-23 22:09:30 +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
|
//Set and get the number of likes other the like
|
||||||
void setNumberLike(int numberLike) {
|
public void setNumberLike(int numberLike) {
|
||||||
this.numberLike = numberLike;
|
this.numberLike = numberLike;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -149,7 +149,7 @@ public class Post {
|
|||||||
|
|
||||||
|
|
||||||
//Set and get the liking state over the post
|
//Set and get the liking state over the post
|
||||||
void setLiking(boolean liking) {
|
public void setLiking(boolean liking) {
|
||||||
isLiking = liking;
|
isLiking = liking;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,6 +166,13 @@ public class PostsAdapter extends ArrayAdapter<Post>{
|
|||||||
LikeButtonView likeButtonView = convertView.findViewById(R.id.like_button);
|
LikeButtonView likeButtonView = convertView.findViewById(R.id.like_button);
|
||||||
likeButtonView.setNumberLikes(post.getNumberLike());
|
likeButtonView.setNumberLikes(post.getNumberLike());
|
||||||
likeButtonView.setIsLiking(post.isLiking());
|
likeButtonView.setIsLiking(post.isLiking());
|
||||||
|
likeButtonView.setUpdateListener(new LikeButtonView.OnLikeUpdateListener() {
|
||||||
|
@Override
|
||||||
|
public void OnLikeUpdate(boolean isLiking) {
|
||||||
|
//Call listener
|
||||||
|
mListener.onPostLikeUpdate(post, isLiking);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
//Process post comments
|
//Process post comments
|
||||||
ArrayList<Comment> comments = post.getComments_list();
|
ArrayList<Comment> comments = post.getComments_list();
|
||||||
@ -282,6 +289,14 @@ public class PostsAdapter extends ArrayAdapter<Post>{
|
|||||||
*/
|
*/
|
||||||
void showPostActions(View button, int pos, Post 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
|
* 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.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.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.Post;
|
||||||
import org.communiquons.android.comunic.client.data.posts.PostsHelper;
|
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;
|
||||||
@ -111,6 +113,11 @@ public class PostsListFragment extends Fragment
|
|||||||
*/
|
*/
|
||||||
GetUsersHelper mUserHelper;
|
GetUsersHelper mUserHelper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Likes helper
|
||||||
|
*/
|
||||||
|
LikesHelper mLikesHelper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the list of posts of the fragment
|
* Set the list of posts of the fragment
|
||||||
*
|
*
|
||||||
@ -129,6 +136,23 @@ public class PostsListFragment extends Fragment
|
|||||||
this.mUsersInfo = list;
|
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
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
|
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
|
||||||
@ -151,15 +175,6 @@ public class PostsListFragment extends Fragment
|
|||||||
*/
|
*/
|
||||||
public void show(){
|
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
|
//Check if the list of posts is not null
|
||||||
if(mPostsList == null && mUsersInfo == null)
|
if(mPostsList == null && mUsersInfo == null)
|
||||||
return;
|
return;
|
||||||
@ -292,6 +307,24 @@ public class PostsListFragment extends Fragment
|
|||||||
button.showContextMenu();
|
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
|
@Override
|
||||||
public void deletePost(final int pos) {
|
public void deletePost(final int pos) {
|
||||||
|
|
||||||
|
@ -4,7 +4,6 @@ import android.content.Context;
|
|||||||
import android.support.annotation.AttrRes;
|
import android.support.annotation.AttrRes;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.support.annotation.StyleRes;
|
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
@ -13,7 +12,6 @@ import android.widget.LinearLayout;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import org.communiquons.android.comunic.client.R;
|
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;
|
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;
|
private int numberLikes = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Like Update listener
|
||||||
|
*/
|
||||||
|
private OnLikeUpdateListener mUpdateListener = null;
|
||||||
|
|
||||||
public LikeButtonView(@NonNull Context context) {
|
public LikeButtonView(@NonNull Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
initView();
|
initView();
|
||||||
@ -127,6 +130,15 @@ public class LikeButtonView extends FrameLayout implements View.OnClickListener
|
|||||||
return mIsLiking;
|
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
|
* Refresh the like view
|
||||||
*/
|
*/
|
||||||
@ -163,5 +175,22 @@ public class LikeButtonView extends FrameLayout implements View.OnClickListener
|
|||||||
//Refresh display
|
//Refresh display
|
||||||
refresh();
|
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